diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverProperties.java index 1ff7f48d77..e1121e9289 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverProperties.java @@ -47,6 +47,13 @@ public class StackdriverProperties extends StepRegistryProperties { */ private Map resourceLabels; + /** + * Whether to use semantically correct metric types. When false, counter metrics are + * published as the GAUGE MetricKind. When true, counter metrics are published as the + * CUMULATIVE MetricKind. + */ + private boolean useSemanticMetricTypes = false; + public String getProjectId() { return this.projectId; } @@ -71,4 +78,12 @@ public class StackdriverProperties extends StepRegistryProperties { this.resourceLabels = resourceLabels; } + boolean isUseSemanticMetricTypes() { + return this.useSemanticMetricTypes; + } + + void setUseSemanticMetricTypes(boolean useSemanticMetricTypes) { + this.useSemanticMetricTypes = useSemanticMetricTypes; + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapter.java index 7011dd1f1f..de1ce993cf 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapter.java @@ -55,4 +55,9 @@ public class StackdriverPropertiesConfigAdapter extends StepRegistryPropertiesCo return get(StackdriverProperties::getResourceLabels, StackdriverConfig.super::resourceLabels); } + @Override + public boolean useSemanticMetricTypes() { + return get(StackdriverProperties::isUseSemanticMetricTypes, StackdriverConfig.super::useSemanticMetricTypes); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java index 7c7980f05c..d04b5410af 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTests.java @@ -55,4 +55,11 @@ class StackdriverPropertiesConfigAdapterTests { .containsExactlyInAnyOrderEntriesOf(labels); } + @Test + void whenPropertiesUseSemanticMetricTypesIsSetAdapterResourceTypeReturnsIt() { + StackdriverProperties properties = new StackdriverProperties(); + properties.setUseSemanticMetricTypes(true); + assertThat(new StackdriverPropertiesConfigAdapter(properties).useSemanticMetricTypes()).isTrue(); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesTests.java index e612fa2a7c..103344d461 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,6 +36,7 @@ class StackdriverPropertiesTests extends StepRegistryPropertiesTests { StackdriverConfig config = (key) -> null; assertStepRegistryDefaultValues(properties, config); assertThat(properties.getResourceType()).isEqualTo(config.resourceType()); + assertThat(properties.isUseSemanticMetricTypes()).isEqualTo(config.useSemanticMetricTypes()); } }