Search in sources :

Example 11 with HttpFilter

use of io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter in project grpc-java by grpc.

the class ClientXdsClientDataTest method parseHttpFilter_unsupportedButOptional.

@Test
public void parseHttpFilter_unsupportedButOptional() {
    HttpFilter httpFilter = HttpFilter.newBuilder().setIsOptional(true).setTypedConfig(Any.pack(StringValue.of("unsupported"))).build();
    assertThat(ClientXdsClient.parseHttpFilter(httpFilter, filterRegistry, true)).isNull();
}
Also used : HttpFilter(io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter) Test(org.junit.Test)

Example 12 with HttpFilter

use of io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter in project grpc-java by grpc.

the class ClientXdsClientDataTest method parseHttpFilter_routerFilterForServer.

@Test
public void parseHttpFilter_routerFilterForServer() {
    filterRegistry.register(RouterFilter.INSTANCE);
    HttpFilter httpFilter = HttpFilter.newBuilder().setIsOptional(false).setName("envoy.router").setTypedConfig(Any.pack(Router.getDefaultInstance())).build();
    FilterConfig config = ClientXdsClient.parseHttpFilter(httpFilter, filterRegistry, false).getStruct();
    assertThat(config.typeUrl()).isEqualTo(RouterFilter.TYPE_URL);
}
Also used : HttpFilter(io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter) FilterConfig(io.grpc.xds.Filter.FilterConfig) Test(org.junit.Test)

Example 13 with HttpFilter

use of io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter in project grpc-java by grpc.

the class ClientXdsClientDataTest method parseHttpFilter_faultConfigForClient.

@Test
public void parseHttpFilter_faultConfigForClient() {
    filterRegistry.register(FaultFilter.INSTANCE);
    HttpFilter httpFilter = HttpFilter.newBuilder().setIsOptional(false).setName("envoy.fault").setTypedConfig(Any.pack(HTTPFault.newBuilder().setDelay(FaultDelay.newBuilder().setFixedDelay(Durations.fromNanos(1234L))).setAbort(FaultAbort.newBuilder().setHttpStatus(300).setPercentage(FractionalPercent.newBuilder().setNumerator(10).setDenominator(DenominatorType.HUNDRED))).build())).build();
    FilterConfig config = ClientXdsClient.parseHttpFilter(httpFilter, filterRegistry, true).getStruct();
    assertThat(config).isInstanceOf(FaultConfig.class);
}
Also used : HttpFilter(io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter) FilterConfig(io.grpc.xds.Filter.FilterConfig) Test(org.junit.Test)

Example 14 with HttpFilter

use of io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter in project grpc-java by grpc.

the class ClientXdsClientDataTest method parseHttpConnectionManager_duplicateHttpFilters.

@Test
public void parseHttpConnectionManager_duplicateHttpFilters() throws ResourceInvalidException {
    HttpConnectionManager hcm = HttpConnectionManager.newBuilder().addHttpFilters(HttpFilter.newBuilder().setName("envoy.filter.foo").setIsOptional(true)).addHttpFilters(HttpFilter.newBuilder().setName("envoy.filter.foo").setIsOptional(true)).addHttpFilters(HttpFilter.newBuilder().setName("terminal").setTypedConfig(Any.pack(Router.newBuilder().build())).setIsOptional(true)).build();
    thrown.expect(ResourceInvalidException.class);
    thrown.expectMessage("HttpConnectionManager contains duplicate HttpFilter: envoy.filter.foo");
    ClientXdsClient.parseHttpConnectionManager(hcm, new HashSet<String>(), filterRegistry, true, /* parseHttpFilter */
    true);
}
Also used : HttpConnectionManager(io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager) Test(org.junit.Test)

Example 15 with HttpFilter

use of io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter in project grpc-java by grpc.

the class ClientXdsClientDataTest method parseHttpConnectionManager_terminalNotLast.

@Test
public void parseHttpConnectionManager_terminalNotLast() throws ResourceInvalidException {
    filterRegistry.register(RouterFilter.INSTANCE);
    HttpConnectionManager hcm = HttpConnectionManager.newBuilder().addHttpFilters(HttpFilter.newBuilder().setName("terminal").setTypedConfig(Any.pack(Router.newBuilder().build())).setIsOptional(true)).addHttpFilters(HttpFilter.newBuilder().setName("envoy.filter.foo").setIsOptional(true)).build();
    thrown.expect(ResourceInvalidException.class);
    thrown.expectMessage("A terminal HttpFilter must be the last filter: terminal");
    ClientXdsClient.parseHttpConnectionManager(hcm, new HashSet<String>(), filterRegistry, true, /* parseHttpFilter */
    true);
}
Also used : HttpConnectionManager(io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)14 HttpFilter (io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter)11 FilterConfig (io.grpc.xds.Filter.FilterConfig)8 HttpConnectionManager (io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager)5 TypedStruct (com.github.udpa.udpa.type.v1.TypedStruct)1 VisibleForTesting (com.google.common.annotations.VisibleForTesting)1 Struct (com.google.protobuf.Struct)1 HttpProtocolOptions (io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions)1 ApiListener (io.envoyproxy.envoy.config.listener.v3.ApiListener)1 Filter (io.envoyproxy.envoy.config.listener.v3.Filter)1 FilterChain (io.envoyproxy.envoy.config.listener.v3.FilterChain)1 FilterChainMatch (io.envoyproxy.envoy.config.listener.v3.FilterChainMatch)1 Listener (io.envoyproxy.envoy.config.listener.v3.Listener)1 RouteConfiguration (io.envoyproxy.envoy.config.route.v3.RouteConfiguration)1 VirtualHost (io.envoyproxy.envoy.config.route.v3.VirtualHost)1 Rds (io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.Rds)1 LbEndpoint (io.grpc.xds.Endpoints.LbEndpoint)1 NamedFilterConfig (io.grpc.xds.Filter.NamedFilterConfig)1 HashSet (java.util.HashSet)1