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()); }
@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(); }
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)); } }