From ee994e0f4dc00b18f250678042d8e6f125d7ad29 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 7 Nov 2024 12:16:10 +0000 Subject: [PATCH] Use new annotation for existing interceptor --- ...rpcServerObservationAutoConfiguration.java | 16 ++++-------- ...rverObservationAutoConfigurationTests.java | 26 ++++++------------- 2 files changed, 13 insertions(+), 29 deletions(-) diff --git a/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/server/GrpcServerObservationAutoConfiguration.java b/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/server/GrpcServerObservationAutoConfiguration.java index 46fc5fe..7d9c5a3 100644 --- a/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/server/GrpcServerObservationAutoConfiguration.java +++ b/spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/server/GrpcServerObservationAutoConfiguration.java @@ -15,16 +15,15 @@ */ package org.springframework.grpc.autoconfigure.server; -import io.grpc.ServerBuilder; -import io.grpc.ServerInterceptor; -import io.micrometer.core.instrument.binder.grpc.ObservationGrpcServerInterceptor; -import io.micrometer.observation.ObservationRegistry; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; -import org.springframework.grpc.server.ServerBuilderCustomizer; + +import io.grpc.ServerInterceptor; +import io.micrometer.core.instrument.binder.grpc.ObservationGrpcServerInterceptor; +import io.micrometer.observation.ObservationRegistry; @AutoConfiguration( afterName = "org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration") @@ -35,14 +34,9 @@ public class GrpcServerObservationAutoConfiguration { @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") @Bean + @GlobalServerInterceptor ServerInterceptor observationGrpcServerInterceptor(ObservationRegistry observationRegistry) { return new ObservationGrpcServerInterceptor(observationRegistry); } - @Bean - > ServerBuilderCustomizer observationGrpcServerInterceptorCustomizer( - ServerInterceptor observationGrpcServerInterceptor) { - return (serverBuilder) -> serverBuilder.intercept(observationGrpcServerInterceptor); - } - } diff --git a/spring-grpc-spring-boot-autoconfigure/src/test/java/org/springframework/grpc/autoconfigure/server/GrpcServerObservationAutoConfigurationTests.java b/spring-grpc-spring-boot-autoconfigure/src/test/java/org/springframework/grpc/autoconfigure/server/GrpcServerObservationAutoConfigurationTests.java index a974b2b..bb63d34 100644 --- a/spring-grpc-spring-boot-autoconfigure/src/test/java/org/springframework/grpc/autoconfigure/server/GrpcServerObservationAutoConfigurationTests.java +++ b/spring-grpc-spring-boot-autoconfigure/src/test/java/org/springframework/grpc/autoconfigure/server/GrpcServerObservationAutoConfigurationTests.java @@ -16,20 +16,17 @@ package org.springframework.grpc.autoconfigure.server; -import io.grpc.ServerBuilder; -import io.micrometer.core.instrument.binder.grpc.ObservationGrpcServerInterceptor; -import io.micrometer.observation.ObservationRegistry; +import static org.assertj.core.api.Assertions.assertThat; + +import org.assertj.core.api.Condition; import org.junit.jupiter.api.Test; import org.mockito.Mockito; - import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.grpc.server.ServerBuilderCustomizer; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; +import io.micrometer.core.instrument.binder.grpc.ObservationGrpcServerInterceptor; +import io.micrometer.observation.ObservationRegistry; /** * Tests for the {@link GrpcServerObservationAutoConfiguration}. @@ -79,19 +76,12 @@ class GrpcServerObservationAutoConfigurationTests { .run(context -> assertThat(context).doesNotHaveBean(GrpcServerObservationAutoConfiguration.class)); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test void whenAllConditionsAreMetThenInterceptorConfiguredAsExpected() { this.validContextRunner().run((context) -> { - assertThat(context).hasSingleBean(ObservationGrpcServerInterceptor.class); - assertThat(context).hasSingleBean(ServerBuilderCustomizer.class); - // ensure the customizer in fact adds the interceptor to the builder - ObservationGrpcServerInterceptor serverInterceptor = context - .getBean(ObservationGrpcServerInterceptor.class); - ServerBuilder serverBuilder = mock(); - ServerBuilderCustomizer serverBuilderCustomizer = context.getBean(ServerBuilderCustomizer.class); - serverBuilderCustomizer.customize(serverBuilder); - verify(serverBuilder).intercept(serverInterceptor); + assertThat(context).hasSingleBean(ObservationGrpcServerInterceptor.class) + .has(new Condition<>(beans -> beans.getBeansWithAnnotation(GlobalServerInterceptor.class).size() == 1, + "One global interceptor expected")); }); }