Search in sources :

Example 1 with RouteLookupConfig

use of io.grpc.rls.RlsProtoData.RouteLookupConfig in project grpc-java by grpc.

the class RlsProtoConvertersTest method convert_jsonRlsConfig.

@Test
public void convert_jsonRlsConfig() throws IOException {
    String jsonStr = "{\n" + "  \"grpcKeyBuilders\": [\n" + "    {\n" + "      \"names\": [\n" + "        {\n" + "          \"service\": \"service1\",\n" + "          \"method\": \"create\"\n" + "        }\n" + "      ],\n" + "      \"headers\": [\n" + "        {\n" + "          \"key\": \"user\"," + "          \"names\": [\"User\", \"Parent\"],\n" + "          \"optional\": true\n" + "        },\n" + "        {\n" + "          \"key\": \"id\"," + "          \"names\": [\"X-Google-Id\"],\n" + "          \"optional\": true\n" + "        }\n" + "      ]\n" + "    },\n" + "    {\n" + "      \"names\": [\n" + "        {\n" + "          \"service\": \"service1\",\n" + "          \"method\": \"*\"\n" + "        }\n" + "      ],\n" + "      \"headers\": [\n" + "        {\n" + "          \"key\": \"user\"," + "          \"names\": [\"User\", \"Parent\"],\n" + "          \"optional\": true\n" + "        },\n" + "        {\n" + "          \"key\": \"password\"," + "          \"names\": [\"Password\"],\n" + "          \"optional\": true\n" + "        }\n" + "      ]\n" + "    },\n" + "    {\n" + "      \"names\": [\n" + "        {\n" + "          \"service\": \"service3\",\n" + "          \"method\": \"*\"\n" + "        }\n" + "      ],\n" + "      \"headers\": [" + "        {\n" + "          \"key\": \"user\"," + "          \"names\": [\"User\", \"Parent\"],\n" + "          \"optional\": true\n" + "        }\n" + "      ],\n" + "      \"extraKeys\": {\n" + "        \"host\": \"host-key\",\n" + "        \"service\": \"service-key\",\n" + "        \"method\": \"method-key\"\n" + "      }, \n" + "      \"constantKeys\": {\n" + "        \"constKey1\": \"value1\"\n" + "      }\n" + "    }\n" + "  ],\n" + "  \"lookupService\": \"service1\",\n" + "  \"lookupServiceTimeout\": \"2s\",\n" + "  \"maxAge\": \"300s\",\n" + "  \"staleAge\": \"240s\",\n" + "  \"validTargets\": [\"a valid target\"]," + "  \"cacheSizeBytes\": \"1000\",\n" + "  \"defaultTarget\": \"us_east_1.cloudbigtable.googleapis.com\"\n" + "}";
    RouteLookupConfig expectedConfig = RouteLookupConfig.builder().grpcKeyBuilders(ImmutableList.of(GrpcKeyBuilder.create(ImmutableList.of(Name.create("service1", "create")), ImmutableList.of(NameMatcher.create("user", ImmutableList.of("User", "Parent")), NameMatcher.create("id", ImmutableList.of("X-Google-Id"))), ExtraKeys.DEFAULT, ImmutableMap.<String, String>of()), GrpcKeyBuilder.create(ImmutableList.of(Name.create("service1", "*")), ImmutableList.of(NameMatcher.create("user", ImmutableList.of("User", "Parent")), NameMatcher.create("password", ImmutableList.of("Password"))), ExtraKeys.DEFAULT, ImmutableMap.<String, String>of()), GrpcKeyBuilder.create(ImmutableList.of(Name.create("service3", "*")), ImmutableList.of(NameMatcher.create("user", ImmutableList.of("User", "Parent"))), ExtraKeys.create("host-key", "service-key", "method-key"), ImmutableMap.of("constKey1", "value1")))).lookupService("service1").lookupServiceTimeoutInNanos(TimeUnit.SECONDS.toNanos(2)).maxAgeInNanos(TimeUnit.SECONDS.toNanos(300)).staleAgeInNanos(TimeUnit.SECONDS.toNanos(240)).cacheSizeBytes(1000).defaultTarget("us_east_1.cloudbigtable.googleapis.com").build();
    RouteLookupConfigConverter converter = new RouteLookupConfigConverter();
    @SuppressWarnings("unchecked") Map<String, ?> parsedJson = (Map<String, ?>) JsonParser.parse(jsonStr);
    RouteLookupConfig converted = converter.convert(parsedJson);
    assertThat(converted).isEqualTo(expectedConfig);
}
Also used : RouteLookupConfig(io.grpc.rls.RlsProtoData.RouteLookupConfig) RouteLookupConfigConverter(io.grpc.rls.RlsProtoConverters.RouteLookupConfigConverter) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map) Test(org.junit.Test)

