def test_callback(self): self.notify_event = threading.Event() virtualtime.notify_on_change(self.notify_event) self.callback_stop = False self.callback_event = threading.Event() self.callback_logs = [] self.callback_missed = [] ct = threading.Thread(target=self.callback_thread) ct.start() virtualtime.wait_for_callback_on_change(self.callback_event) try: start_time = virtualtime._original_time() virtualtime.set_offset(1) assert len(self.callback_logs) == 1 and not self.callback_missed assert self.callback_logs[0][1:] == (1, False) offset_time = virtualtime._original_time() assert offset_time - start_time < 0.1 virtualtime.set_time(0) assert len(self.callback_logs) == 2 and not self.callback_missed assert self.callback_logs[1][1] < -start_time + 1 and self.callback_logs[1][2] is False set_time = virtualtime._original_time() assert set_time - offset_time < 0.1 virtualtime.restore_time() assert len(self.callback_logs) == 3 and not self.callback_missed assert self.callback_logs[1][1] < -start_time + 1 and self.callback_logs[1][2] is False restore_time = virtualtime._original_time() assert restore_time - set_time < 0.1 finally: # deleting this should ensure it drops out of the weak set and doesn't hang things up later... del self.callback_event self.callback_stop = True self.notify_event.set() ct.join()
def test_callback(self): self.notify_event = threading.Event() virtualtime.notify_on_change(self.notify_event) self.callback_stop = False self.callback_event = threading.Event() self.callback_logs = [] self.callback_missed = [] ct = threading.Thread(target=self.callback_thread) ct.start() virtualtime.wait_for_callback_on_change(self.callback_event) try: start_time = virtualtime._original_time() virtualtime.set_offset(1) assert len(self.callback_logs) == 1 and not self.callback_missed assert self.callback_logs[0][1:] == (1, False) offset_time = virtualtime._original_time() assert offset_time - start_time < 0.1 virtualtime.set_time(0) assert len(self.callback_logs) == 2 and not self.callback_missed assert self.callback_logs[1][ 1] < -start_time + 1 and self.callback_logs[1][2] is False set_time = virtualtime._original_time() assert set_time - offset_time < 0.1 virtualtime.restore_time() assert len(self.callback_logs) == 3 and not self.callback_missed assert self.callback_logs[1][ 1] < -start_time + 1 and self.callback_logs[1][2] is False restore_time = virtualtime._original_time() assert restore_time - set_time < 0.1 finally: # deleting this should ensure it drops out of the weak set and doesn't hang things up later... del self.callback_event self.callback_stop = True self.notify_event.set() ct.join()
def __init__(self, target, args=None, kwargs=None, resolution=1): self.interrupt_event = threading.Event() self.virtual_time_callback_event = threading.Event() virtualtime.notify_on_change(self.interrupt_event) virtualtime.wait_for_callback_on_change(self.virtual_time_callback_event) self._running = True self.target = target self.args = args if self.args is None: self.args = () self.kwargs = kwargs if self.kwargs is None: self.kwargs = {} if isinstance(resolution, datetime_tz.timedelta): self.resolution = resolution else: self.resolution = datetime_tz.timedelta(seconds=resolution)
def __init__(self, target, args=None, kwargs=None, resolution=1): self.interrupt_event = threading.Event() self.virtual_time_callback_event = threading.Event() virtualtime.notify_on_change(self.interrupt_event) virtualtime.wait_for_callback_on_change( self.virtual_time_callback_event) self._running = True self.target = target self.args = args if self.args is None: self.args = () self.kwargs = kwargs if self.kwargs is None: self.kwargs = {} if isinstance(resolution, datetime_tz.timedelta): self.resolution = resolution else: self.resolution = datetime_tz.timedelta(seconds=resolution)