Skip to content

Commit 9465748

Browse files
adinauerclaude
andcommitted
merge(micrometer): Propagate Spring Boot sample parity
Merge the Boot 3 and Boot 4 sample endpoints and dual-registry system tests from #6116 into the ignored-metrics branch. Keep the top of the stack in sync without rewriting its history. Verify all 18 metrics system tests against Boot 2, 3, and 4 with the ignored-metrics defaults applied. Formatting and API checks also pass. Refs #6116 Refs #6155 Co-Authored-By: Claude <noreply@anthropic.com>
2 parents 3fdc833 + 2d0c4ca commit 9465748

6 files changed

Lines changed: 98 additions & 0 deletions

File tree

‎sentry-samples/sentry-samples-spring-boot-4/src/main/java/io/sentry/samples/spring/boot4/MetricController.java‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.sentry.samples.spring.boot4;
22

3+
import io.micrometer.core.instrument.MeterRegistry;
4+
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
35
import io.sentry.Sentry;
46
import io.sentry.metrics.MetricsUnit;
57
import org.slf4j.Logger;
@@ -14,6 +16,14 @@
1416
public class MetricController {
1517
private static final Logger LOGGER = LoggerFactory.getLogger(MetricController.class);
1618

19+
private final MeterRegistry meterRegistry;
20+
private final SimpleMeterRegistry simpleMeterRegistry;
21+
22+
public MetricController(MeterRegistry meterRegistry, SimpleMeterRegistry simpleMeterRegistry) {
23+
this.meterRegistry = meterRegistry;
24+
this.simpleMeterRegistry = simpleMeterRegistry;
25+
}
26+
1727
@GetMapping("count")
1828
String count() {
1929
Sentry.setAttribute("user.type", "admin");
@@ -22,6 +32,14 @@ String count() {
2232
return "count metric increased";
2333
}
2434

35+
@GetMapping("micrometer")
36+
String micrometer() {
37+
meterRegistry.counter("micrometer.counter", "source", "spring").increment();
38+
double simpleRegistryCount =
39+
simpleMeterRegistry.get("micrometer.counter").tag("source", "spring").counter().count();
40+
return "micrometer metric increased: " + simpleRegistryCount;
41+
}
42+
2543
@GetMapping("gauge/{value}")
2644
String gauge(@PathVariable("value") Long value) {
2745
Sentry.metrics().gauge("memory.free", value.doubleValue(), MetricsUnit.Information.BYTE);

‎sentry-samples/sentry-samples-spring-boot-4/src/main/java/io/sentry/samples/spring/boot4/SentryDemoApplication.java‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static io.sentry.quartz.SentryJobListener.SENTRY_SLUG_KEY;
44

5+
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
56
import io.sentry.samples.spring.boot4.quartz.SampleJob;
67
import java.util.Collections;
78
import org.quartz.JobDetail;
@@ -42,6 +43,11 @@ RestClient restClient(RestClient.Builder builder) {
4243
return builder.build();
4344
}
4445

46+
@Bean
47+
SimpleMeterRegistry simpleMeterRegistry() {
48+
return new SimpleMeterRegistry();
49+
}
50+
4551
@Bean
4652
public JobDetailFactoryBean jobDetail() {
4753
JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();

‎sentry-samples/sentry-samples-spring-boot-4/src/test/kotlin/io/sentry/systemtest/MetricsSystemTest.kt‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package io.sentry.systemtest
33
import io.sentry.systemtest.util.TestHelper
44
import kotlin.test.Test
55
import kotlin.test.assertEquals
6+
import kotlin.test.assertNotNull
67
import kotlin.test.assertTrue
78
import org.junit.Before
89

@@ -28,6 +29,30 @@ class MetricsSystemTest {
2829
}
2930
}
3031

32+
@Test
33+
fun `Micrometer metric is forwarded to Sentry and another registry`() {
34+
val restClient = testHelper.restClient
35+
val response = assertNotNull(restClient.getMicrometerMetric())
36+
val responsePrefix = "micrometer metric increased: "
37+
assertTrue(response.startsWith(responsePrefix))
38+
assertTrue(response.removePrefix(responsePrefix).toDouble() > 0.0)
39+
assertEquals(200, restClient.lastKnownStatusCode)
40+
41+
testHelper.ensureMetricsReceived { event, header ->
42+
testHelper.doesContainMetric(event, "micrometer.counter", "counter", 1.0) &&
43+
testHelper.doesMetricHaveAttribute(
44+
event,
45+
"micrometer.counter",
46+
"source",
47+
"spring",
48+
) &&
49+
header.sdkVersion?.integrationSet?.contains("Micrometer") == true &&
50+
header.sdkVersion?.packageSet?.any {
51+
it.name == "maven:io.sentry:sentry-micrometer"
52+
} == true
53+
}
54+
}
55+
3156
@Test
3257
fun `Spring Boot generated HTTP metric is forwarded through Micrometer`() {
3358
val restClient = testHelper.restClient

‎sentry-samples/sentry-samples-spring-boot-jakarta/src/main/java/io/sentry/samples/spring/boot/jakarta/MetricController.java‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.sentry.samples.spring.boot.jakarta;
22

3+
import io.micrometer.core.instrument.MeterRegistry;
4+
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
35
import io.sentry.Sentry;
46
import io.sentry.metrics.MetricsUnit;
57
import org.slf4j.Logger;
@@ -14,6 +16,14 @@
1416
public class MetricController {
1517
private static final Logger LOGGER = LoggerFactory.getLogger(MetricController.class);
1618

19+
private final MeterRegistry meterRegistry;
20+
private final SimpleMeterRegistry simpleMeterRegistry;
21+
22+
public MetricController(MeterRegistry meterRegistry, SimpleMeterRegistry simpleMeterRegistry) {
23+
this.meterRegistry = meterRegistry;
24+
this.simpleMeterRegistry = simpleMeterRegistry;
25+
}
26+
1727
@GetMapping("count")
1828
String count() {
1929
Sentry.setAttribute("user.type", "admin");
@@ -22,6 +32,14 @@ String count() {
2232
return "count metric increased";
2333
}
2434

35+
@GetMapping("micrometer")
36+
String micrometer() {
37+
meterRegistry.counter("micrometer.counter", "source", "spring").increment();
38+
double simpleRegistryCount =
39+
simpleMeterRegistry.get("micrometer.counter").tag("source", "spring").counter().count();
40+
return "micrometer metric increased: " + simpleRegistryCount;
41+
}
42+
2543
@GetMapping("gauge/{value}")
2644
String gauge(@PathVariable("value") Long value) {
2745
Sentry.metrics().gauge("memory.free", value.doubleValue(), MetricsUnit.Information.BYTE);

‎sentry-samples/sentry-samples-spring-boot-jakarta/src/main/java/io/sentry/samples/spring/boot/jakarta/SentryDemoApplication.java‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static io.sentry.quartz.SentryJobListener.SENTRY_SLUG_KEY;
44

5+
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
56
import io.sentry.samples.spring.boot.jakarta.quartz.SampleJob;
67
import java.util.Collections;
78
import org.quartz.JobDetail;
@@ -42,6 +43,11 @@ RestClient restClient(RestClient.Builder builder) {
4243
return builder.build();
4344
}
4445

46+
@Bean
47+
SimpleMeterRegistry simpleMeterRegistry() {
48+
return new SimpleMeterRegistry();
49+
}
50+
4551
@Bean
4652
public JobDetailFactoryBean jobDetail() {
4753
JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();

‎sentry-samples/sentry-samples-spring-boot-jakarta/src/test/kotlin/io/sentry/systemtest/MetricsSystemTest.kt‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package io.sentry.systemtest
33
import io.sentry.systemtest.util.TestHelper
44
import kotlin.test.Test
55
import kotlin.test.assertEquals
6+
import kotlin.test.assertNotNull
67
import kotlin.test.assertTrue
78
import org.junit.Before
89

@@ -28,6 +29,30 @@ class MetricsSystemTest {
2829
}
2930
}
3031

32+
@Test
33+
fun `Micrometer metric is forwarded to Sentry and another registry`() {
34+
val restClient = testHelper.restClient
35+
val response = assertNotNull(restClient.getMicrometerMetric())
36+
val responsePrefix = "micrometer metric increased: "
37+
assertTrue(response.startsWith(responsePrefix))
38+
assertTrue(response.removePrefix(responsePrefix).toDouble() > 0.0)
39+
assertEquals(200, restClient.lastKnownStatusCode)
40+
41+
testHelper.ensureMetricsReceived { event, header ->
42+
testHelper.doesContainMetric(event, "micrometer.counter", "counter", 1.0) &&
43+
testHelper.doesMetricHaveAttribute(
44+
event,
45+
"micrometer.counter",
46+
"source",
47+
"spring",
48+
) &&
49+
header.sdkVersion?.integrationSet?.contains("Micrometer") == true &&
50+
header.sdkVersion?.packageSet?.any {
51+
it.name == "maven:io.sentry:sentry-micrometer"
52+
} == true
53+
}
54+
}
55+
3156
@Test
3257
fun `Spring Boot generated HTTP metric is forwarded through Micrometer`() {
3358
val restClient = testHelper.restClient

0 commit comments

Comments
 (0)