[tor-commits] [stem/master] Wait for unit tests to consume events
atagar at torproject.org
atagar at torproject.org
Sun Aug 12 21:12:39 UTC 2018
commit c9cc0f558cfe086d8e72e4fd9bf31c98ad535041
Author: Damian Johnson <atagar at torproject.org>
Date: Sun Aug 12 14:08:09 2018 -0700
Wait for unit tests to consume events
On #27053 Dave's reported that even with a bumped sleep these new tests
occasionally fail for him. Sleeps within tests are a code stink so I really
should do something smarter anyway.
Waiting up to five seconds for unit tests to consume the events they emit. When
we run both our unit and integ tests the later performs heavy tests asychrously.
This tends to peg the CPU while running our unit tests, probably slowing things
down enough for them to fail occasionly for Dave.
---
test/unit/control/controller.py | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/test/unit/control/controller.py b/test/unit/control/controller.py
index 8034abe2..eba612fd 100644
--- a/test/unit/control/controller.py
+++ b/test/unit/control/controller.py
@@ -826,7 +826,14 @@ class TestControl(unittest.TestCase):
self.controller._event_queue.put(uncast_event)
self.controller._event_notice.set()
- # doesn't seem necessary in practice, but since event processing is
- # asynchronous giving it a tiny bit of time to get handled
+ # Wait for the event to get asynchronously consumed. This should happen
+ # right away, but if the system is bogged down it may take quite a few
+ # milliseconds.
- time.sleep(0.03)
+ event_sent_at = time.time()
+
+ while not self.controller._event_queue.empty():
+ time.sleep(0.01)
+
+ if time.time() - event_sent_at > 5:
+ self.fail('Event did not get processed after five seconds')
More information about the tor-commits
mailing list