@Test public void readAndExport() { Set<MetricProducer> metricProducerSet = new HashSet<>(); metricProducerSet.add(metricProducer); when(metricProducer.getMetrics()).thenReturn(Collections.<Metric>emptyList()); when(metricProducerManager.getAllMetricProducer()).thenReturn(metricProducerSet); MetricReader metricReader = MetricReader.create( Options.builder().setMetricProducerManager(metricProducerManager).build()); metricReader.readAndExport(metricExporter); verify(metricExporter).export(eq(Collections.<Metric>emptyList())); } }
@Test public void intervalExport() { FakeMetricExporter fakeMetricExporter = new FakeMetricExporter(); IntervalMetricReader intervalMetricReader = IntervalMetricReader.create( fakeMetricExporter, MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager(metricProducerManager) .build()), IntervalMetricReader.Options.builder() .setExportInterval(Duration.create(0, (int) MILLISECONDS.toNanos(100))) .build()); assertThat(fakeMetricExporter.waitForNumberOfExports(1)) .containsExactly(Collections.singletonList(METRIC)); assertThat(fakeMetricExporter.waitForNumberOfExports(2)) .containsExactly(Collections.singletonList(METRIC), Collections.singletonList(METRIC)); intervalMetricReader.stop(); }
@VisibleForTesting PrometheusStatsCollector(MetricProducerManager metricProducerManager) { this.collectMetricReader = MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager(metricProducerManager) .setSpanName(EXPORT_METRICS_TO_PROMETHEUS) .build()); this.describeMetricReader = MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager(metricProducerManager) .setSpanName(DESCRIBE_METRICS_FOR_PROMETHEUS) .build()); }
private StackdriverStatsExporter( String projectId, MetricServiceClient metricServiceClient, Duration exportInterval, MonitoredResource monitoredResource, @Nullable String metricNamePrefix) { IntervalMetricReader.Options.Builder intervalMetricReaderOptionsBuilder = IntervalMetricReader.Options.builder(); if (exportInterval != null) { intervalMetricReaderOptionsBuilder.setExportInterval(exportInterval); } intervalMetricReader = IntervalMetricReader.create( new CreateMetricDescriptorExporter( projectId, metricServiceClient, metricNamePrefix, new CreateTimeSeriesExporter( projectId, metricServiceClient, monitoredResource, metricNamePrefix)), MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager( Metrics.getExportComponent().getMetricProducerManager()) .setSpanName(EXPORTER_SPAN_NAME) .build()), intervalMetricReaderOptionsBuilder.build()); }
@Test public void exportAfterStop() { FakeMetricExporter fakeMetricExporter = new FakeMetricExporter(); IntervalMetricReader intervalMetricReader = IntervalMetricReader.create( fakeMetricExporter, MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager(metricProducerManager) .build()), IntervalMetricReader.Options.builder() .setExportInterval(Duration.create(10, 0)) .build()); // Rely that this will be called in less than 10 seconds. intervalMetricReader.stop(); assertThat(fakeMetricExporter.waitForNumberOfExports(1)) .containsExactly(Collections.singletonList(METRIC)); } }
private SignalFxStatsExporter( SignalFxStatsConfiguration configuration, MetricProducerManager metricProducerManager) { this.configuration = Preconditions.checkNotNull(configuration, "configuration"); this.intervalMetricReader = IntervalMetricReader.create( new SignalFxMetricExporter( SignalFxMetricsSenderFactory.DEFAULT, configuration.getIngestEndpoint(), configuration.getToken()), MetricReader.create( MetricReader.Options.builder() .setMetricProducerManager(metricProducerManager) .setSpanName(EXPORTER_SPAN_NAME) .build()), IntervalMetricReader.Options.builder() .setExportInterval(configuration.getExportInterval()) .build()); }