|
16 | 16 |
|
17 | 17 | package org.springframework.grpc.autoconfigure.server; |
18 | 18 |
|
19 | | -import static org.assertj.core.api.Assertions.assertThat; |
20 | | -import static org.mockito.ArgumentMatchers.any; |
21 | | -import static org.mockito.ArgumentMatchers.anyInt; |
22 | | -import static org.mockito.Mockito.inOrder; |
23 | | -import static org.mockito.Mockito.mock; |
24 | | -import static org.mockito.Mockito.when; |
| 19 | +import java.util.concurrent.atomic.AtomicBoolean; |
25 | 20 |
|
26 | | -import java.time.Duration; |
27 | | -import java.util.List; |
28 | | -import java.util.concurrent.TimeUnit; |
29 | | - |
30 | | -import org.assertj.core.api.InstanceOfAssertFactories; |
| 21 | +import io.grpc.BindableService; |
| 22 | +import io.grpc.ServerServiceDefinition; |
| 23 | +import io.grpc.internal.GrpcUtil; |
| 24 | +import io.grpc.servlet.jakarta.GrpcServlet; |
| 25 | +import io.grpc.servlet.jakarta.ServletAdapter; |
| 26 | +import io.grpc.servlet.jakarta.ServletServerBuilder; |
31 | 27 | import org.junit.jupiter.api.Test; |
32 | | -import org.mockito.InOrder; |
33 | | -import org.mockito.MockedStatic; |
34 | | -import org.mockito.Mockito; |
35 | | -import org.mockito.stubbing.Answer; |
| 28 | + |
36 | 29 | import org.springframework.boot.autoconfigure.AutoConfigurations; |
37 | | -import org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration; |
38 | 30 | import org.springframework.boot.test.context.FilteredClassLoader; |
39 | 31 | import org.springframework.boot.test.context.runner.ApplicationContextRunner; |
40 | 32 | import org.springframework.boot.test.context.runner.WebApplicationContextRunner; |
41 | 33 | import org.springframework.boot.web.servlet.ServletRegistrationBean; |
42 | | -import org.springframework.context.annotation.Bean; |
43 | | -import org.springframework.context.annotation.Configuration; |
44 | | -import org.springframework.core.annotation.Order; |
45 | | -import org.springframework.grpc.server.GrpcServerFactory; |
46 | | -import org.springframework.grpc.server.NettyGrpcServerFactory; |
47 | 34 | import org.springframework.grpc.server.ServerBuilderCustomizer; |
48 | | -import org.springframework.grpc.server.ShadedNettyGrpcServerFactory; |
49 | | -import org.springframework.grpc.server.lifecycle.GrpcServerLifecycle; |
| 35 | +import org.springframework.util.unit.DataSize; |
50 | 36 |
|
51 | | -import io.grpc.BindableService; |
52 | | -import io.grpc.Grpc; |
53 | | -import io.grpc.ServerBuilder; |
54 | | -import io.grpc.ServerServiceDefinition; |
55 | | -import io.grpc.ServiceDescriptor; |
56 | | -import io.grpc.netty.NettyServerBuilder; |
| 37 | +import static org.assertj.core.api.Assertions.assertThat; |
| 38 | +import static org.mockito.Mockito.mock; |
| 39 | +import static org.mockito.Mockito.when; |
57 | 40 |
|
58 | 41 | /** |
59 | 42 | * Tests for {@link GrpcServerAutoConfiguration}. |
60 | 43 | * |
61 | 44 | * @author Chris Bono |
| 45 | + * @author Toshiaki Maki |
62 | 46 | */ |
63 | 47 | class GrpcServletAutoConfigurationTests { |
64 | 48 |
|
@@ -90,7 +74,40 @@ void whenNoBindableServicesRegisteredAutoConfigurationIsSkipped() { |
90 | 74 |
|
91 | 75 | @Test |
92 | 76 | void whenWebApplicationServletIsAutoConfigured() { |
93 | | - this.contextRunner().run((context) -> assertThat(context).getBean(ServletRegistrationBean.class).isNotNull()); |
| 77 | + this.contextRunner().run((context) -> { |
| 78 | + assertThat(context).getBean(ServletRegistrationBean.class) |
| 79 | + .isNotNull() |
| 80 | + .extracting("servlet") |
| 81 | + .isInstanceOf(GrpcServlet.class) |
| 82 | + .extracting("servletAdapter") |
| 83 | + .isInstanceOf(ServletAdapter.class) |
| 84 | + .extracting("maxInboundMessageSize") |
| 85 | + .isEqualTo(GrpcUtil.DEFAULT_MAX_MESSAGE_SIZE); |
| 86 | + }); |
| 87 | + } |
| 88 | + |
| 89 | + @Test |
| 90 | + void whenCustomizerIsRegistered() { |
| 91 | + AtomicBoolean invoked = new AtomicBoolean(false); |
| 92 | + ServerBuilderCustomizer<ServletServerBuilder> customizer = serverBuilder -> invoked.set(true); |
| 93 | + this.contextRunner().withBean(ServerBuilderCustomizer.class, () -> customizer).run(context -> { |
| 94 | + assertThat(context).getBean(ServletRegistrationBean.class).isNotNull(); |
| 95 | + assertThat(invoked.get()).isTrue(); |
| 96 | + }); |
| 97 | + } |
| 98 | + |
| 99 | + @Test |
| 100 | + void whenMaxInboundMessageSizeIsConfigured() { |
| 101 | + this.contextRunner().withPropertyValues("spring.grpc.server.max-inbound-message-size=10KB").run(context -> { |
| 102 | + assertThat(context).getBean(ServletRegistrationBean.class) |
| 103 | + .isNotNull() |
| 104 | + .extracting("servlet") |
| 105 | + .isInstanceOf(GrpcServlet.class) |
| 106 | + .extracting("servletAdapter") |
| 107 | + .isInstanceOf(ServletAdapter.class) |
| 108 | + .extracting("maxInboundMessageSize") |
| 109 | + .isEqualTo((int) DataSize.ofKilobytes(10).toBytes()); |
| 110 | + }); |
94 | 111 | } |
95 | 112 |
|
96 | 113 | } |
0 commit comments