|
1 | 1 | /*
|
2 |
| - * Copyright 2012-2024 the original author or authors. |
| 2 | + * Copyright 2012-2025 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
21 | 21 | import io.micrometer.core.instrument.Clock;
|
22 | 22 | import io.micrometer.registry.otlp.OtlpConfig;
|
23 | 23 | import io.micrometer.registry.otlp.OtlpMeterRegistry;
|
| 24 | +import io.micrometer.registry.otlp.OtlpMetricsSender; |
24 | 25 | import org.junit.jupiter.api.Test;
|
25 | 26 | import org.junit.jupiter.api.condition.EnabledForJreRange;
|
26 | 27 | import org.junit.jupiter.api.condition.JRE;
|
27 | 28 |
|
28 | 29 | import org.springframework.boot.actuate.autoconfigure.metrics.export.otlp.OtlpMetricsExportAutoConfiguration.PropertiesOtlpMetricsConnectionDetails;
|
29 | 30 | import org.springframework.boot.autoconfigure.AutoConfigurations;
|
| 31 | +import org.springframework.boot.test.context.assertj.AssertableApplicationContext; |
30 | 32 | import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
31 | 33 | import org.springframework.boot.testsupport.assertj.ScheduledExecutorServiceAssert;
|
32 | 34 | import org.springframework.context.annotation.Bean;
|
@@ -132,6 +134,27 @@ void testConnectionFactoryWithOverridesWhenUsingCustomConnectionDetails() {
|
132 | 134 | });
|
133 | 135 | }
|
134 | 136 |
|
| 137 | + @Test |
| 138 | + void allowsCustomMetricsSenderToBeUsed() { |
| 139 | + this.contextRunner.withUserConfiguration(BaseConfiguration.class, CustomMetricsSenderConfiguration.class) |
| 140 | + .run(this::assertHasCustomMetricsSender); |
| 141 | + } |
| 142 | + |
| 143 | + @Test |
| 144 | + @EnabledForJreRange(min = JRE.JAVA_21) |
| 145 | + void allowsCustomMetricsSenderToBeUsedWithVirtualThreads() { |
| 146 | + this.contextRunner.withUserConfiguration(BaseConfiguration.class, CustomMetricsSenderConfiguration.class) |
| 147 | + .withPropertyValues("spring.threads.virtual.enabled=true") |
| 148 | + .run(this::assertHasCustomMetricsSender); |
| 149 | + } |
| 150 | + |
| 151 | + private void assertHasCustomMetricsSender(AssertableApplicationContext context) { |
| 152 | + assertThat(context).hasSingleBean(OtlpMeterRegistry.class); |
| 153 | + OtlpMeterRegistry registry = context.getBean(OtlpMeterRegistry.class); |
| 154 | + assertThat(registry).extracting("metricsSender") |
| 155 | + .satisfies((sender) -> assertThat(sender).isSameAs(CustomMetricsSenderConfiguration.customMetricsSender)); |
| 156 | + } |
| 157 | + |
135 | 158 | @Configuration(proxyBeanMethods = false)
|
136 | 159 | static class BaseConfiguration {
|
137 | 160 |
|
@@ -174,4 +197,17 @@ OtlpMetricsConnectionDetails otlpConnectionDetails() {
|
174 | 197 |
|
175 | 198 | }
|
176 | 199 |
|
| 200 | + @Configuration(proxyBeanMethods = false) |
| 201 | + static class CustomMetricsSenderConfiguration { |
| 202 | + |
| 203 | + static OtlpMetricsSender customMetricsSender = (request) -> { |
| 204 | + }; |
| 205 | + |
| 206 | + @Bean |
| 207 | + OtlpMetricsSender customMetricsSender() { |
| 208 | + return customMetricsSender; |
| 209 | + } |
| 210 | + |
| 211 | + } |
| 212 | + |
177 | 213 | }
|
0 commit comments