Skip to content

Commit

Permalink
Make AggregationTemporality configurable for OtlpInMemoryMetricExport…
Browse files Browse the repository at this point in the history
…er (#7904)

References
#7902.

Not sure if system property name is the most appropriate or if any tests
are required for these changes.
  • Loading branch information
ptrdom authored Feb 27, 2023
1 parent 7bb978d commit 2a20f5e
Showing 1 changed file with 24 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

package io.opentelemetry.javaagent.testing.exporter;

import static java.util.logging.Level.CONFIG;

import io.opentelemetry.exporter.internal.otlp.metrics.MetricsRequestMarshaler;
import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.metrics.InstrumentType;
Expand All @@ -17,13 +19,34 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Locale;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.logging.Logger;

class OtlpInMemoryMetricExporter implements MetricExporter {

private static final Logger logger = Logger.getLogger(OtlpInMemoryMetricExporter.class.getName());

private final Queue<byte[]> collectedRequests = new ConcurrentLinkedQueue<>();

private static final AggregationTemporality aggregationTemporality = initAggregationTemporality();

private static AggregationTemporality initAggregationTemporality() {
// this configuration setting is for external users
// see https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7902
String temporalityProperty = System.getProperty("otel.javaagent.testing.exporter.temporality");
AggregationTemporality aggregationTemporality;
if (temporalityProperty == null) {
aggregationTemporality = AggregationTemporality.DELTA;
} else {
aggregationTemporality =
AggregationTemporality.valueOf(temporalityProperty.toUpperCase(Locale.ROOT));
}
logger.log(CONFIG, "Setting aggregation temporality to {0}", aggregationTemporality.toString());
return aggregationTemporality;
}

List<byte[]> getCollectedExportRequests() {
return new ArrayList<>(collectedRequests);
}
Expand All @@ -34,7 +57,7 @@ void reset() {

@Override
public AggregationTemporality getAggregationTemporality(InstrumentType instrumentType) {
return AggregationTemporality.DELTA;
return aggregationTemporality;
}

@Override
Expand Down

0 comments on commit 2a20f5e

Please sign in to comment.