Search in sources :

Example 6 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_unknownFilters.

@Test
public void parseHttpConnectionManager_unknownFilters() throws ResourceInvalidException {
    HttpConnectionManager hcm = HttpConnectionManager.newBuilder().addHttpFilters(HttpFilter.newBuilder().setName("envoy.filter.foo").setIsOptional(true)).addHttpFilters(HttpFilter.newBuilder().setName("envoy.filter.bar").setIsOptional(true)).build();
    thrown.expect(ResourceInvalidException.class);
    thrown.expectMessage("The last HttpFilter must be a terminal filter: envoy.filter.bar");
    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 7 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_faultConfigUnsupportedForServer.

@Test
public void parseHttpFilter_faultConfigUnsupportedForServer() {
    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();
    StructOrError<FilterConfig> config = ClientXdsClient.parseHttpFilter(httpFilter, filterRegistry, false);
    assertThat(config.getErrorDetail()).isEqualTo("HttpFilter [envoy.fault](" + FaultFilter.TYPE_URL + ") is required but " + "unsupported for server");
}
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 8 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_rbacConfigUnsupportedForClient.

@Test
public void parseHttpFilter_rbacConfigUnsupportedForClient() {
    filterRegistry.register(RbacFilter.INSTANCE);
    HttpFilter httpFilter = HttpFilter.newBuilder().setIsOptional(false).setName("envoy.auth").setTypedConfig(Any.pack(io.envoyproxy.envoy.extensions.filters.http.rbac.v3.RBAC.newBuilder().setRules(RBAC.newBuilder().setAction(Action.ALLOW).putPolicies("allow-all", Policy.newBuilder().addPrincipals(Principal.newBuilder().setAny(true)).addPermissions(Permission.newBuilder().setAny(true)).build()).build()).build())).build();
    StructOrError<FilterConfig> config = ClientXdsClient.parseHttpFilter(httpFilter, filterRegistry, true);
    assertThat(config.getErrorDetail()).isEqualTo("HttpFilter [envoy.auth](" + RbacFilter.TYPE_URL + ") is required but " + "unsupported for client");
}
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 9 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_unsupportedAndRequired.

@Test
public void parseHttpFilter_unsupportedAndRequired() {
    HttpFilter httpFilter = HttpFilter.newBuilder().setIsOptional(false).setName("unsupported.filter").setTypedConfig(Any.pack(StringValue.of("string value"))).build();
    assertThat(ClientXdsClient.parseHttpFilter(httpFilter, filterRegistry, true).getErrorDetail()).isEqualTo("HttpFilter [unsupported.filter]" + "(type.googleapis.com/google.protobuf.StringValue) is required but unsupported " + "for client");
}
Also used : HttpFilter(io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter) Test(org.junit.Test)

Example 10 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_rbacConfigForServer.

@Test
public void parseHttpFilter_rbacConfigForServer() {
    filterRegistry.register(RbacFilter.INSTANCE);
    HttpFilter httpFilter = HttpFilter.newBuilder().setIsOptional(false).setName("envoy.auth").setTypedConfig(Any.pack(io.envoyproxy.envoy.extensions.filters.http.rbac.v3.RBAC.newBuilder().setRules(RBAC.newBuilder().setAction(Action.ALLOW).putPolicies("allow-all", Policy.newBuilder().addPrincipals(Principal.newBuilder().setAny(true)).addPermissions(Permission.newBuilder().setAny(true)).build()).build()).build())).build();
    FilterConfig config = ClientXdsClient.parseHttpFilter(httpFilter, filterRegistry, false).getStruct();
    assertThat(config).isInstanceOf(RbacConfig.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)

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