下面列出了怎么用org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void gatewayRSocketConfigured() {
new ReactiveWebApplicationContextRunner().withUserConfiguration(MyConfig.class)
.withSystemProperties("spring.cloud.gateway.rsocket.route-id=11")
.withConfiguration(
AutoConfigurations.of(RSocketStrategiesAutoConfiguration.class,
RSocketMessagingAutoConfiguration.class,
GatewayRSocketCommonAutoConfiguration.class,
GatewayRSocketAutoConfiguration.class,
CompositeMeterRegistryAutoConfiguration.class,
MetricsAutoConfiguration.class))
.run(context -> assertThat(context).hasSingleBean(RoutingTable.class)
.hasSingleBean(RoutingTableRoutes.class)
.hasSingleBean(RoutingTableSocketAcceptorFilter.class)
.hasSingleBean(GatewayServerRSocketFactoryProcessor.class)
.hasSingleBean(BrokerProperties.class)
.hasSingleBean(GatewaySocketAcceptor.class)
.hasSingleBean(SocketAcceptorPredicateFilter.class)
.hasSingleBean(RSocketServerBootstrap.class)
.doesNotHaveBean(SocketAcceptorPredicate.class));
}
@Test
public void nettyHttpClientDefaults() {
new ReactiveWebApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(WebFluxAutoConfiguration.class,
MetricsAutoConfiguration.class,
SimpleMetricsExportAutoConfiguration.class,
GatewayAutoConfiguration.class))
.withPropertyValues("debug=true").run(context -> {
assertThat(context).hasSingleBean(HttpClient.class);
assertThat(context).hasBean("gatewayHttpClient");
HttpClient httpClient = context.getBean(HttpClient.class);
/*
* FIXME: 2.1.0 HttpClientOptions options = httpClient.options();
*
* PoolResources poolResources = options.getPoolResources();
* assertThat(poolResources).isNotNull(); //TODO: howto test
* PoolResources
*
* ClientProxyOptions proxyOptions = options.getProxyOptions();
* assertThat(proxyOptions).isNull();
*
* SslContext sslContext = options.sslContext();
* assertThat(sslContext).isNull();
*/
});
}
@Test
public void autoConfigurationDisabledWhenSpringReactorIsActive() {
ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner()
.withConfiguration(
AutoConfigurations.of(XsuaaResourceServerJwkAutoConfiguration.class,
XsuaaAutoConfiguration.class));
contextRunner.run((context) -> {
assertThat(context.containsBean("xsuaaJwtDecoder"), is(false));
});
}
@Test
public void oauth2ContextConfiguredWithReactiveWebApp() {
new ReactiveWebApplicationContextRunner().withConfiguration(AutoConfigurations.of(this.configurations))
.withPropertyValues(this.oAuth2ClientProperties).run((context) -> {
assertServletOAuth2ContextConfigured(context);
assertReactiveOAuth2ContextConfigured(context);
});
}
@Test
public void oauth2ContextConfiguredWithReactiveWebAppNoServlet() {
new ReactiveWebApplicationContextRunner().withClassLoader(new FilteredClassLoader("javax.servlet"))
.withConfiguration(AutoConfigurations.of(this.configurations))
.withPropertyValues(this.oAuth2ClientProperties).run((context) -> {
assertServletOAuth2ContextNotConfigured(context);
assertReactiveOAuth2ContextConfigured(context);
});
}
@Test
public void testNonServletConfiguration() {
new ReactiveWebApplicationContextRunner().withConfiguration(
AutoConfigurations.of(
StackdriverLoggingAutoConfiguration.class,
GcpContextAutoConfiguration.class))
.run((context) -> assertThat(context
.getBeansOfType(TraceIdLoggingWebMvcInterceptor.class).size())
.isEqualTo(0));
}
@Test
public void reactiveEnvironment() {
ReactiveWebApplicationContextRunner reactiveContextRunner = new ReactiveWebApplicationContextRunner()
.withConfiguration(
AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
WebClientAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class));
reactiveContextRunner.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081")
.run((context) -> assertThat(context).hasSingleBean(ApplicationRegistrator.class));
}
@Test
public void nettyHttpClientConfigured() {
new ReactiveWebApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(WebFluxAutoConfiguration.class,
MetricsAutoConfiguration.class,
SimpleMetricsExportAutoConfiguration.class,
GatewayAutoConfiguration.class, HttpClientCustomizedConfig.class))
.withPropertyValues(
"spring.cloud.gateway.httpclient.ssl.use-insecure-trust-manager=true",
"spring.cloud.gateway.httpclient.connect-timeout=10",
"spring.cloud.gateway.httpclient.response-timeout=10s",
"spring.cloud.gateway.httpclient.pool.type=fixed",
// greather than integer max value
"spring.cloud.gateway.httpclient.max-initial-line-length=2147483647",
"spring.cloud.gateway.httpclient.proxy.host=myhost",
"spring.cloud.gateway.httpclient.websocket.max-frame-payload-length=1024")
.run(context -> {
assertThat(context).hasSingleBean(HttpClient.class);
HttpClient httpClient = context.getBean(HttpClient.class);
HttpClientProperties properties = context
.getBean(HttpClientProperties.class);
assertThat(properties.getMaxInitialLineLength().toBytes())
.isLessThanOrEqualTo(Integer.MAX_VALUE);
/*
* FIXME: 2.1.0 HttpClientOptions options = httpClient.options();
*
* PoolResources poolResources = options.getPoolResources();
* assertThat(poolResources).isNotNull(); //TODO: howto test
* PoolResources
*
* ClientProxyOptions proxyOptions = options.getProxyOptions();
* assertThat(proxyOptions).isNotNull();
* assertThat(proxyOptions.getAddress().get().getHostName()).isEqualTo
* ("myhost");
*
* SslContext sslContext = options.sslContext();
* assertThat(sslContext).isNotNull();
*/
// TODO: howto test SslContext
assertThat(context)
.hasSingleBean(ReactorNettyRequestUpgradeStrategy.class);
ReactorNettyRequestUpgradeStrategy upgradeStrategy = context
.getBean(ReactorNettyRequestUpgradeStrategy.class);
assertThat(upgradeStrategy.getMaxFramePayloadLength())
.isEqualTo(1024);
assertThat(upgradeStrategy.getHandlePing()).isTrue();
assertThat(context).hasSingleBean(ReactorNettyWebSocketClient.class);
ReactorNettyWebSocketClient webSocketClient = context
.getBean(ReactorNettyWebSocketClient.class);
assertThat(webSocketClient.getMaxFramePayloadLength())
.isEqualTo(1024);
HttpClientCustomizedConfig config = context
.getBean(HttpClientCustomizedConfig.class);
assertThat(config.called.get()).isTrue();
});
}
private ReactiveWebApplicationContextRunner webApplicationContextRunner() {
return new ReactiveWebApplicationContextRunner().withConfiguration(
AutoConfigurations.of(ApiVersionWebFluxAutoConfiguration.class,
ApiVersionWebMvcAutoConfiguration.class));
}
private ReactiveWebApplicationContextRunner webApplicationContextRunner() {
return new ReactiveWebApplicationContextRunner().withConfiguration(autoConfigurations());
}