def test_event_loop_schedule_action_due(self): scheduler = EventLoopScheduler(exit_if_empty=True) gate = threading.Semaphore(0) starttime = datetime.utcnow() endtime = [None] def action(scheduler, state): endtime[0] = datetime.utcnow() gate.release() scheduler.schedule_relative(timedelta(milliseconds=200), action) gate.acquire() diff = endtime[0]-starttime assert(diff > timedelta(milliseconds=180))
def test_event_loop_schedule_action_due(self): scheduler = EventLoopScheduler(exit_if_empty=True) gate = threading.Semaphore(0) starttime = datetime.utcnow() endtime = [None] def action(scheduler, state): endtime[0] = datetime.utcnow() gate.release() scheduler.schedule_relative(timedelta(milliseconds=200), action) gate.acquire() diff = endtime[0] - starttime assert (diff > timedelta(milliseconds=180))
def test_event_loop_schedule_ordered_actions_due(self): scheduler = EventLoopScheduler(exit_if_empty=True) gate = threading.Semaphore(0) result = [] def action(scheduler, state): result.append(3) gate.release() scheduler.schedule_relative(0.10, action) scheduler.schedule_relative(0.05, lambda s, t: result.append(2)) scheduler.schedule(lambda s, t: result.append(1)) gate.acquire() assert result == [1, 2, 3] assert scheduler._has_thread() is False
def test_event_loop_schedule_action_relative_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_relative(timedelta(milliseconds=200), action) gate.acquire() diff = endtime - starttime assert diff > timedelta(milliseconds=180) assert scheduler._has_thread() is False
def test_event_loop_schedule_ordered_actions_due(self): scheduler = EventLoopScheduler(exit_if_empty=True) gate = threading.Semaphore(0) result = [] def action(scheduler, state): result.append(3) gate.release() scheduler.schedule_relative(0.4, action) scheduler.schedule_relative(0.2, lambda s, t: result.append(2)) scheduler.schedule(lambda s, t: result.append(1)) gate.acquire() assert result == [1, 2, 3] assert scheduler._has_thread() is False
def test_event_loop_schedule_action_relative_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_relative(timedelta(milliseconds=200), action) gate.acquire() diff = endtime - starttime assert diff > timedelta(milliseconds=180) assert scheduler._has_thread() is False
def test_event_loop_schedule_action_cancel(self): scheduler = EventLoopScheduler(exit_if_empty=True) gate = threading.Semaphore(0) ran = [False] def action(scheduler, state): ran[0] = True d = scheduler.schedule_relative(timedelta(milliseconds=1), action) d.dispose() sleep(0.1) assert (not ran[0])