Search in sources :

Example 36 with ConfigOrError

use of io.grpc.NameResolver.ConfigOrError in project grpc-java by grpc.

the class RingHashLoadBalancerProviderTest method parseLoadBalancingConfig_minRingSizeGreaterThanMaxRingSize.

@Test
public void parseLoadBalancingConfig_minRingSizeGreaterThanMaxRingSize() throws IOException {
    String lbConfig = "{\"minRingSize\" : 100, \"maxRingSize\" : 10}";
    ConfigOrError configOrError = provider.parseLoadBalancingPolicyConfig(parseJsonObject(lbConfig));
    assertThat(configOrError.getError()).isNotNull();
    assertThat(configOrError.getError().getCode()).isEqualTo(Code.INVALID_ARGUMENT);
    assertThat(configOrError.getError().getDescription()).isEqualTo("Invalid 'mingRingSize'/'maxRingSize'");
}
Also used : ConfigOrError(io.grpc.NameResolver.ConfigOrError) Test(org.junit.Test)

Example 37 with ConfigOrError

use of io.grpc.NameResolver.ConfigOrError in project grpc-java by grpc.

the class WeightedTargetLoadBalancerProviderTest method parseWeightedTargetConfig.

@Test
public void parseWeightedTargetConfig() throws Exception {
    LoadBalancerRegistry lbRegistry = new LoadBalancerRegistry();
    WeightedTargetLoadBalancerProvider weightedTargetLoadBalancerProvider = new WeightedTargetLoadBalancerProvider(lbRegistry);
    final Object fooConfig = new Object();
    LoadBalancerProvider lbProviderFoo = new LoadBalancerProvider() {

        @Override
        public boolean isAvailable() {
            return true;
        }

        @Override
        public int getPriority() {
            return 5;
        }

        @Override
        public String getPolicyName() {
            return "foo_policy";
        }

        @Override
        public LoadBalancer newLoadBalancer(Helper helper) {
            return mock(LoadBalancer.class);
        }

        @Override
        public ConfigOrError parseLoadBalancingPolicyConfig(Map<String, ?> rawConfig) {
            return ConfigOrError.fromConfig(fooConfig);
        }
    };
    final Object barConfig = new Object();
    LoadBalancerProvider lbProviderBar = new LoadBalancerProvider() {

        @Override
        public boolean isAvailable() {
            return true;
        }

        @Override
        public int getPriority() {
            return 5;
        }

        @Override
        public String getPolicyName() {
            return "bar_policy";
        }

        @Override
        public LoadBalancer newLoadBalancer(Helper helper) {
            return mock(LoadBalancer.class);
        }

        @Override
        public ConfigOrError parseLoadBalancingPolicyConfig(Map<String, ?> rawConfig) {
            return ConfigOrError.fromConfig(barConfig);
        }
    };
    lbRegistry.register(lbProviderFoo);
    lbRegistry.register(lbProviderBar);
    String weightedTargetConfigJson = ("{" + "  'targets' : {" + "    'target_1' : {" + "      'weight' : 10," + "      'childPolicy' : [" + "        {'unsupported_policy' : {}}," + "        {'foo_policy' : {}}" + "      ]" + "    }," + "    'target_2' : {" + "      'weight' : 20," + "      'childPolicy' : [" + "        {'unsupported_policy' : {}}," + "        {'bar_policy' : {}}" + "      ]" + "    }" + "  }" + "}").replace('\'', '"');
    @SuppressWarnings("unchecked") Map<String, ?> rawLbConfigMap = (Map<String, ?>) JsonParser.parse(weightedTargetConfigJson);
    ConfigOrError parsedConfig = weightedTargetLoadBalancerProvider.parseLoadBalancingPolicyConfig(rawLbConfigMap);
    ConfigOrError expectedConfig = ConfigOrError.fromConfig(new WeightedTargetConfig(ImmutableMap.of("target_1", new WeightedPolicySelection(10, new PolicySelection(lbProviderFoo, fooConfig)), "target_2", new WeightedPolicySelection(20, new PolicySelection(lbProviderBar, barConfig)))));
    assertThat(parsedConfig).isEqualTo(expectedConfig);
}
Also used : WeightedTargetConfig(io.grpc.xds.WeightedTargetLoadBalancerProvider.WeightedTargetConfig) LoadBalancerRegistry(io.grpc.LoadBalancerRegistry) WeightedPolicySelection(io.grpc.xds.WeightedTargetLoadBalancerProvider.WeightedPolicySelection) PolicySelection(io.grpc.internal.ServiceConfigUtil.PolicySelection) Helper(io.grpc.LoadBalancer.Helper) LoadBalancerProvider(io.grpc.LoadBalancerProvider) ConfigOrError(io.grpc.NameResolver.ConfigOrError) WeightedPolicySelection(io.grpc.xds.WeightedTargetLoadBalancerProvider.WeightedPolicySelection) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map) Test(org.junit.Test)

