def test_event_loop_schedule_action_absolute_due(self): scheduler = EventLoopScheduler(exit_if_empty=True) gate = threading.Semaphore(0) starttime = datetime.utcnow() endtime = None def action(scheduler, state): nonlocal endtime endtime = datetime.utcnow() gate.release() scheduler.schedule_absolute(scheduler.now, action) gate.acquire() diff = endtime - starttime assert diff < timedelta(milliseconds=180) assert scheduler._has_thread() is False
def test_event_loop_schedule_action_absolute_due(self): scheduler = EventLoopScheduler(exit_if_empty=True) gate = threading.Semaphore(0) starttime = default_now() endtime = None def action(scheduler, state): nonlocal endtime endtime = default_now() gate.release() scheduler.schedule_absolute(scheduler.now, action) gate.acquire() diff = endtime - starttime assert diff < timedelta(milliseconds=180) assert scheduler._has_thread() is False
def test_eventloop_schedule_absolute_dispose(self): scheduler = EventLoopScheduler(exit_if_empty=False) scheduler.dispose() ran = False def action(scheduler, state): nonlocal ran ran = True with pytest.raises(DisposedException): scheduler.schedule_absolute(scheduler.now, action) assert ran is False assert scheduler._has_thread() is False
def test_eventloop_schedule_absolute_dispose(self): scheduler = EventLoopScheduler(exit_if_empty=False) scheduler.dispose() ran = False def action(scheduler, state): nonlocal ran ran = True exc = None try: scheduler.schedule_absolute(scheduler.now, action) except Exception as e: exc = e finally: assert isinstance(exc, DisposedException) assert ran is False assert scheduler._has_thread() is False