Example 2 with RouteLookupConfig

use of io.grpc.rls.RlsProtoData.RouteLookupConfig in project grpc-java by grpc.

the class RlsProtoConvertersTest method convert_jsonRlsConfig_defaultValues.

@Test
public void convert_jsonRlsConfig_defaultValues() throws IOException {
    String jsonStr = "{\n" + "  \"grpcKeyBuilders\": [\n" + "    {\n" + "      \"names\": [\n" + "        {\n" + "          \"service\": \"service1\"\n" + "        }\n" + "      ]\n" + "    }\n" + "  ],\n" + "  \"lookupService\": \"service1\",\n" + "  \"validTargets\": [\"a valid target\"]," + "  \"defaultTarget\": \"us_east_1.cloudbigtable.googleapis.com\"\n" + "}";
    RouteLookupConfig expectedConfig = RouteLookupConfig.builder().grpcKeyBuilders(ImmutableList.of(GrpcKeyBuilder.create(ImmutableList.of(Name.create("service1", null)), ImmutableList.<NameMatcher>of(), ExtraKeys.DEFAULT, ImmutableMap.<String, String>of()))).lookupService("service1").lookupServiceTimeoutInNanos(TimeUnit.SECONDS.toNanos(10)).maxAgeInNanos(TimeUnit.MINUTES.toNanos(5)).staleAgeInNanos(TimeUnit.MINUTES.toNanos(5)).cacheSizeBytes(5 * 1024 * 1024).defaultTarget("us_east_1.cloudbigtable.googleapis.com").build();
    RouteLookupConfigConverter converter = new RouteLookupConfigConverter();
    @SuppressWarnings("unchecked") Map<String, ?> parsedJson = (Map<String, ?>) JsonParser.parse(jsonStr);
    RouteLookupConfig converted = converter.convert(parsedJson);
    assertThat(converted).isEqualTo(expectedConfig);
}
Also used : RouteLookupConfig(io.grpc.rls.RlsProtoData.RouteLookupConfig) NameMatcher(io.grpc.rls.RlsProtoData.NameMatcher) RouteLookupConfigConverter(io.grpc.rls.RlsProtoConverters.RouteLookupConfigConverter) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map) Test(org.junit.Test)

Example 3 with RouteLookupConfig

use of io.grpc.rls.RlsProtoData.RouteLookupConfig in project grpc-java by grpc.

the class RlsProtoConvertersTest method convert_jsonRlsConfig_staleAgeCappedByMaxAge.

