From e85723a8891e3cd32eb295f773e32162caae97c7 Mon Sep 17 00:00:00 2001 From: Will Smith Date: Sat, 21 Mar 2020 17:30:16 -0600 Subject: Metrics Update WHAT: * Update test to account for new get_status() results * Resolve flappy test based on time. WHY: They were broken, and needed fixing for Teem and Lindley White's changes. --- eventmq/router.py | 5 +++-- eventmq/tests/test_router.py | 29 +++++++++++++++++------------ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/eventmq/router.py b/eventmq/router.py index e1967bf..49ffb3a 100644 --- a/eventmq/router.py +++ b/eventmq/router.py @@ -936,7 +936,8 @@ class Router(HeartbeatMixin): for queue in queue_latency_list: queue_latency_list[queue] = int( - (now - (queue_latency_list[queue] / max(queue_latency_count[queue], 1))) * 1000) + (now - (queue_latency_list[queue] / + max(queue_latency_count[queue], 1))) * 1000) for queue in queue_max_latency_list: queue_max_latency_list[queue] = int( @@ -951,7 +952,7 @@ class Router(HeartbeatMixin): 'max_latency_messages_by_queue': queue_max_latency_list, 'waiting_messages_by_queue': queue_waiting_list, 'processed_messages_by_queue': self.processed_message_counts, - 'processed_messages_by_worker': self.processed_message_counts_by_worker + 'processed_messages_by_worker': self.processed_message_counts_by_worker # noqa }) def get_workers_status(self): diff --git a/eventmq/tests/test_router.py b/eventmq/tests/test_router.py index 0a315e3..73612e7 100644 --- a/eventmq/tests/test_router.py +++ b/eventmq/tests/test_router.py @@ -464,6 +464,8 @@ class TestCase(unittest.TestCase): queue2_id = 'jimjam' nonexistent_queue1 = 'nonexistent' + t = monotonic() + # To ensure the value was changed later because monotonic() is hard to # mock self.assertEqual(self.router._meta['last_worker_cleanup'], 0) @@ -479,20 +481,20 @@ class TestCase(unittest.TestCase): # 3 in the future worker1_id: { 'queues': [(10, queue1_id), ], - 'hb': monotonic() + 3, + 'hb': t + 3, 'available_slots': 0, }, # below the timeout worker2_id: { 'queues': [(10, queue2_id), (0, queue1_id)], - 'hb': 0, + 'hb': t - 2, 'available_slots': 2, }, # below the timeout and a queue missing from self.router.queues worker3_id: { 'queues': [(10, queue2_id), (3, nonexistent_queue1)], - 'hb': 0, + 'hb': t - 2, 'available_slots': 0, }, } @@ -778,16 +780,19 @@ class TestCase(unittest.TestCase): # hacky, but the serialize/deserialize converts the keys to unicode # correctly and what not. + expected_object = { + 'inflight_messages_by_queue': {}, + 'latency_messages_by_queue': {}, + 'max_latency_messages_by_queue': {}, + 'processed_messages_by_queue': {}, + 'processed_messages_by_worker': {}, + 'waiting_messages_by_queue': { + q: len(self.router.waiting_messages[q]) + for q in self.router.waiting_messages + } + } self.assertEqual( - json.loads(json.dumps({ - 'job_latencies_count': len(self.router.job_latencies), - 'processed_messages': {}, - 'processed_messages_by_worker': {}, - 'waiting_message_counts': [ - '{}: {}'.format( - q, - len(self.router.waiting_messages[q])) for q in self.router.waiting_messages] # noqa - })), + json.loads(json.dumps(expected_object)), json.loads(self.router.get_status())) self.assertEqual( -- cgit v1.2.1