|
@@ -5,6 +5,8 @@
|
|
|
|
|
|
package io.opentelemetry.javaagent.testing.exporter;
|
|
package io.opentelemetry.javaagent.testing.exporter;
|
|
|
|
|
|
|
|
+import static java.util.logging.Level.CONFIG;
|
|
|
|
+
|
|
import io.opentelemetry.exporter.internal.otlp.metrics.MetricsRequestMarshaler;
|
|
import io.opentelemetry.exporter.internal.otlp.metrics.MetricsRequestMarshaler;
|
|
import io.opentelemetry.sdk.common.CompletableResultCode;
|
|
import io.opentelemetry.sdk.common.CompletableResultCode;
|
|
import io.opentelemetry.sdk.metrics.InstrumentType;
|
|
import io.opentelemetry.sdk.metrics.InstrumentType;
|
|
@@ -17,13 +19,34 @@ import java.io.UncheckedIOException;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.Collection;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Locale;
|
|
import java.util.Queue;
|
|
import java.util.Queue;
|
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
|
|
|
+import java.util.logging.Logger;
|
|
|
|
|
|
class OtlpInMemoryMetricExporter implements MetricExporter {
|
|
class OtlpInMemoryMetricExporter implements MetricExporter {
|
|
|
|
|
|
|
|
+ private static final Logger logger = Logger.getLogger(OtlpInMemoryMetricExporter.class.getName());
|
|
|
|
+
|
|
private final Queue<byte[]> collectedRequests = new ConcurrentLinkedQueue<>();
|
|
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() {
|
|
List<byte[]> getCollectedExportRequests() {
|
|
return new ArrayList<>(collectedRequests);
|
|
return new ArrayList<>(collectedRequests);
|
|
}
|
|
}
|
|
@@ -34,7 +57,7 @@ class OtlpInMemoryMetricExporter implements MetricExporter {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public AggregationTemporality getAggregationTemporality(InstrumentType instrumentType) {
|
|
public AggregationTemporality getAggregationTemporality(InstrumentType instrumentType) {
|
|
- return AggregationTemporality.DELTA;
|
|
|
|
|
|
+ return aggregationTemporality;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|