@@ -1422,6 +1422,67 @@ def test_context_manager(self):
1422
1422
)
1423
1423
self .assertEqual (metrics_packet , fake_socket .recv (no_wait = True ))
1424
1424
1425
+ def test_context_manager_restores_enabled_buffering_state (self ):
1426
+ fake_socket = FakeSocket ()
1427
+ dogstatsd = DogStatsd (telemetry_min_flush_interval = 0 , disable_buffering = False )
1428
+ dogstatsd .socket = fake_socket
1429
+
1430
+ with dogstatsd :
1431
+ dogstatsd .gauge ('page.views' , 123 )
1432
+ dogstatsd .timing ('timer' , 123 )
1433
+
1434
+ dogstatsd .gauge ('newpage.views' , 123 )
1435
+ dogstatsd .timing ('newtimer' , 123 )
1436
+
1437
+ metric1 = "page.views:123|g"
1438
+ metric2 = "timer:123|ms"
1439
+ metric3 = "newpage.views:123|g"
1440
+ metric4 = "newtimer:123|ms"
1441
+
1442
+ metrics1 = '\n ' .join ([metric1 , metric2 ]) + "\n "
1443
+ self .assertEqual (metrics1 , fake_socket .recv (no_wait = True ))
1444
+
1445
+ metrics_packet1 = telemetry_metrics (metrics = 2 , bytes_sent = len (metrics1 ), packets_sent = 1 )
1446
+ self .assertEqual (metrics_packet1 , fake_socket .recv (no_wait = True ))
1447
+
1448
+ metrics2 = '\n ' .join ([metric3 , metric4 ]) + "\n "
1449
+ metrics_packet2 = telemetry_metrics (metrics = 2 , bytes_sent = len (metrics_packet1 + metrics2 ), packets_sent = 2 )
1450
+ self .assertEqual (metrics2 , fake_socket .recv (reset_wait = True ))
1451
+ self .assertEqual (metrics_packet2 , fake_socket .recv ())
1452
+
1453
+ def test_context_manager_restores_disabled_buffering_state (self ):
1454
+ fake_socket = FakeSocket ()
1455
+ dogstatsd = DogStatsd (telemetry_min_flush_interval = 0 , disable_buffering = True )
1456
+ dogstatsd .socket = fake_socket
1457
+
1458
+ with dogstatsd :
1459
+ dogstatsd .gauge ('page.views' , 123 )
1460
+ dogstatsd .timing ('timer' , 123 )
1461
+
1462
+ dogstatsd .gauge ('newpage.views' , 123 )
1463
+ dogstatsd .timing ('newtimer' , 123 )
1464
+
1465
+ metric1 = "page.views:123|g"
1466
+ metric2 = "timer:123|ms"
1467
+ metric3 = "newpage.views:123|g"
1468
+ metric4 = "newtimer:123|ms"
1469
+
1470
+ metrics1 = '\n ' .join ([metric1 , metric2 ]) + "\n "
1471
+ self .assertEqual (metrics1 , fake_socket .recv (no_wait = True ))
1472
+
1473
+ metrics_packet1 = telemetry_metrics (metrics = 2 , bytes_sent = len (metrics1 ), packets_sent = 1 )
1474
+ self .assertEqual (metrics_packet1 , fake_socket .recv (no_wait = True ))
1475
+
1476
+ metrics2 = '\n ' .join ([metric3 ]) + "\n "
1477
+ metrics_packet2 = telemetry_metrics (metrics = 1 , bytes_sent = len (metrics_packet1 + metrics2 ), packets_sent = 2 )
1478
+ self .assertEqual (metrics2 , fake_socket .recv ())
1479
+ self .assertEqual (metrics_packet2 , fake_socket .recv (no_wait = True ))
1480
+
1481
+ metrics3 = '\n ' .join ([metric4 ]) + "\n "
1482
+ metrics_packet3 = telemetry_metrics (metrics = 1 , bytes_sent = len (metrics_packet2 + metrics3 ), packets_sent = 2 )
1483
+ self .assertEqual (metrics3 , fake_socket .recv ())
1484
+ self .assertEqual (metrics_packet3 , fake_socket .recv (no_wait = True ))
1485
+
1425
1486
def test_batched_buffer_autoflush (self ):
1426
1487
fake_socket = FakeSocket ()
1427
1488
bytes_sent = 0
0 commit comments