@@ -4058,6 +4058,40 @@ public void disableServiceConfigLookUp_withDefaultConfig() throws Exception {
4058
4058
}
4059
4059
}
4060
4060
4061
+ @ Test
4062
+ public void disableServiceConfigLookUp_withDefaultConfig_withRetryThrottle () throws Exception {
4063
+ LoadBalancerRegistry .getDefaultRegistry ().register (mockLoadBalancerProvider );
4064
+ try {
4065
+ FakeNameResolverFactory nameResolverFactory =
4066
+ new FakeNameResolverFactory .Builder (expectedUri )
4067
+ .setServers (ImmutableList .of (addressGroup )).build ();
4068
+ channelBuilder .nameResolverFactory (nameResolverFactory );
4069
+ channelBuilder .disableServiceConfigLookUp ();
4070
+ channelBuilder .enableRetry ();
4071
+ Map <String , Object > defaultServiceConfig =
4072
+ parseConfig ("{"
4073
+ + "\" retryThrottling\" :{\" maxTokens\" : 1, \" tokenRatio\" : 1},"
4074
+ + "\" methodConfig\" :[{"
4075
+ + "\" name\" :[{\" service\" :\" SimpleService1\" }],"
4076
+ + "\" waitForReady\" :true"
4077
+ + "}]}" );
4078
+ channelBuilder .defaultServiceConfig (defaultServiceConfig );
4079
+
4080
+ createChannel ();
4081
+
4082
+ ArgumentCaptor <ResolvedAddresses > resultCaptor =
4083
+ ArgumentCaptor .forClass (ResolvedAddresses .class );
4084
+ verify (mockLoadBalancer ).acceptResolvedAddresses (resultCaptor .capture ());
4085
+ assertThat (resultCaptor .getValue ().getAddresses ()).containsExactly (addressGroup );
4086
+ assertThat (resultCaptor .getValue ().getAttributes ().get (InternalConfigSelector .KEY )).isNull ();
4087
+ verify (mockLoadBalancer , never ()).handleNameResolutionError (any (Status .class ));
4088
+ assertThat (channel .hasThrottle ()).isTrue ();
4089
+
4090
+ } finally {
4091
+ LoadBalancerRegistry .getDefaultRegistry ().deregister (mockLoadBalancerProvider );
4092
+ }
4093
+ }
4094
+
4061
4095
@ Test
4062
4096
public void enableServiceConfigLookUp_noDefaultConfig () throws Exception {
4063
4097
LoadBalancerRegistry .getDefaultRegistry ().register (mockLoadBalancerProvider );
@@ -4165,6 +4199,39 @@ public void enableServiceConfigLookUp_resolverReturnsNoConfig_withDefaultConfig(
4165
4199
}
4166
4200
}
4167
4201
4202
+
4203
+ @ Test
4204
+ public void enableServiceConfigLookUp_usingDefaultConfig_withRetryThrottling () throws Exception {
4205
+ LoadBalancerRegistry .getDefaultRegistry ().register (mockLoadBalancerProvider );
4206
+ try {
4207
+ FakeNameResolverFactory nameResolverFactory =
4208
+ new FakeNameResolverFactory .Builder (expectedUri )
4209
+ .setServers (ImmutableList .of (addressGroup )).build ();
4210
+ channelBuilder .nameResolverFactory (nameResolverFactory );
4211
+ channelBuilder .enableRetry ();
4212
+ Map <String , Object > defaultServiceConfig =
4213
+ parseConfig ("{"
4214
+ + "\" retryThrottling\" :{\" maxTokens\" : 1, \" tokenRatio\" : 1},"
4215
+ + "\" methodConfig\" :[{"
4216
+ + "\" name\" :[{\" service\" :\" SimpleService1\" }],"
4217
+ + "\" waitForReady\" :true"
4218
+ + "}]}" );
4219
+ channelBuilder .defaultServiceConfig (defaultServiceConfig );
4220
+
4221
+ createChannel ();
4222
+
4223
+ ArgumentCaptor <ResolvedAddresses > resultCaptor =
4224
+ ArgumentCaptor .forClass (ResolvedAddresses .class );
4225
+ verify (mockLoadBalancer ).acceptResolvedAddresses (resultCaptor .capture ());
4226
+ assertThat (resultCaptor .getValue ().getAddresses ()).containsExactly (addressGroup );
4227
+ assertThat (resultCaptor .getValue ().getAttributes ().get (InternalConfigSelector .KEY )).isNull ();
4228
+ verify (mockLoadBalancer , never ()).handleNameResolutionError (any (Status .class ));
4229
+ assertThat (channel .hasThrottle ()).isTrue ();
4230
+ } finally {
4231
+ LoadBalancerRegistry .getDefaultRegistry ().deregister (mockLoadBalancerProvider );
4232
+ }
4233
+ }
4234
+
4168
4235
@ Test
4169
4236
public void enableServiceConfigLookUp_resolverReturnsNoConfig_noDefaultConfig () {
4170
4237
LoadBalancerRegistry .getDefaultRegistry ().register (mockLoadBalancerProvider );
0 commit comments