From 1aaef80c23d39f706bbbc47854d9c21dfce408e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=B0=D1=86=D1=83=D1=80=D0=B0=20=D0=A1=D0=B5=D1=80?= =?UTF-8?q?=D0=B3=D0=B5=D0=B9=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=D1=80=D0=BE=D0=B2=D0=B8=D1=87?= Date: Fri, 6 Sep 2024 09:54:17 +0300 Subject: [PATCH] Feat(deadline) changed the name of deadline property to timeout. --- ...> GrpcClientTimeoutAutoConfiguration.java} | 24 +++++++-------- .../client/config/GrpcChannelProperties.java | 29 +++++++++---------- ...ava => TimeoutSetupClientInterceptor.java} | 10 +++---- ...itional-spring-configuration-metadata.json | 4 +-- ...ot.autoconfigure.AutoConfiguration.imports | 2 +- .../test/config/BaseAutoConfiguration.java | 4 +-- ...dlineTests.java => TimeoutSetupTests.java} | 16 +++++----- 7 files changed, 44 insertions(+), 45 deletions(-) rename grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/autoconfigure/{GrpcClientDeadlineAutoConfiguration.java => GrpcClientTimeoutAutoConfiguration.java} (68%) rename grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/interceptor/{DeadlineSetupClientInterceptor.java => TimeoutSetupClientInterceptor.java} (77%) rename tests/src/test/java/net/devh/boot/grpc/test/setup/{DeadlineTests.java => TimeoutSetupTests.java} (89%) diff --git a/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/autoconfigure/GrpcClientDeadlineAutoConfiguration.java b/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/autoconfigure/GrpcClientTimeoutAutoConfiguration.java similarity index 68% rename from grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/autoconfigure/GrpcClientDeadlineAutoConfiguration.java rename to grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/autoconfigure/GrpcClientTimeoutAutoConfiguration.java index be8ef7586..1932c2456 100644 --- a/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/autoconfigure/GrpcClientDeadlineAutoConfiguration.java +++ b/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/autoconfigure/GrpcClientTimeoutAutoConfiguration.java @@ -28,17 +28,17 @@ import lombok.extern.slf4j.Slf4j; import net.devh.boot.grpc.client.channelfactory.GrpcChannelConfigurer; import net.devh.boot.grpc.client.config.GrpcChannelsProperties; -import net.devh.boot.grpc.client.interceptor.DeadlineSetupClientInterceptor; +import net.devh.boot.grpc.client.interceptor.TimeoutSetupClientInterceptor; /** - * The deadline autoconfiguration for the client. + * The timeout autoconfiguration for the client. * *

* You can disable this config by using: *

* *
- * @ImportAutoConfiguration(exclude = GrpcClientDeadlineAutoConfiguration.class)
+ * @ImportAutoConfiguration(exclude = GrpcClientTimeoutAutoConfiguration.class)
  * 
* * @author Sergei Batsura (batsura.sa@gmail.com) @@ -46,24 +46,24 @@ @Slf4j @Configuration(proxyBeanMethods = false) @AutoConfigureBefore(GrpcClientAutoConfiguration.class) -public class GrpcClientDeadlineAutoConfiguration { +public class GrpcClientTimeoutAutoConfiguration { /** - * Creates a {@link GrpcChannelConfigurer} bean applying the default deadline from config to each new call using a + * Creates a {@link GrpcChannelConfigurer} bean applying the default timeout from config to each new call using a * {@link ClientInterceptor}. * - * @param props The properties for deadline configuration. - * @return The GrpcChannelConfigurer bean with interceptor if deadline is configured. - * @see DeadlineSetupClientInterceptor + * @param props The properties for timeout configuration. + * @return The GrpcChannelConfigurer bean with interceptor if timeout is configured. + * @see TimeoutSetupClientInterceptor */ @Bean - GrpcChannelConfigurer deadlineGrpcChannelConfigurer(final GrpcChannelsProperties props) { + GrpcChannelConfigurer timeoutGrpcChannelConfigurer(final GrpcChannelsProperties props) { requireNonNull(props, "properties"); return (channel, name) -> { - Duration deadline = props.getChannel(name).getDeadline(); - if (deadline != null && deadline.toMillis() > 0L) { - channel.intercept(new DeadlineSetupClientInterceptor(deadline)); + Duration timeout = props.getChannel(name).getTimeout(); + if (timeout != null && timeout.toMillis() > 0L) { + channel.intercept(new TimeoutSetupClientInterceptor(timeout)); } }; } diff --git a/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/config/GrpcChannelProperties.java b/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/config/GrpcChannelProperties.java index 1ca339e96..0fea730c4 100644 --- a/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/config/GrpcChannelProperties.java +++ b/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/config/GrpcChannelProperties.java @@ -120,32 +120,31 @@ public void setAddress(final String address) { } // -------------------------------------------------- - // Target Deadline + // Target Timeout // -------------------------------------------------- - private Duration deadline = null; + private Duration timeout = null; /** - * Gets the default deadline for each new call. + * Gets the default timeout for each new call. * - * @return The connection deadline or null - * @see #setDeadline(Duration) + * @return The connection timeout or null + * @see #setTimeout(Duration) */ - public Duration getDeadline() { - return this.deadline; + public Duration getTimeout() { + return this.timeout; } /** - * Set the default deadline duration for new calls (on a per call basis). By default and if zero value is - * configured, the deadline will not be used. The default deadline will be ignored, if a deadline has been applied - * manually. + * Set the default timeout duration for new calls (on a per call basis). By default and if zero value is configured, + * the timeout will not be used. The default timeout will be ignored, if a deadline has been applied manually. * - * @param deadline The connection deadline or null. + * @param timeout The connection timeout or null. * * @see CallOptions#withDeadlineAfter(long, TimeUnit) */ - public void setDeadline(Duration deadline) { - this.deadline = deadline; + public void setTimeout(Duration timeout) { + this.timeout = timeout; } // -------------------------------------------------- @@ -510,8 +509,8 @@ public void copyDefaultsFrom(final GrpcChannelProperties config) { if (this.address == null) { this.address = config.address; } - if (this.deadline == null) { - this.deadline = config.deadline; + if (this.timeout == null) { + this.timeout = config.timeout; } if (this.defaultLoadBalancingPolicy == null) { this.defaultLoadBalancingPolicy = config.defaultLoadBalancingPolicy; diff --git a/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/interceptor/DeadlineSetupClientInterceptor.java b/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/interceptor/TimeoutSetupClientInterceptor.java similarity index 77% rename from grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/interceptor/DeadlineSetupClientInterceptor.java rename to grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/interceptor/TimeoutSetupClientInterceptor.java index 5fd315955..af05f00d4 100644 --- a/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/interceptor/DeadlineSetupClientInterceptor.java +++ b/grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/interceptor/TimeoutSetupClientInterceptor.java @@ -28,15 +28,15 @@ import lombok.extern.slf4j.Slf4j; /** - * Deadline setup client interceptor that create new deadline instance from defaultDeadline. + * Timeout setup client interceptor that create new deadline instance from the timeout. * * @author Sergei Batsura (batsura.sa@gmail.com) */ @Slf4j @RequiredArgsConstructor -public class DeadlineSetupClientInterceptor implements ClientInterceptor { +public class TimeoutSetupClientInterceptor implements ClientInterceptor { - private final Duration defaultDeadline; + private final Duration timeout; @Override public ClientCall interceptCall( @@ -44,9 +44,9 @@ public ClientCall interceptCall( final CallOptions callOptions, final Channel next) { - if (defaultDeadline != null && callOptions.getDeadline() == null) { + if (timeout != null && callOptions.getDeadline() == null) { return next.newCall(method, - callOptions.withDeadlineAfter(defaultDeadline.toMillis(), TimeUnit.MILLISECONDS)); + callOptions.withDeadlineAfter(timeout.toMillis(), TimeUnit.MILLISECONDS)); } else { return next.newCall(method, callOptions); } diff --git a/grpc-client-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/grpc-client-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json index da447abcf..06b079a01 100644 --- a/grpc-client-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/grpc-client-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -108,10 +108,10 @@ "defaultValue": 0 }, { - "name": "grpc.client.GLOBAL.deadline", + "name": "grpc.client.GLOBAL.timeout", "type": "java.time.Duration", "sourceType": "net.devh.boot.grpc.client.config.GrpcChannelProperties", - "description": "The deadline is used to applying from config to each new call." + "description": "The timeout is used to applying from config to each new call. By default and if zero value is configured, the timeout will not be used. The default timeout will be ignored, if a deadline has been applied manually." }, { "name": "grpc.client.GLOBAL.security.authority-override", diff --git a/grpc-client-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/grpc-client-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 293ff8e33..15107b8b8 100644 --- a/grpc-client-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/grpc-client-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -4,4 +4,4 @@ net.devh.boot.grpc.client.autoconfigure.GrpcClientHealthAutoConfiguration net.devh.boot.grpc.client.autoconfigure.GrpcClientMicrometerTraceAutoConfiguration net.devh.boot.grpc.client.autoconfigure.GrpcClientSecurityAutoConfiguration net.devh.boot.grpc.client.autoconfigure.GrpcDiscoveryClientAutoConfiguration -net.devh.boot.grpc.client.autoconfigure.GrpcClientDeadlineAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcClientTimeoutAutoConfiguration diff --git a/tests/src/test/java/net/devh/boot/grpc/test/config/BaseAutoConfiguration.java b/tests/src/test/java/net/devh/boot/grpc/test/config/BaseAutoConfiguration.java index 786d4365d..928c9a3da 100644 --- a/tests/src/test/java/net/devh/boot/grpc/test/config/BaseAutoConfiguration.java +++ b/tests/src/test/java/net/devh/boot/grpc/test/config/BaseAutoConfiguration.java @@ -20,7 +20,7 @@ import org.springframework.context.annotation.Configuration; import net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration; -import net.devh.boot.grpc.client.autoconfigure.GrpcClientDeadlineAutoConfiguration; +import net.devh.boot.grpc.client.autoconfigure.GrpcClientTimeoutAutoConfiguration; import net.devh.boot.grpc.common.autoconfigure.GrpcCommonCodecAutoConfiguration; import net.devh.boot.grpc.server.autoconfigure.GrpcServerAutoConfiguration; import net.devh.boot.grpc.server.autoconfigure.GrpcServerFactoryAutoConfiguration; @@ -29,7 +29,7 @@ @Configuration @ImportAutoConfiguration({GrpcCommonCodecAutoConfiguration.class, GrpcServerAutoConfiguration.class, GrpcServerFactoryAutoConfiguration.class, GrpcServerSecurityAutoConfiguration.class, - GrpcClientAutoConfiguration.class, GrpcClientDeadlineAutoConfiguration.class}) + GrpcClientAutoConfiguration.class, GrpcClientTimeoutAutoConfiguration.class}) public class BaseAutoConfiguration { } diff --git a/tests/src/test/java/net/devh/boot/grpc/test/setup/DeadlineTests.java b/tests/src/test/java/net/devh/boot/grpc/test/setup/TimeoutSetupTests.java similarity index 89% rename from tests/src/test/java/net/devh/boot/grpc/test/setup/DeadlineTests.java rename to tests/src/test/java/net/devh/boot/grpc/test/setup/TimeoutSetupTests.java index 1b71c9f3a..c25089c1d 100644 --- a/tests/src/test/java/net/devh/boot/grpc/test/setup/DeadlineTests.java +++ b/tests/src/test/java/net/devh/boot/grpc/test/setup/TimeoutSetupTests.java @@ -38,22 +38,22 @@ import net.devh.boot.grpc.test.proto.SomeType; /** - * These tests check the property {@link GrpcChannelProperties#getDeadline()}. + * These tests check the property {@link GrpcChannelProperties#getTimeout()} ()}. */ -public class DeadlineTests { +public class TimeoutSetupTests { @Slf4j @SpringBootTest(properties = { "grpc.client.GLOBAL.address=localhost:9090", - "grpc.client.GLOBAL.deadline=1s", + "grpc.client.GLOBAL.timeout=1s", "grpc.client.GLOBAL.negotiationType=PLAINTEXT", }) @SpringJUnitConfig(classes = {ServiceConfiguration.class, BaseAutoConfiguration.class}) - static class DeadlineSetupTest extends AbstractSimpleServerClientTest { + static class TimeoutSetupTest extends AbstractSimpleServerClientTest { @Test @SneakyThrows @DirtiesContext - void testServiceStubDeadlineEnabledAndSuccessful() { + void testServiceStubTimeoutEnabledAndSuccessful() { log.info("--- Starting test with unsuccessful and than successful call ---"); final StreamRecorder streamRecorder1 = StreamRecorder.create(); this.testServiceStub.echo(streamRecorder1); @@ -71,17 +71,17 @@ void testServiceStubDeadlineEnabledAndSuccessful() { @Slf4j @SpringBootTest(properties = { "grpc.client.GLOBAL.address=localhost:9090", - "grpc.client.GLOBAL.deadline=0s", + "grpc.client.GLOBAL.timeout=0s", "grpc.client.GLOBAL.negotiationType=PLAINTEXT", }) @SpringJUnitConfig(classes = {ServiceConfiguration.class, BaseAutoConfiguration.class}) - static class ZeroDeadlineSetupTest extends AbstractSimpleServerClientTest { + static class ZeroTimeoutSetupTest extends AbstractSimpleServerClientTest { @Test @SneakyThrows @DirtiesContext void testServiceStubManuallyConfiguredDeadlineTakesPrecedenceOfTheConfigOne() { - log.info("--- Starting test that manually configured deadline takes precedence of the config one ---"); + log.info("--- Starting test that manually configured deadline takes precedence of the config timeout ---"); final StreamRecorder streamRecorder1 = StreamRecorder.create(); this.testServiceStub.withDeadlineAfter(1L, TimeUnit.SECONDS).echo(streamRecorder1); assertThrows(ExecutionException.class, () -> streamRecorder1.firstValue().get());