Configurable temporality (#3960)
* Allow configuration of preferred temporality in LoggingMetricExporter and OtlpJsonLoggingMetricExporter * Make InMemoryMetricReader preferred temporality configurable * Add create() methods to LoggingSpanExporter, LoggingMetricExporter, and SystemOutLogExporter, deprecate public constructors
This commit is contained in:
		
							parent
							
								
									76ae8d21d1
								
							
						
					
					
						commit
						53030b7266
					
				|  | @ -1,2 +1,5 @@ | ||||||
| Comparing source compatibility of  against  | Comparing source compatibility of  against  | ||||||
| No changes. | ***  MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingMetricExporter  (not serializable) | ||||||
|  | 	===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0 | ||||||
|  | 	+++  NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.sdk.metrics.export.MetricExporter create(io.opentelemetry.sdk.metrics.data.AggregationTemporality) | ||||||
|  | 	+++  NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.metrics.data.AggregationTemporality getPreferredTemporality() | ||||||
|  |  | ||||||
|  | @ -1,2 +1,18 @@ | ||||||
| Comparing source compatibility of  against  | Comparing source compatibility of  against  | ||||||
| No changes. | ***  MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.logging.LoggingMetricExporter  (not serializable) | ||||||
|  | 	===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0 | ||||||
|  | 	===  UNCHANGED CONSTRUCTOR: PUBLIC LoggingMetricExporter() | ||||||
|  | 		+++  NEW ANNOTATION: java.lang.Deprecated | ||||||
|  | 	+++  NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.exporter.logging.LoggingMetricExporter create() | ||||||
|  | 	+++  NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.exporter.logging.LoggingMetricExporter create(io.opentelemetry.sdk.metrics.data.AggregationTemporality) | ||||||
|  | 	+++  NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.metrics.data.AggregationTemporality getPreferredTemporality() | ||||||
|  | ***  MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.logging.LoggingSpanExporter  (not serializable) | ||||||
|  | 	===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0 | ||||||
|  | 	===  UNCHANGED CONSTRUCTOR: PUBLIC LoggingSpanExporter() | ||||||
|  | 		+++  NEW ANNOTATION: java.lang.Deprecated | ||||||
|  | 	+++  NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.exporter.logging.LoggingSpanExporter create() | ||||||
|  | ***  MODIFIED CLASS: PUBLIC io.opentelemetry.exporter.logging.SystemOutLogExporter  (not serializable) | ||||||
|  | 	===  CLASS FILE FORMAT VERSION: 52.0 <- 52.0 | ||||||
|  | 	===  UNCHANGED CONSTRUCTOR: PUBLIC SystemOutLogExporter() | ||||||
|  | 		+++  NEW ANNOTATION: java.lang.Deprecated | ||||||
|  | 	+++  NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.exporter.logging.SystemOutLogExporter create() | ||||||
|  |  | ||||||
|  | @ -11,6 +11,7 @@ import com.fasterxml.jackson.core.JsonGenerator; | ||||||
| import com.fasterxml.jackson.core.io.SegmentedStringWriter; | import com.fasterxml.jackson.core.io.SegmentedStringWriter; | ||||||
| import io.opentelemetry.exporter.otlp.internal.metrics.ResourceMetricsMarshaler; | import io.opentelemetry.exporter.otlp.internal.metrics.ResourceMetricsMarshaler; | ||||||
| import io.opentelemetry.sdk.common.CompletableResultCode; | import io.opentelemetry.sdk.common.CompletableResultCode; | ||||||
|  | import io.opentelemetry.sdk.metrics.data.AggregationTemporality; | ||||||
| import io.opentelemetry.sdk.metrics.data.MetricData; | import io.opentelemetry.sdk.metrics.data.MetricData; | ||||||
| import io.opentelemetry.sdk.metrics.export.MetricExporter; | import io.opentelemetry.sdk.metrics.export.MetricExporter; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -27,12 +28,32 @@ public final class OtlpJsonLoggingMetricExporter implements MetricExporter { | ||||||
|   private static final Logger logger = |   private static final Logger logger = | ||||||
|       Logger.getLogger(OtlpJsonLoggingMetricExporter.class.getName()); |       Logger.getLogger(OtlpJsonLoggingMetricExporter.class.getName()); | ||||||
| 
 | 
 | ||||||
|   /** Returns a new {@link OtlpJsonLoggingMetricExporter}. */ |   private final AggregationTemporality preferredTemporality; | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Returns a new {@link OtlpJsonLoggingMetricExporter} with a preferred temporality of {@link | ||||||
|  |    * AggregationTemporality#CUMULATIVE}. | ||||||
|  |    */ | ||||||
|   public static MetricExporter create() { |   public static MetricExporter create() { | ||||||
|     return new OtlpJsonLoggingMetricExporter(); |     return new OtlpJsonLoggingMetricExporter(AggregationTemporality.CUMULATIVE); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private OtlpJsonLoggingMetricExporter() {} |   /** | ||||||
|  |    * Returns a new {@link OtlpJsonLoggingMetricExporter} with the given {@code | ||||||
|  |    * preferredTemporality}. | ||||||
|  |    */ | ||||||
|  |   public static MetricExporter create(AggregationTemporality preferredTemporality) { | ||||||
|  |     return new OtlpJsonLoggingMetricExporter(preferredTemporality); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   private OtlpJsonLoggingMetricExporter(AggregationTemporality preferredTemporality) { | ||||||
|  |     this.preferredTemporality = preferredTemporality; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @Override | ||||||
|  |   public AggregationTemporality getPreferredTemporality() { | ||||||
|  |     return preferredTemporality; | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   @Override |   @Override | ||||||
|   public CompletableResultCode export(Collection<MetricData> metrics) { |   public CompletableResultCode export(Collection<MetricData> metrics) { | ||||||
|  |  | ||||||
|  | @ -65,6 +65,16 @@ class OtlpJsonLoggingMetricExporterTest { | ||||||
|     exporter = OtlpJsonLoggingMetricExporter.create(); |     exporter = OtlpJsonLoggingMetricExporter.create(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   @Test | ||||||
|  |   void preferredTemporality() { | ||||||
|  |     assertThat(OtlpJsonLoggingMetricExporter.create().getPreferredTemporality()) | ||||||
|  |         .isEqualTo(AggregationTemporality.CUMULATIVE); | ||||||
|  |     assertThat( | ||||||
|  |             OtlpJsonLoggingMetricExporter.create(AggregationTemporality.DELTA) | ||||||
|  |                 .getPreferredTemporality()) | ||||||
|  |         .isEqualTo(AggregationTemporality.DELTA); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   @Test |   @Test | ||||||
|   void log() throws Exception { |   void log() throws Exception { | ||||||
|     exporter.export(Arrays.asList(METRIC1, METRIC2)); |     exporter.export(Arrays.asList(METRIC1, METRIC2)); | ||||||
|  |  | ||||||
|  | @ -6,6 +6,7 @@ | ||||||
| package io.opentelemetry.exporter.logging; | package io.opentelemetry.exporter.logging; | ||||||
| 
 | 
 | ||||||
| import io.opentelemetry.sdk.common.CompletableResultCode; | import io.opentelemetry.sdk.common.CompletableResultCode; | ||||||
|  | import io.opentelemetry.sdk.metrics.data.AggregationTemporality; | ||||||
| import io.opentelemetry.sdk.metrics.data.MetricData; | import io.opentelemetry.sdk.metrics.data.MetricData; | ||||||
| import io.opentelemetry.sdk.metrics.export.MetricExporter; | import io.opentelemetry.sdk.metrics.export.MetricExporter; | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
|  | @ -16,6 +17,40 @@ import java.util.logging.Logger; | ||||||
| public final class LoggingMetricExporter implements MetricExporter { | public final class LoggingMetricExporter implements MetricExporter { | ||||||
|   private static final Logger logger = Logger.getLogger(LoggingMetricExporter.class.getName()); |   private static final Logger logger = Logger.getLogger(LoggingMetricExporter.class.getName()); | ||||||
| 
 | 
 | ||||||
|  |   private final AggregationTemporality preferredTemporality; | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Returns a new {@link LoggingMetricExporter} with a preferred temporality of {@link | ||||||
|  |    * AggregationTemporality#CUMULATIVE}. | ||||||
|  |    */ | ||||||
|  |   public static LoggingMetricExporter create() { | ||||||
|  |     return create(AggregationTemporality.CUMULATIVE); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** Returns a new {@link LoggingMetricExporter} with the given {@code preferredTemporality}. */ | ||||||
|  |   public static LoggingMetricExporter create(AggregationTemporality preferredTemporality) { | ||||||
|  |     return new LoggingMetricExporter(preferredTemporality); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Class constructor with a preferred temporality of {@link AggregationTemporality#CUMULATIVE}. | ||||||
|  |    * | ||||||
|  |    * @deprecated Use {@link #create()}. | ||||||
|  |    */ | ||||||
|  |   @Deprecated | ||||||
|  |   public LoggingMetricExporter() { | ||||||
|  |     this(AggregationTemporality.CUMULATIVE); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   private LoggingMetricExporter(AggregationTemporality preferredTemporality) { | ||||||
|  |     this.preferredTemporality = preferredTemporality; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @Override | ||||||
|  |   public AggregationTemporality getPreferredTemporality() { | ||||||
|  |     return preferredTemporality; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   @Override |   @Override | ||||||
|   public CompletableResultCode export(Collection<MetricData> metrics) { |   public CompletableResultCode export(Collection<MetricData> metrics) { | ||||||
|     logger.info("Received a collection of " + metrics.size() + " metrics for export."); |     logger.info("Received a collection of " + metrics.size() + " metrics for export."); | ||||||
|  |  | ||||||
|  | @ -18,6 +18,19 @@ import java.util.logging.Logger; | ||||||
| public final class LoggingSpanExporter implements SpanExporter { | public final class LoggingSpanExporter implements SpanExporter { | ||||||
|   private static final Logger logger = Logger.getLogger(LoggingSpanExporter.class.getName()); |   private static final Logger logger = Logger.getLogger(LoggingSpanExporter.class.getName()); | ||||||
| 
 | 
 | ||||||
|  |   /** Returns a new {@link LoggingSpanExporter}. */ | ||||||
|  |   public static LoggingSpanExporter create() { | ||||||
|  |     return new LoggingSpanExporter(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Class constructor. | ||||||
|  |    * | ||||||
|  |    * @deprecated Use {@link #create()}. | ||||||
|  |    */ | ||||||
|  |   @Deprecated | ||||||
|  |   public LoggingSpanExporter() {} | ||||||
|  | 
 | ||||||
|   @Override |   @Override | ||||||
|   public CompletableResultCode export(Collection<SpanData> spans) { |   public CompletableResultCode export(Collection<SpanData> spans) { | ||||||
|     // We always have 32 + 16 + name + several whitespace, 60 seems like an OK initial guess. |     // We always have 32 + 16 + name + several whitespace, 60 seems like an OK initial guess. | ||||||
|  |  | ||||||
|  | @ -27,6 +27,19 @@ import java.util.Collection; | ||||||
| public class SystemOutLogExporter implements LogExporter { | public class SystemOutLogExporter implements LogExporter { | ||||||
|   private static final DateTimeFormatter ISO_FORMAT = DateTimeFormatter.ISO_DATE_TIME; |   private static final DateTimeFormatter ISO_FORMAT = DateTimeFormatter.ISO_DATE_TIME; | ||||||
| 
 | 
 | ||||||
|  |   /** Returns a new {@link SystemOutLogExporter}. */ | ||||||
|  |   public static SystemOutLogExporter create() { | ||||||
|  |     return new SystemOutLogExporter(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Class constructor. | ||||||
|  |    * | ||||||
|  |    * @deprecated Use {@link #create()}. | ||||||
|  |    */ | ||||||
|  |   @Deprecated | ||||||
|  |   public SystemOutLogExporter() {} | ||||||
|  | 
 | ||||||
|   @Override |   @Override | ||||||
|   public CompletableResultCode export(Collection<LogData> logs) { |   public CompletableResultCode export(Collection<LogData> logs) { | ||||||
|     StringBuilder stringBuilder = new StringBuilder(60); |     StringBuilder stringBuilder = new StringBuilder(60); | ||||||
|  |  | ||||||
|  | @ -39,7 +39,7 @@ class LoggingMetricExporterTest { | ||||||
| 
 | 
 | ||||||
|   @BeforeEach |   @BeforeEach | ||||||
|   void setUp() { |   void setUp() { | ||||||
|     exporter = new LoggingMetricExporter(); |     exporter = LoggingMetricExporter.create(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @AfterEach |   @AfterEach | ||||||
|  | @ -47,6 +47,14 @@ class LoggingMetricExporterTest { | ||||||
|     exporter.shutdown(); |     exporter.shutdown(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   @Test | ||||||
|  |   void preferredTemporality() { | ||||||
|  |     assertThat(LoggingMetricExporter.create().getPreferredTemporality()) | ||||||
|  |         .isEqualTo(AggregationTemporality.CUMULATIVE); | ||||||
|  |     assertThat(LoggingMetricExporter.create(AggregationTemporality.DELTA).getPreferredTemporality()) | ||||||
|  |         .isEqualTo(AggregationTemporality.DELTA); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   @Test |   @Test | ||||||
|   void testExport() { |   void testExport() { | ||||||
|     long nowEpochNanos = System.currentTimeMillis() * 1000 * 1000; |     long nowEpochNanos = System.currentTimeMillis() * 1000 * 1000; | ||||||
|  |  | ||||||
|  | @ -91,7 +91,7 @@ class LoggingSpanExporterTest { | ||||||
| 
 | 
 | ||||||
|   @BeforeEach |   @BeforeEach | ||||||
|   void setUp() { |   void setUp() { | ||||||
|     exporter = new LoggingSpanExporter(); |     exporter = LoggingSpanExporter.create(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @AfterEach |   @AfterEach | ||||||
|  |  | ||||||
|  | @ -30,7 +30,7 @@ class SystemOutLogExporterTest { | ||||||
| 
 | 
 | ||||||
|   @Test |   @Test | ||||||
|   void returnCodes() { |   void returnCodes() { | ||||||
|     SystemOutLogExporter exporter = new SystemOutLogExporter(); |     SystemOutLogExporter exporter = SystemOutLogExporter.create(); | ||||||
|     CompletableResultCode resultCode = |     CompletableResultCode resultCode = | ||||||
|         exporter.export(singletonList(sampleLog(System.currentTimeMillis()))); |         exporter.export(singletonList(sampleLog(System.currentTimeMillis()))); | ||||||
|     assertThat(resultCode).isSameAs(CompletableResultCode.ofSuccess()); |     assertThat(resultCode).isSameAs(CompletableResultCode.ofSuccess()); | ||||||
|  |  | ||||||
|  | @ -75,7 +75,7 @@ final class MetricExporterConfiguration { | ||||||
| 
 | 
 | ||||||
|   private static void configureLoggingMetrics( |   private static void configureLoggingMetrics( | ||||||
|       ConfigProperties config, SdkMeterProviderBuilder sdkMeterProviderBuilder) { |       ConfigProperties config, SdkMeterProviderBuilder sdkMeterProviderBuilder) { | ||||||
|     configurePeriodicMetricReader(config, sdkMeterProviderBuilder, new LoggingMetricExporter()); |     configurePeriodicMetricReader(config, sdkMeterProviderBuilder, LoggingMetricExporter.create()); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // Visible for testing |   // Visible for testing | ||||||
|  |  | ||||||
|  | @ -115,7 +115,7 @@ final class SpanExporterConfiguration { | ||||||
|             "io.opentelemetry.exporter.logging.LoggingSpanExporter", |             "io.opentelemetry.exporter.logging.LoggingSpanExporter", | ||||||
|             "Logging Trace Exporter", |             "Logging Trace Exporter", | ||||||
|             "opentelemetry-exporter-logging"); |             "opentelemetry-exporter-logging"); | ||||||
|         return new LoggingSpanExporter(); |         return LoggingSpanExporter.create(); | ||||||
|       default: |       default: | ||||||
|         SpanExporter spiExporter = spiExporters.get(name); |         SpanExporter spiExporter = spiExporters.get(name); | ||||||
|         if (spiExporter == null) { |         if (spiExporter == null) { | ||||||
|  |  | ||||||
|  | @ -114,7 +114,7 @@ public class ConfigurableSpanExporterTest { | ||||||
|   void configureSpanProcessors_simpleSpanProcessor() { |   void configureSpanProcessors_simpleSpanProcessor() { | ||||||
|     String exporterName = "logging"; |     String exporterName = "logging"; | ||||||
|     Map<String, String> propMap = Collections.singletonMap("otel.traces.exporter", exporterName); |     Map<String, String> propMap = Collections.singletonMap("otel.traces.exporter", exporterName); | ||||||
|     SpanExporter exporter = new LoggingSpanExporter(); |     SpanExporter exporter = LoggingSpanExporter.create(); | ||||||
|     ConfigProperties properties = DefaultConfigProperties.createForTest(propMap); |     ConfigProperties properties = DefaultConfigProperties.createForTest(propMap); | ||||||
| 
 | 
 | ||||||
|     assertThat( |     assertThat( | ||||||
|  | @ -177,7 +177,7 @@ public class ConfigurableSpanExporterTest { | ||||||
| 
 | 
 | ||||||
|   @Test |   @Test | ||||||
|   void configureSpanProcessors_multipleExportersWithLogging() { |   void configureSpanProcessors_multipleExportersWithLogging() { | ||||||
|     SpanExporter loggingExporter = new LoggingSpanExporter(); |     SpanExporter loggingExporter = LoggingSpanExporter.create(); | ||||||
|     SpanExporter zipkinExporter = ZipkinSpanExporter.builder().build(); |     SpanExporter zipkinExporter = ZipkinSpanExporter.builder().build(); | ||||||
|     ConfigProperties properties = |     ConfigProperties properties = | ||||||
|         DefaultConfigProperties.createForTest( |         DefaultConfigProperties.createForTest( | ||||||
|  |  | ||||||
|  | @ -55,17 +55,24 @@ import java.util.concurrent.ConcurrentLinkedQueue; | ||||||
|  */ |  */ | ||||||
| public final class InMemoryMetricExporter implements MetricExporter { | public final class InMemoryMetricExporter implements MetricExporter { | ||||||
|   private final Queue<MetricData> finishedMetricItems = new ConcurrentLinkedQueue<>(); |   private final Queue<MetricData> finishedMetricItems = new ConcurrentLinkedQueue<>(); | ||||||
|  |   private final AggregationTemporality preferredTemporality; | ||||||
|   private boolean isStopped = false; |   private boolean isStopped = false; | ||||||
| 
 | 
 | ||||||
|   private InMemoryMetricExporter() {} |   private InMemoryMetricExporter(AggregationTemporality preferredTemporality) { | ||||||
|  |     this.preferredTemporality = preferredTemporality; | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * Returns a new instance of the {@code InMemoryMetricExporter}. |    * Returns a new {@link InMemoryMetricExporter} with a preferred temporality of {@link | ||||||
|    * |    * AggregationTemporality#CUMULATIVE}. | ||||||
|    * @return a new instance of the {@code InMemoryMetricExporter}. |  | ||||||
|    */ |    */ | ||||||
|   public static InMemoryMetricExporter create() { |   public static InMemoryMetricExporter create() { | ||||||
|     return new InMemoryMetricExporter(); |     return create(AggregationTemporality.CUMULATIVE); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** Returns a new {@link InMemoryMetricExporter} with the given {@code preferredTemporality}. */ | ||||||
|  |   public static InMemoryMetricExporter create(AggregationTemporality preferredTemporality) { | ||||||
|  |     return new InMemoryMetricExporter(preferredTemporality); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|  | @ -88,7 +95,7 @@ public final class InMemoryMetricExporter implements MetricExporter { | ||||||
| 
 | 
 | ||||||
|   @Override |   @Override | ||||||
|   public AggregationTemporality getPreferredTemporality() { |   public AggregationTemporality getPreferredTemporality() { | ||||||
|     return AggregationTemporality.CUMULATIVE; |     return preferredTemporality; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|  |  | ||||||
|  | @ -43,7 +43,16 @@ class InMemoryMetricExporterTest { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Test |   @Test | ||||||
|   void test_getFinishedMetricItems() { |   void preferredTemporality() { | ||||||
|  |     assertThat(InMemoryMetricExporter.create().getPreferredTemporality()) | ||||||
|  |         .isEqualTo(AggregationTemporality.CUMULATIVE); | ||||||
|  |     assertThat( | ||||||
|  |             InMemoryMetricExporter.create(AggregationTemporality.DELTA).getPreferredTemporality()) | ||||||
|  |         .isEqualTo(AggregationTemporality.DELTA); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @Test | ||||||
|  |   void getFinishedMetricItems() { | ||||||
|     List<MetricData> metrics = new ArrayList<MetricData>(); |     List<MetricData> metrics = new ArrayList<MetricData>(); | ||||||
|     metrics.add(generateFakeMetric()); |     metrics.add(generateFakeMetric()); | ||||||
|     metrics.add(generateFakeMetric()); |     metrics.add(generateFakeMetric()); | ||||||
|  | @ -56,7 +65,7 @@ class InMemoryMetricExporterTest { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Test |   @Test | ||||||
|   void test_reset() { |   void reset() { | ||||||
|     List<MetricData> metrics = new ArrayList<MetricData>(); |     List<MetricData> metrics = new ArrayList<MetricData>(); | ||||||
|     metrics.add(generateFakeMetric()); |     metrics.add(generateFakeMetric()); | ||||||
|     metrics.add(generateFakeMetric()); |     metrics.add(generateFakeMetric()); | ||||||
|  | @ -73,7 +82,7 @@ class InMemoryMetricExporterTest { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Test |   @Test | ||||||
|   void test_shutdown() { |   void shutdown() { | ||||||
|     List<MetricData> metrics = new ArrayList<MetricData>(); |     List<MetricData> metrics = new ArrayList<MetricData>(); | ||||||
|     metrics.add(generateFakeMetric()); |     metrics.add(generateFakeMetric()); | ||||||
|     metrics.add(generateFakeMetric()); |     metrics.add(generateFakeMetric()); | ||||||
|  | @ -87,7 +96,7 @@ class InMemoryMetricExporterTest { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Test |   @Test | ||||||
|   void testShutdown_export() { |   void shutdown_ThenExport() { | ||||||
|     List<MetricData> metrics = new ArrayList<MetricData>(); |     List<MetricData> metrics = new ArrayList<MetricData>(); | ||||||
|     metrics.add(generateFakeMetric()); |     metrics.add(generateFakeMetric()); | ||||||
|     metrics.add(generateFakeMetric()); |     metrics.add(generateFakeMetric()); | ||||||
|  | @ -99,7 +108,7 @@ class InMemoryMetricExporterTest { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Test |   @Test | ||||||
|   void test_flush() { |   void flush() { | ||||||
|     assertThat(exporter.flush().isSuccess()).isTrue(); |     assertThat(exporter.flush().isSuccess()).isTrue(); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue