|
1 | 1 | /*
|
2 |
| - * Copyright 2012-2023 the original author or authors. |
| 2 | + * Copyright 2012-2024 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.
|
|
17 | 17 | package org.springframework.boot.actuate.autoconfigure.metrics.jersey;
|
18 | 18 |
|
19 | 19 | import java.net.URI;
|
| 20 | +import java.util.Set; |
20 | 21 |
|
21 | 22 | import io.micrometer.core.instrument.MeterRegistry;
|
22 | 23 | import io.micrometer.core.instrument.Tag;
|
23 | 24 | import io.micrometer.core.instrument.Timer;
|
24 |
| -import io.micrometer.core.instrument.binder.jersey.server.DefaultJerseyTagsProvider; |
25 |
| -import io.micrometer.core.instrument.binder.jersey.server.JerseyTagsProvider; |
26 |
| -import io.micrometer.core.instrument.binder.jersey.server.MetricsApplicationEventListener; |
27 | 25 | import jakarta.ws.rs.GET;
|
28 | 26 | import jakarta.ws.rs.Path;
|
29 | 27 | import jakarta.ws.rs.PathParam;
|
| 28 | +import org.assertj.core.api.InstanceOfAssertFactories; |
| 29 | +import org.glassfish.jersey.micrometer.server.DefaultJerseyTagsProvider; |
| 30 | +import org.glassfish.jersey.micrometer.server.JerseyTagsProvider; |
| 31 | +import org.glassfish.jersey.micrometer.server.MetricsApplicationEventListener; |
30 | 32 | import org.glassfish.jersey.server.ResourceConfig;
|
31 | 33 | import org.glassfish.jersey.server.monitoring.RequestEvent;
|
32 | 34 | import org.junit.jupiter.api.Test;
|
33 | 35 |
|
34 | 36 | import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
|
35 | 37 | import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
|
| 38 | +import org.springframework.boot.actuate.autoconfigure.metrics.jersey.JerseyServerMetricsAutoConfiguration.JerseyTagsProviderAdapter; |
36 | 39 | import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
|
37 | 40 | import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration;
|
38 | 41 | import org.springframework.boot.autoconfigure.AutoConfigurations;
|
@@ -87,6 +90,22 @@ void shouldHonorExistingTagProvider() {
|
87 | 90 | .run((context) -> assertThat(context).hasSingleBean(CustomJerseyTagsProvider.class));
|
88 | 91 | }
|
89 | 92 |
|
| 93 | + @Test |
| 94 | + @Deprecated(since = "3.3.0", forRemoval = true) |
| 95 | + void shouldHonorExistingMicrometerTagProvider() { |
| 96 | + this.webContextRunner.withUserConfiguration(CustomMicrometerJerseyTagsProviderConfiguration.class) |
| 97 | + .run((context) -> { |
| 98 | + assertThat(context).hasSingleBean(CustomMicrometerJerseyTagsProvider.class); |
| 99 | + ResourceConfig config = new ResourceConfig(); |
| 100 | + context.getBean(ResourceConfigCustomizer.class).customize(config); |
| 101 | + Set<Object> instances = config.getInstances(); |
| 102 | + assertThat(instances).hasSize(1) |
| 103 | + .first(InstanceOfAssertFactories.type(MetricsApplicationEventListener.class)) |
| 104 | + .satisfies((listener) -> assertThat(listener).extracting("tagsProvider") |
| 105 | + .isInstanceOf(JerseyTagsProviderAdapter.class)); |
| 106 | + }); |
| 107 | + } |
| 108 | + |
90 | 109 | @Test
|
91 | 110 | void httpRequestsAreTimed() {
|
92 | 111 | this.webContextRunner.run((context) -> {
|
@@ -161,4 +180,31 @@ public Iterable<Tag> httpLongRequestTags(RequestEvent event) {
|
161 | 180 |
|
162 | 181 | }
|
163 | 182 |
|
| 183 | + @SuppressWarnings("deprecation") |
| 184 | + @Configuration(proxyBeanMethods = false) |
| 185 | + static class CustomMicrometerJerseyTagsProviderConfiguration { |
| 186 | + |
| 187 | + @Bean |
| 188 | + io.micrometer.core.instrument.binder.jersey.server.JerseyTagsProvider customJerseyTagsProvider() { |
| 189 | + return new CustomMicrometerJerseyTagsProvider(); |
| 190 | + } |
| 191 | + |
| 192 | + } |
| 193 | + |
| 194 | + @SuppressWarnings("deprecation") |
| 195 | + static class CustomMicrometerJerseyTagsProvider |
| 196 | + implements io.micrometer.core.instrument.binder.jersey.server.JerseyTagsProvider { |
| 197 | + |
| 198 | + @Override |
| 199 | + public Iterable<Tag> httpRequestTags(RequestEvent event) { |
| 200 | + return null; |
| 201 | + } |
| 202 | + |
| 203 | + @Override |
| 204 | + public Iterable<Tag> httpLongRequestTags(RequestEvent event) { |
| 205 | + return null; |
| 206 | + } |
| 207 | + |
| 208 | + } |
| 209 | + |
164 | 210 | }
|
0 commit comments