@@ -345,6 +345,120 @@ registry, new Configuration(), NAMESPACE, NAME, HOST),
345
345
.isEqualTo (1000L );
346
346
}
347
347
348
+ @ Test
349
+ void shouldTrackResponseAsSlowResponseAboveThreshold () {
350
+ // Given
351
+ long [] currentTime = {0L };
352
+ kubernetesClientMetrics =
353
+ new KubernetesClientMetrics (
354
+ KubernetesOperatorMetricGroup .create (
355
+ registry , new Configuration (), NAMESPACE , NAME , HOST ),
356
+ FlinkOperatorConfiguration .fromConfiguration (operatorConfig ),
357
+ () -> currentTime [0 ]);
358
+ final HttpRequest postRequest =
359
+ builder .post ("application/json" , "{}" ).uri ("/random" ).build ();
360
+ kubernetesClientMetrics .before (builder , postRequest , emptyTags );
361
+ assertThat (kubernetesClientMetrics .getSlowRequestCounter ())
362
+ .extracting (Counter ::getCount )
363
+ .isEqualTo (0L );
364
+ currentTime [0 ] += kubernetesClientMetrics .getSlowRequestThreshold ().toNanos () + 1L ;
365
+
366
+ // When
367
+ kubernetesClientMetrics .after (
368
+ postRequest ,
369
+ new StubHttpResponse (postRequest , Map .of (), 200 ),
370
+ (value , asyncBody ) -> {});
371
+
372
+ // Then
373
+ assertThat (kubernetesClientMetrics .getSlowRequestCounter ())
374
+ .extracting (Counter ::getCount )
375
+ .isEqualTo (1L );
376
+ }
377
+
378
+ @ Test
379
+ void shouldNotTrackResponseAsSlowResponseBelowThreshold () {
380
+ // Given
381
+ long [] currentTime = {0L };
382
+ kubernetesClientMetrics =
383
+ new KubernetesClientMetrics (
384
+ KubernetesOperatorMetricGroup .create (
385
+ registry , new Configuration (), NAMESPACE , NAME , HOST ),
386
+ FlinkOperatorConfiguration .fromConfiguration (operatorConfig ),
387
+ () -> currentTime [0 ]);
388
+ final HttpRequest postRequest =
389
+ builder .post ("application/json" , "{}" ).uri ("/random" ).build ();
390
+ kubernetesClientMetrics .before (builder , postRequest , emptyTags );
391
+ assertThat (kubernetesClientMetrics .getSlowRequestCounter ())
392
+ .extracting (Counter ::getCount )
393
+ .isEqualTo (0L );
394
+ currentTime [0 ] += kubernetesClientMetrics .getSlowRequestThreshold ().toNanos () - 1L ;
395
+
396
+ // When
397
+ kubernetesClientMetrics .after (
398
+ postRequest ,
399
+ new StubHttpResponse (postRequest , Map .of (), 200 ),
400
+ (value , asyncBody ) -> {});
401
+
402
+ // Then
403
+ assertThat (kubernetesClientMetrics .getSlowRequestCounter ())
404
+ .extracting (Counter ::getCount )
405
+ .isEqualTo (0L );
406
+ }
407
+
408
+ @ Test
409
+ void shouldTrackResponseForFailedConnectionAsSlowResponseAboveThreshold () {
410
+ // Given
411
+ long [] currentTime = {0L };
412
+ kubernetesClientMetrics =
413
+ new KubernetesClientMetrics (
414
+ KubernetesOperatorMetricGroup .create (
415
+ registry , new Configuration (), NAMESPACE , NAME , HOST ),
416
+ FlinkOperatorConfiguration .fromConfiguration (operatorConfig ),
417
+ () -> currentTime [0 ]);
418
+ final HttpRequest postRequest =
419
+ builder .post ("application/json" , "{}" ).uri ("/random" ).build ();
420
+ kubernetesClientMetrics .before (builder , postRequest , emptyTags );
421
+ assertThat (kubernetesClientMetrics .getSlowRequestCounter ())
422
+ .extracting (Counter ::getCount )
423
+ .isEqualTo (0L );
424
+ currentTime [0 ] += kubernetesClientMetrics .getSlowRequestThreshold ().toNanos () + 1L ;
425
+
426
+ // When
427
+ kubernetesClientMetrics .afterConnectionFailure (postRequest , new RuntimeException ("kaboom" ));
428
+
429
+ // Then
430
+ assertThat (kubernetesClientMetrics .getSlowRequestCounter ())
431
+ .extracting (Counter ::getCount )
432
+ .isEqualTo (1L );
433
+ }
434
+
435
+ @ Test
436
+ void shouldNotTrackResponseForFailedConnectionAsSlowResponseUnderThreshold () {
437
+ // Given
438
+ long [] currentTime = {0L };
439
+ kubernetesClientMetrics =
440
+ new KubernetesClientMetrics (
441
+ KubernetesOperatorMetricGroup .create (
442
+ registry , new Configuration (), NAMESPACE , NAME , HOST ),
443
+ FlinkOperatorConfiguration .fromConfiguration (operatorConfig ),
444
+ () -> currentTime [0 ]);
445
+ final HttpRequest postRequest =
446
+ builder .post ("application/json" , "{}" ).uri ("/random" ).build ();
447
+ kubernetesClientMetrics .before (builder , postRequest , emptyTags );
448
+ assertThat (kubernetesClientMetrics .getSlowRequestCounter ())
449
+ .extracting (Counter ::getCount )
450
+ .isEqualTo (0L );
451
+ currentTime [0 ] += kubernetesClientMetrics .getSlowRequestThreshold ().toNanos () - 1L ;
452
+
453
+ // When
454
+ kubernetesClientMetrics .afterConnectionFailure (postRequest , new RuntimeException ("kaboom" ));
455
+
456
+ // Then
457
+ assertThat (kubernetesClientMetrics .getSlowRequestCounter ())
458
+ .extracting (Counter ::getCount )
459
+ .isEqualTo (0L );
460
+ }
461
+
348
462
@ Test
349
463
void shouldTrackFailedRequests () {
350
464
// Given
0 commit comments