diff options
Diffstat (limited to 'exporters/stats/stackdriver')
2 files changed, 60 insertions, 1 deletions
diff --git a/exporters/stats/stackdriver/src/main/java/io/opencensus/exporter/stats/stackdriver/StackdriverExportUtils.java b/exporters/stats/stackdriver/src/main/java/io/opencensus/exporter/stats/stackdriver/StackdriverExportUtils.java index 82216b6a..d351e235 100644 --- a/exporters/stats/stackdriver/src/main/java/io/opencensus/exporter/stats/stackdriver/StackdriverExportUtils.java +++ b/exporters/stats/stackdriver/src/main/java/io/opencensus/exporter/stats/stackdriver/StackdriverExportUtils.java @@ -110,7 +110,6 @@ final class StackdriverExportUtils { builder.setName(String.format("projects/%s/metricDescriptors/%s", projectId, type)); builder.setType(type); builder.setDescription(view.getDescription()); - builder.setUnit(view.getMeasure().getUnit()); builder.setDisplayName("OpenCensus/" + viewName); for (TagKey tagKey : view.getColumns()) { builder.addLabels(createLabelDescriptor(tagKey)); @@ -121,6 +120,7 @@ final class StackdriverExportUtils { .setDescription(OPENCENSUS_TASK_DESCRIPTION) .setValueType(ValueType.STRING) .build()); + builder.setUnit(createUnit(view.getAggregation(), view.getMeasure())); builder.setMetricKind(createMetricKind(view.getWindow())); builder.setValueType(createValueType(view.getAggregation(), view.getMeasure())); return builder.build(); @@ -153,6 +153,17 @@ final class StackdriverExportUtils { // Construct a MetricDescriptor.ValueType from an Aggregation and a Measure @VisibleForTesting + static String createUnit(Aggregation aggregation, final Measure measure) { + return aggregation.match( + Functions.returnConstant(measure.getUnit()), + Functions.returnConstant("1"), // Count + Functions.returnConstant(measure.getUnit()), // Mean + Functions.returnConstant(measure.getUnit()), // Distribution + Functions.returnConstant(measure.getUnit())); + } + + // Construct a MetricDescriptor.ValueType from an Aggregation and a Measure + @VisibleForTesting static MetricDescriptor.ValueType createValueType( Aggregation aggregation, final Measure measure) { return aggregation.match( diff --git a/exporters/stats/stackdriver/src/test/java/io/opencensus/exporter/stats/stackdriver/StackdriverExportUtilsTest.java b/exporters/stats/stackdriver/src/test/java/io/opencensus/exporter/stats/stackdriver/StackdriverExportUtilsTest.java index 48d660d5..a78a96ea 100644 --- a/exporters/stats/stackdriver/src/test/java/io/opencensus/exporter/stats/stackdriver/StackdriverExportUtilsTest.java +++ b/exporters/stats/stackdriver/src/test/java/io/opencensus/exporter/stats/stackdriver/StackdriverExportUtilsTest.java @@ -143,6 +143,15 @@ public class StackdriverExportUtilsTest { } @Test + public void createUnit() { + assertThat(StackdriverExportUtils.createUnit(SUM, MEASURE_DOUBLE)).isEqualTo(MEASURE_UNIT); + assertThat(StackdriverExportUtils.createUnit(COUNT, MEASURE_DOUBLE)).isEqualTo("1"); + assertThat(StackdriverExportUtils.createUnit(MEAN, MEASURE_DOUBLE)).isEqualTo(MEASURE_UNIT); + assertThat(StackdriverExportUtils.createUnit(DISTRIBUTION, MEASURE_DOUBLE)) + .isEqualTo(MEASURE_UNIT); + } + + @Test public void createMetric() { View view = View.create( @@ -345,6 +354,45 @@ public class StackdriverExportUtilsTest { } @Test + public void createMetricDescriptor_cumulative_count() { + View view = + View.create( + Name.create(VIEW_NAME), + VIEW_DESCRIPTION, + MEASURE_DOUBLE, + COUNT, + Arrays.asList(KEY), + CUMULATIVE); + MetricDescriptor metricDescriptor = + StackdriverExportUtils.createMetricDescriptor(view, PROJECT_ID); + assertThat(metricDescriptor.getName()) + .isEqualTo( + "projects/" + + PROJECT_ID + + "/metricDescriptors/custom.googleapis.com/opencensus/" + + VIEW_NAME); + assertThat(metricDescriptor.getDescription()).isEqualTo(VIEW_DESCRIPTION); + assertThat(metricDescriptor.getDisplayName()).isEqualTo("OpenCensus/" + VIEW_NAME); + assertThat(metricDescriptor.getType()) + .isEqualTo("custom.googleapis.com/opencensus/" + VIEW_NAME); + assertThat(metricDescriptor.getUnit()).isEqualTo("1"); + assertThat(metricDescriptor.getMetricKind()).isEqualTo(MetricKind.CUMULATIVE); + assertThat(metricDescriptor.getValueType()).isEqualTo(MetricDescriptor.ValueType.INT64); + assertThat(metricDescriptor.getLabelsList()) + .containsExactly( + LabelDescriptor.newBuilder() + .setKey(KEY.getName()) + .setDescription(StackdriverExportUtils.LABEL_DESCRIPTION) + .setValueType(ValueType.STRING) + .build(), + LabelDescriptor.newBuilder() + .setKey(StackdriverExportUtils.OPENCENSUS_TASK) + .setDescription(StackdriverExportUtils.OPENCENSUS_TASK_DESCRIPTION) + .setValueType(ValueType.STRING) + .build()); + } + + @Test public void createMetricDescriptor_interval() { View view = View.create( |