|
17 | 17 | package io.opencensus.exporter.stats.stackdriver; |
18 | 18 |
|
19 | 19 | import static com.google.common.truth.Truth.assertThat; |
| 20 | +import static io.opencensus.exporter.stats.stackdriver.StackdriverExportUtils.PERCENTILE_LABEL_KEY; |
| 21 | +import static io.opencensus.exporter.stats.stackdriver.StackdriverExportUtils.SNAPSHOT_SUFFIX_PERCENTILE; |
20 | 22 | import static io.opencensus.exporter.stats.stackdriver.StackdriverExportUtils.STACKDRIVER_PROJECT_ID_KEY; |
| 23 | +import static io.opencensus.exporter.stats.stackdriver.StackdriverExportUtils.SUMMARY_SUFFIX_COUNT; |
| 24 | +import static io.opencensus.exporter.stats.stackdriver.StackdriverExportUtils.SUMMARY_SUFFIX_SUM; |
21 | 25 | import static io.opencensus.exporter.stats.stackdriver.StackdriverExporterWorker.CUSTOM_OPENCENSUS_DOMAIN; |
22 | 26 | import static io.opencensus.exporter.stats.stackdriver.StackdriverExporterWorker.DEFAULT_DISPLAY_NAME_PREFIX; |
23 | 27 |
|
@@ -138,6 +142,47 @@ public class StackdriverExportUtilsTest { |
138 | 142 | private static final io.opencensus.metrics.export.Metric DISTRIBUTION_METRIC = |
139 | 143 | io.opencensus.metrics.export.Metric.createWithOneTimeSeries( |
140 | 144 | HISTOGRAM_METRIC_DESCRIPTOR, DISTRIBUTION_TIME_SERIES); |
| 145 | + private static final Summary SUMMARY_1 = |
| 146 | + Summary.create( |
| 147 | + 22L, |
| 148 | + 74.8, |
| 149 | + Snapshot.create( |
| 150 | + 10L, |
| 151 | + 87.07, |
| 152 | + Arrays.asList( |
| 153 | + ValueAtPercentile.create(50, 6), |
| 154 | + ValueAtPercentile.create(75, 10.2), |
| 155 | + ValueAtPercentile.create(98, 4.6), |
| 156 | + ValueAtPercentile.create(99, 1.2)))); |
| 157 | + private static final Value SUMMARY_VALUE_1 = Value.summaryValue(SUMMARY_1); |
| 158 | + private static final Point SUMMARY_POINT = Point.create(SUMMARY_VALUE_1, TIMESTAMP); |
| 159 | + private static final Summary SUMMARY_NULL_SUM = |
| 160 | + Summary.create( |
| 161 | + 22L, |
| 162 | + null, |
| 163 | + Snapshot.create(10L, 87.07, Collections.singletonList(ValueAtPercentile.create(50, 6)))); |
| 164 | + private static final Value SUMMARY_VALUE_NULL_SUM = Value.summaryValue(SUMMARY_NULL_SUM); |
| 165 | + private static final Point SUMMARY_POINT_NULL_SUM = |
| 166 | + Point.create(SUMMARY_VALUE_NULL_SUM, TIMESTAMP); |
| 167 | + private static final io.opencensus.metrics.export.TimeSeries SUMMARY_TIME_SERIES_NULL_SUM = |
| 168 | + io.opencensus.metrics.export.TimeSeries.createWithOnePoint( |
| 169 | + LABEL_VALUE, SUMMARY_POINT_NULL_SUM, null); |
| 170 | + private static final io.opencensus.metrics.export.MetricDescriptor SUMMARY_METRIC_DESCRIPTOR = |
| 171 | + io.opencensus.metrics.export.MetricDescriptor.create( |
| 172 | + METRIC_NAME, |
| 173 | + METRIC_DESCRIPTION, |
| 174 | + METRIC_UNIT, |
| 175 | + io.opencensus.metrics.export.MetricDescriptor.Type.SUMMARY, |
| 176 | + LABEL_KEY); |
| 177 | + private static final io.opencensus.metrics.export.TimeSeries SUMMARY_TIME_SERIES = |
| 178 | + io.opencensus.metrics.export.TimeSeries.createWithOnePoint(LABEL_VALUE, SUMMARY_POINT, null); |
| 179 | + |
| 180 | + private static final io.opencensus.metrics.export.Metric SUMMARY_METRIC = |
| 181 | + io.opencensus.metrics.export.Metric.createWithOneTimeSeries( |
| 182 | + SUMMARY_METRIC_DESCRIPTOR, SUMMARY_TIME_SERIES); |
| 183 | + private static final io.opencensus.metrics.export.Metric SUMMARY_METRIC_NULL_SUM = |
| 184 | + io.opencensus.metrics.export.Metric.createWithOneTimeSeries( |
| 185 | + SUMMARY_METRIC_DESCRIPTOR, SUMMARY_TIME_SERIES_NULL_SUM); |
141 | 186 |
|
142 | 187 | @Test |
143 | 188 | public void createLabelDescriptor() { |
@@ -461,6 +506,121 @@ public void createTimeSeriesList_withCustomMonitoredResource() { |
461 | 506 | .build()); |
462 | 507 | } |
463 | 508 |
|
| 509 | + @Test |
| 510 | + public void convertSummaryMetric() { |
| 511 | + io.opencensus.metrics.export.MetricDescriptor expectedMetricDescriptor1 = |
| 512 | + io.opencensus.metrics.export.MetricDescriptor.create( |
| 513 | + METRIC_NAME + SUMMARY_SUFFIX_COUNT, |
| 514 | + METRIC_DESCRIPTION, |
| 515 | + METRIC_UNIT_2, |
| 516 | + Type.CUMULATIVE_INT64, |
| 517 | + LABEL_KEY); |
| 518 | + io.opencensus.metrics.export.MetricDescriptor expectedMetricDescriptor2 = |
| 519 | + io.opencensus.metrics.export.MetricDescriptor.create( |
| 520 | + METRIC_NAME + SUMMARY_SUFFIX_SUM, |
| 521 | + METRIC_DESCRIPTION, |
| 522 | + METRIC_UNIT, |
| 523 | + Type.CUMULATIVE_DOUBLE, |
| 524 | + LABEL_KEY); |
| 525 | + List<LabelKey> labelKeys = new ArrayList<>(LABEL_KEY); |
| 526 | + labelKeys.add(PERCENTILE_LABEL_KEY); |
| 527 | + io.opencensus.metrics.export.MetricDescriptor expectedMetricDescriptor3 = |
| 528 | + io.opencensus.metrics.export.MetricDescriptor.create( |
| 529 | + METRIC_NAME + SNAPSHOT_SUFFIX_PERCENTILE, |
| 530 | + METRIC_DESCRIPTION, |
| 531 | + METRIC_UNIT, |
| 532 | + Type.GAUGE_DOUBLE, |
| 533 | + labelKeys); |
| 534 | + List<io.opencensus.metrics.export.TimeSeries> expectedTimeSeries1 = |
| 535 | + Collections.singletonList( |
| 536 | + io.opencensus.metrics.export.TimeSeries.createWithOnePoint( |
| 537 | + LABEL_VALUE, Point.create(Value.longValue(22), TIMESTAMP), null)); |
| 538 | + List<io.opencensus.metrics.export.TimeSeries> expectedTimeSeries2 = |
| 539 | + Collections.singletonList( |
| 540 | + io.opencensus.metrics.export.TimeSeries.createWithOnePoint( |
| 541 | + LABEL_VALUE, Point.create(Value.doubleValue(74.8), TIMESTAMP), null)); |
| 542 | + LabelValue existingLabelValues = LABEL_VALUE.get(0); |
| 543 | + List<io.opencensus.metrics.export.TimeSeries> expectedTimeSeries3 = |
| 544 | + Arrays.asList( |
| 545 | + io.opencensus.metrics.export.TimeSeries.createWithOnePoint( |
| 546 | + Arrays.asList(existingLabelValues, LabelValue.create("50.0")), |
| 547 | + Point.create(Value.doubleValue(6), TIMESTAMP), |
| 548 | + null), |
| 549 | + io.opencensus.metrics.export.TimeSeries.createWithOnePoint( |
| 550 | + Arrays.asList(existingLabelValues, LabelValue.create("75.0")), |
| 551 | + Point.create(Value.doubleValue(10.2), TIMESTAMP), |
| 552 | + null), |
| 553 | + io.opencensus.metrics.export.TimeSeries.createWithOnePoint( |
| 554 | + Arrays.asList(existingLabelValues, LabelValue.create("98.0")), |
| 555 | + Point.create(Value.doubleValue(4.6), TIMESTAMP), |
| 556 | + null), |
| 557 | + io.opencensus.metrics.export.TimeSeries.createWithOnePoint( |
| 558 | + Arrays.asList(existingLabelValues, LabelValue.create("99.0")), |
| 559 | + Point.create(Value.doubleValue(1.2), TIMESTAMP), |
| 560 | + null)); |
| 561 | + List<io.opencensus.metrics.export.Metric> metrics = |
| 562 | + StackdriverExportUtils.convertSummaryMetric(SUMMARY_METRIC); |
| 563 | + |
| 564 | + assertThat(metrics).isNotEmpty(); |
| 565 | + assertThat(metrics.size()).isEqualTo(3); |
| 566 | + assertThat(metrics.get(0).getMetricDescriptor()).isEqualTo(expectedMetricDescriptor1); |
| 567 | + assertThat(metrics.get(0).getTimeSeriesList()).isNotEmpty(); |
| 568 | + assertThat(metrics.get(0).getTimeSeriesList().size()).isEqualTo(1); |
| 569 | + assertThat(metrics.get(0).getTimeSeriesList()).containsExactlyElementsIn(expectedTimeSeries1); |
| 570 | + assertThat(metrics.get(1).getTimeSeriesList().size()).isEqualTo(1); |
| 571 | + assertThat(metrics.get(1).getTimeSeriesList()).containsExactlyElementsIn(expectedTimeSeries2); |
| 572 | + assertThat(metrics.get(1).getTimeSeriesList()).isNotEmpty(); |
| 573 | + assertThat(metrics.get(1).getMetricDescriptor()).isEqualTo(expectedMetricDescriptor2); |
| 574 | + assertThat(metrics.get(2).getTimeSeriesList()).isNotEmpty(); |
| 575 | + assertThat(metrics.get(2).getMetricDescriptor()).isEqualTo(expectedMetricDescriptor3); |
| 576 | + assertThat(metrics.get(2).getTimeSeriesList().size()).isEqualTo(4); |
| 577 | + assertThat(metrics.get(2).getTimeSeriesList()).containsExactlyElementsIn(expectedTimeSeries3); |
| 578 | + } |
| 579 | + |
| 580 | + @Test |
| 581 | + public void convertSummaryMetricWithNullSum() { |
| 582 | + io.opencensus.metrics.export.MetricDescriptor expectedMetricDescriptor1 = |
| 583 | + io.opencensus.metrics.export.MetricDescriptor.create( |
| 584 | + METRIC_NAME + SUMMARY_SUFFIX_COUNT, |
| 585 | + METRIC_DESCRIPTION, |
| 586 | + METRIC_UNIT_2, |
| 587 | + Type.CUMULATIVE_INT64, |
| 588 | + LABEL_KEY); |
| 589 | + List<LabelKey> labelKeys = new ArrayList<>(LABEL_KEY); |
| 590 | + labelKeys.add(PERCENTILE_LABEL_KEY); |
| 591 | + io.opencensus.metrics.export.MetricDescriptor expectedMetricDescriptor2 = |
| 592 | + io.opencensus.metrics.export.MetricDescriptor.create( |
| 593 | + METRIC_NAME + SNAPSHOT_SUFFIX_PERCENTILE, |
| 594 | + METRIC_DESCRIPTION, |
| 595 | + METRIC_UNIT, |
| 596 | + Type.GAUGE_DOUBLE, |
| 597 | + labelKeys); |
| 598 | + List<io.opencensus.metrics.export.TimeSeries> expectedTimeSeries1 = |
| 599 | + Collections.singletonList( |
| 600 | + io.opencensus.metrics.export.TimeSeries.createWithOnePoint( |
| 601 | + LABEL_VALUE, Point.create(Value.longValue(22), TIMESTAMP), null)); |
| 602 | + LabelValue existingLabelValues = LABEL_VALUE.get(0); |
| 603 | + List<io.opencensus.metrics.export.TimeSeries> expectedTimeSeries2 = |
| 604 | + Collections.singletonList( |
| 605 | + io.opencensus.metrics.export.TimeSeries.createWithOnePoint( |
| 606 | + Arrays.asList(existingLabelValues, LabelValue.create("50.0")), |
| 607 | + Point.create(Value.doubleValue(6), TIMESTAMP), |
| 608 | + null)); |
| 609 | + List<io.opencensus.metrics.export.Metric> metrics = |
| 610 | + StackdriverExportUtils.convertSummaryMetric(SUMMARY_METRIC_NULL_SUM); |
| 611 | + |
| 612 | + assertThat(metrics).isNotEmpty(); |
| 613 | + assertThat(metrics.size()).isEqualTo(2); |
| 614 | + assertThat(metrics.get(0).getMetricDescriptor()).isEqualTo(expectedMetricDescriptor1); |
| 615 | + assertThat(metrics.get(0).getTimeSeriesList()).isNotEmpty(); |
| 616 | + assertThat(metrics.get(0).getTimeSeriesList().size()).isEqualTo(1); |
| 617 | + assertThat(metrics.get(0).getTimeSeriesList()).containsExactlyElementsIn(expectedTimeSeries1); |
| 618 | + assertThat(metrics.get(1).getTimeSeriesList()).isNotEmpty(); |
| 619 | + assertThat(metrics.get(1).getMetricDescriptor()).isEqualTo(expectedMetricDescriptor2); |
| 620 | + assertThat(metrics.get(1).getTimeSeriesList().size()).isEqualTo(1); |
| 621 | + assertThat(metrics.get(1).getTimeSeriesList()).containsExactlyElementsIn(expectedTimeSeries2); |
| 622 | + } |
| 623 | + |
464 | 624 | @Test |
465 | 625 | public void setResourceForBuilder_GcpInstanceType() { |
466 | 626 | MonitoredResource.Builder monitoredResourceBuilder = DEFAULT_RESOURCE_WITH_PROJECT_ID.clone(); |
|
0 commit comments