@@ -216,6 +216,39 @@ describe('Retries', () => {
216
216
}
217
217
) ;
218
218
} ) ;
219
+
220
+ it ( 'Should not be able to make more than 5 attempts' , ( done ) => {
221
+ const serviceConfig = {
222
+ loadBalancingConfig : [ ] ,
223
+ methodConfig : [
224
+ {
225
+ name : [ {
226
+ service : 'EchoService'
227
+ } ] ,
228
+ retryPolicy : {
229
+ maxAttempts : 10 ,
230
+ initialBackoff : '0.1s' ,
231
+ maxBackoff : '10s' ,
232
+ backoffMultiplier : 1.2 ,
233
+ retryableStatusCodes : [ 14 , 'RESOURCE_EXHAUSTED' ]
234
+ }
235
+ }
236
+ ]
237
+ }
238
+ const client2 = new EchoService ( `localhost:${ port } ` , grpc . credentials . createInsecure ( ) , { 'grpc.service_config' : JSON . stringify ( serviceConfig ) } ) ;
239
+ const metadata = new grpc . Metadata ( ) ;
240
+ metadata . set ( 'succeed-on-retry-attempt' , '6' ) ;
241
+ metadata . set ( 'respond-with-status' , `${ grpc . status . RESOURCE_EXHAUSTED } ` ) ;
242
+ client2 . echo (
243
+ { value : 'test value' , value2 : 3 } ,
244
+ metadata ,
245
+ ( error : grpc . ServiceError , response : any ) => {
246
+ assert ( error ) ;
247
+ assert . strictEqual ( error . details , 'Failed on retry 4' ) ;
248
+ done ( ) ;
249
+ }
250
+ ) ;
251
+ } )
219
252
} ) ;
220
253
221
254
describe ( 'Client with hedging configured' , ( ) => {
@@ -297,5 +330,35 @@ describe('Retries', () => {
297
330
}
298
331
) ;
299
332
} ) ;
333
+
334
+ it ( 'Should not be able to make more than 5 attempts' , ( done ) => {
335
+ const serviceConfig = {
336
+ loadBalancingConfig : [ ] ,
337
+ methodConfig : [
338
+ {
339
+ name : [ {
340
+ service : 'EchoService'
341
+ } ] ,
342
+ hedgingPolicy : {
343
+ maxAttempts : 10 ,
344
+ nonFatalStatusCodes : [ 14 , 'RESOURCE_EXHAUSTED' ]
345
+ }
346
+ }
347
+ ]
348
+ }
349
+ const client2 = new EchoService ( `localhost:${ port } ` , grpc . credentials . createInsecure ( ) , { 'grpc.service_config' : JSON . stringify ( serviceConfig ) } ) ;
350
+ const metadata = new grpc . Metadata ( ) ;
351
+ metadata . set ( 'succeed-on-retry-attempt' , '6' ) ;
352
+ metadata . set ( 'respond-with-status' , `${ grpc . status . RESOURCE_EXHAUSTED } ` ) ;
353
+ client2 . echo (
354
+ { value : 'test value' , value2 : 3 } ,
355
+ metadata ,
356
+ ( error : grpc . ServiceError , response : any ) => {
357
+ assert ( error ) ;
358
+ assert ( error . details . startsWith ( 'Failed on retry' ) ) ;
359
+ done ( ) ;
360
+ }
361
+ ) ;
362
+ } )
300
363
} ) ;
301
364
} ) ;
0 commit comments