コード例 #1
0
 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()
コード例 #2
0
 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()
コード例 #3
0
 def test_correspondence(self):
     """Checks that patching time and datetime modules independently works"""
     start_time, start_date = time.time(), datetime.datetime.now()
     virtualtime.patch_time_module()
     second_time, second_date = time.time(), datetime.datetime.now()
     assert 0 <= second_time - start_time <= 0.05
     assert datetime.timedelta(
         0) <= second_date - start_date <= datetime.timedelta(seconds=0.05)
     virtualtime.set_offset(3600)
     half_time, half_date = time.time(), datetime.datetime.now()
     assert 3600 <= half_time - start_time <= 3600.1
     # datetime is not patched yet
     assert datetime.timedelta(
         seconds=0) <= half_date - start_date <= datetime.timedelta(
             seconds=0.1)
     virtualtime.patch_datetime_module()
     whole_time, whole_date = time.time(), datetime.datetime.now()
     assert 3600 <= whole_time - start_time <= 3600.1
     assert datetime.timedelta(
         seconds=3600) <= whole_date - start_date <= datetime.timedelta(
             seconds=3600.1)
     virtualtime.unpatch_time_module()
     other_half_time, other_half_date = time.time(), datetime.datetime.now()
     assert 0 <= other_half_time - start_time <= 0.1
     assert datetime.timedelta(
         seconds=3600
     ) <= other_half_date - start_date <= datetime.timedelta(seconds=3600.1)
コード例 #4
0
 def test_notify_on_change(self):
     self.notify_event = threading.Event()
     virtualtime.notify_on_change(self.notify_event)
     start_time = virtualtime._original_time()
     virtualtime.set_offset(1)
     assert self.notify_event.wait(0.1)
     self.notify_event.clear()
     offset_time = virtualtime._original_time()
     assert offset_time - start_time < 0.1
     virtualtime.set_time(0)
     assert self.notify_event.wait(0.1)
     self.notify_event.clear()
     set_time = virtualtime._original_time()
     assert set_time - offset_time < 0.1
     virtualtime.restore_time()
     assert self.notify_event.wait(0.1)
     self.notify_event.clear()
     restore_time = virtualtime._original_time()
     assert restore_time - set_time < 0.1
コード例 #5
0
 def test_notify_on_change(self):
     self.notify_event = threading.Event()
     virtualtime.notify_on_change(self.notify_event)
     start_time = virtualtime._original_time()
     virtualtime.set_offset(1)
     assert self.notify_event.wait(0.1)
     self.notify_event.clear()
     offset_time = virtualtime._original_time()
     assert offset_time - start_time < 0.1
     virtualtime.set_time(0)
     assert self.notify_event.wait(0.1)
     self.notify_event.clear()
     set_time = virtualtime._original_time()
     assert set_time - offset_time < 0.1
     virtualtime.restore_time()
     assert self.notify_event.wait(0.1)
     self.notify_event.clear()
     restore_time = virtualtime._original_time()
     assert restore_time - set_time < 0.1
コード例 #6
0
 def test_correspondence(self):
     """Checks that patching time and datetime modules independently works"""
     start_time, start_date = time.time(), datetime.datetime.now()
     virtualtime.patch_time_module()
     second_time, second_date = time.time(), datetime.datetime.now()
     assert 0 <= second_time - start_time <= 0.05
     assert datetime.timedelta(0) <= second_date - start_date <= datetime.timedelta(seconds=0.05)
     virtualtime.set_offset(3600)
     half_time, half_date = time.time(), datetime.datetime.now()
     assert 3600 <= half_time - start_time <= 3600.1
     # datetime is not patched yet
     assert datetime.timedelta(seconds=0) <= half_date - start_date <= datetime.timedelta(seconds=0.1)
     virtualtime.patch_datetime_module()
     whole_time, whole_date = time.time(), datetime.datetime.now()
     assert 3600 <= whole_time - start_time <= 3600.1
     assert datetime.timedelta(seconds=3600) <= whole_date - start_date <= datetime.timedelta(seconds=3600.1)
     virtualtime.unpatch_time_module()
     other_half_time, other_half_date = time.time(), datetime.datetime.now()
     assert 0 <= other_half_time - start_time <= 0.1
     assert datetime.timedelta(seconds=3600) <= other_half_date - start_date <= datetime.timedelta(seconds=3600.1)