@Test
public void convert_jsonRlsConfig_staleAgeCappedByMaxAge() throws IOException {
    String jsonStr = "{\n" + "  \"grpcKeyBuilders\": [\n" + "    {\n" + "      \"names\": [\n" + "        {\n" + "          \"service\": \"service1\",\n" + "          \"method\": \"create\"\n" + "        }\n" + "      ],\n" + "      \"headers\": [\n" + "        {\n" + "          \"key\": \"user\"," + "          \"names\": [\"User\", \"Parent\"],\n" + "          \"optional\": true\n" + "        },\n" + "        {\n" + "          \"key\": \"id\"," + "          \"names\": [\"X-Google-Id\"],\n" + "          \"optional\": true\n" + "        }\n" + "      ]\n" + "    }\n" + "  ],\n" + "  \"lookupService\": \"service1\",\n" + "  \"lookupServiceTimeout\": \"2s\",\n" + "  \"maxAge\": \"300s\",\n" + "  \"staleAge\": \"400s\",\n" + "  \"validTargets\": [\"a valid target\"]," + "  \"cacheSizeBytes\": \"1000\",\n" + "  \"defaultTarget\": \"us_east_1.cloudbigtable.googleapis.com\"\n" + "}";
    RouteLookupConfig expectedConfig = RouteLookupConfig.builder().grpcKeyBuilders(ImmutableList.of(GrpcKeyBuilder.create(ImmutableList.of(Name.create("service1", "create")), ImmutableList.of(NameMatcher.create("user", ImmutableList.of("User", "Parent")), NameMatcher.create("id", ImmutableList.of("X-Google-Id"))), ExtraKeys.DEFAULT, ImmutableMap.<String, String>of()))).lookupService("service1").lookupServiceTimeoutInNanos(TimeUnit.SECONDS.toNanos(2)).maxAgeInNanos(TimeUnit.SECONDS.toNanos(300)).staleAgeInNanos(TimeUnit.SECONDS.toNanos(300)).cacheSizeBytes(1000).defaultTarget("us_east_1.cloudbigtable.googleapis.com").build();
    RouteLookupConfigConverter converter = new RouteLookupConfigConverter();
    @SuppressWarnings("unchecked") Map<String, ?> parsedJson = (Map<String, ?>) JsonParser.parse(jsonStr);
    RouteLookupConfig converted = converter.convert(parsedJson);
    assertThat(converted).isEqualTo(expectedConfig);
}
Also used : RouteLookupConfig(io.grpc.rls.RlsProtoData.RouteLookupConfig) RouteLookupConfigConverter(io.grpc.rls.RlsProtoConverters.RouteLookupConfigConverter) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map) Test(org.junit.Test)

Example 4 with RouteLookupConfig

use of io.grpc.rls.RlsProtoData.RouteLookupConfig in project grpc-java by grpc.

the class RlsLoadBalancerProvider method parseLoadBalancingPolicyConfig.

@Override
public ConfigOrError parseLoadBalancingPolicyConfig(Map<String, ?> rawLoadBalancingConfigPolicy) {
    try {
        RouteLookupConfig routeLookupConfig = new RouteLookupConfigConverter().convert(JsonUtil.getObject(rawLoadBalancingConfigPolicy, "routeLookupConfig"));
        Map<String, ?> routeLookupChannelServiceConfig = JsonUtil.getObject(rawLoadBalancingConfigPolicy, "routeLookupChannelServiceConfig");
        ChildLoadBalancingPolicy lbPolicy = ChildLoadBalancingPolicy.create(JsonUtil.getString(rawLoadBalancingConfigPolicy, "childPolicyConfigTargetFieldName"), JsonUtil.checkObjectList(checkNotNull(JsonUtil.getList(rawLoadBalancingConfigPolicy, "childPolicy"))));
        return ConfigOrError.fromConfig(new LbPolicyConfiguration(routeLookupConfig, routeLookupChannelServiceConfig, lbPolicy));
    } catch (Exception e) {
        return ConfigOrError.fromError(Status.INVALID_ARGUMENT.withDescription("can't parse config: " + e.getMessage()).withCause(e));
    }
}
Also used : ChildLoadBalancingPolicy(io.grpc.rls.LbPolicyConfiguration.ChildLoadBalancingPolicy) RouteLookupConfig(io.grpc.rls.RlsProtoData.RouteLookupConfig) RouteLookupConfigConverter(io.grpc.rls.RlsProtoConverters.RouteLookupConfigConverter)

Aggregations

RouteLookupConfigConverter (io.grpc.rls.RlsProtoConverters.RouteLookupConfigConverter)4 RouteLookupConfig (io.grpc.rls.RlsProtoData.RouteLookupConfig)4 ImmutableMap (com.google.common.collect.ImmutableMap)3 Map (java.util.Map)3 Test (org.junit.Test)3 ChildLoadBalancingPolicy (io.grpc.rls.LbPolicyConfiguration.ChildLoadBalancingPolicy)1 NameMatcher (io.grpc.rls.RlsProtoData.NameMatcher)1