def __init__(self, f=None, *args, **kw): self.args = args self.kw = kw self.f = f self._thread = None self.done = None self._abort = eventletutils.EventletEvent()
def test_event_clear_already_sent(self, mock_event): old_event = mock.Mock() new_event = mock.Mock() mock_event.side_effect = [old_event, new_event] event = eventletutils.EventletEvent() event.set() event.clear() self.assertEqual(1, old_event.send.call_count)
def test_event_no_timeout(self): event = eventletutils.EventletEvent() def thread_a(): self.assertTrue(event.wait()) a = greenthread.spawn(thread_a) with eventlet.timeout.Timeout(0.5, False): a.wait() self.fail('wait() timed out')
def test_event_race(self): event = eventletutils.EventletEvent() def thread_a(): self.assertTrue(event.wait(2)) a = greenthread.spawn(thread_a) def thread_b(): eventlet.sleep(0.1) event.clear() event.set() a.wait() b = greenthread.spawn(thread_b) with eventlet.timeout.Timeout(0.5): b.wait()
def test_event_set_clear_timeout(self): event = eventletutils.EventletEvent() wakes = [] def thread_func(): result = event.wait(0.2) wakes.append(result) if len(wakes) == 1: self.assertTrue(result) event.clear() else: self.assertFalse(result) a = greenthread.spawn(thread_func) b = greenthread.spawn(thread_func) eventlet.sleep(0) # start threads event.set() with eventlet.timeout.Timeout(0.3): a.wait() b.wait() self.assertFalse(event.is_set()) self.assertEqual([True, False], wakes)