Example 38 with ConfigOrError

use of io.grpc.NameResolver.ConfigOrError in project grpc-java by grpc.

the class DnsNameResolverTest method parseServiceConfig_capturesChoiceError.

@Test
public void parseServiceConfig_capturesChoiceError() {
    ConfigOrError result = DnsNameResolver.parseServiceConfig(Arrays.asList("grpc_config=[{\"hi\":{}}]"), new Random(), "localhost");
    assertThat(result).isNotNull();
    assertThat(result.getError().getCode()).isEqualTo(Status.Code.UNKNOWN);
    assertThat(result.getError().getDescription()).contains("failed to pick");
}
Also used : Random(java.util.Random) ConfigOrError(io.grpc.NameResolver.ConfigOrError) Test(org.junit.Test)

Example 39 with ConfigOrError

use of io.grpc.NameResolver.ConfigOrError in project grpc-java by grpc.

the class AutoConfiguredLoadBalancerFactoryTest method parseLoadBalancerConfig_policyShouldBeIgnoredIfConfigExists.

@Test
public void parseLoadBalancerConfig_policyShouldBeIgnoredIfConfigExists() throws Exception {
    Map<String, ?> serviceConfig = parseConfig("{\"loadBalancingConfig\": [{\"round_robin\": {} } ]," + "\"loadBalancingPolicy\": \"pick_first\" }");
    ConfigOrError parsed = lbf.parseLoadBalancerPolicy(serviceConfig);
    assertThat(parsed).isNotNull();
    assertThat(parsed.getError()).isNull();
    assertThat(parsed.getConfig()).isInstanceOf(PolicySelection.class);
    assertThat(((PolicySelection) parsed.getConfig()).provider.getClass().getName()).isEqualTo("io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider");
}
Also used : ConfigOrError(io.grpc.NameResolver.ConfigOrError) PolicySelection(io.grpc.internal.ServiceConfigUtil.PolicySelection) Test(org.junit.Test)

Example 40 with ConfigOrError

use of io.grpc.NameResolver.ConfigOrError in project grpc-java by grpc.

the class AutoConfiguredLoadBalancerFactoryTest method parseLoadBalancerConfig_multipleValidPolicies.

@Test
public void parseLoadBalancerConfig_multipleValidPolicies() throws Exception {
    Map<String, ?> serviceConfig = parseConfig("{\"loadBalancingConfig\": [" + "{\"round_robin\": {}}," + "{\"test_lb\": {} } ] }");
    ConfigOrError parsed = lbf.parseLoadBalancerPolicy(serviceConfig);
    assertThat(parsed).isNotNull();
    assertThat(parsed.getError()).isNull();
    assertThat(parsed.getConfig()).isInstanceOf(PolicySelection.class);
    assertThat(((PolicySelection) parsed.getConfig()).provider.getClass().getName()).isEqualTo("io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider");
}
Also used : ConfigOrError(io.grpc.NameResolver.ConfigOrError) PolicySelection(io.grpc.internal.ServiceConfigUtil.PolicySelection) Test(org.junit.Test)

Aggregations

ConfigOrError (io.grpc.NameResolver.ConfigOrError)57 Test (org.junit.Test)52 PolicySelection (io.grpc.internal.ServiceConfigUtil.PolicySelection)10 EquivalentAddressGroup (io.grpc.EquivalentAddressGroup)9 Helper (io.grpc.LoadBalancer.Helper)9 Status (io.grpc.Status)9 AutoConfiguredLoadBalancer (io.grpc.internal.AutoConfiguredLoadBalancerFactory.AutoConfiguredLoadBalancer)7 ForwardingLoadBalancerHelper (io.grpc.util.ForwardingLoadBalancerHelper)7 Map (java.util.Map)7 InetSocketAddress (java.net.InetSocketAddress)6 SocketAddress (java.net.SocketAddress)4 Random (java.util.Random)4 CreateSubchannelArgs (io.grpc.LoadBalancer.CreateSubchannelArgs)3 ResolvedAddresses (io.grpc.LoadBalancer.ResolvedAddresses)3 LoadBalancerProvider (io.grpc.LoadBalancerProvider)3 LoadBalancerRegistry (io.grpc.LoadBalancerRegistry)3 LeastRequestConfig (io.grpc.xds.LeastRequestLoadBalancer.LeastRequestConfig)3 LbConfig (io.grpc.internal.ServiceConfigUtil.LbConfig)2 RingHashConfig (io.grpc.xds.RingHashLoadBalancer.RingHashConfig)2 LinkedHashMap (java.util.LinkedHashMap)2