diff options
Diffstat (limited to 'nemesis/causal_event_loop.py')
| -rw-r--r-- | nemesis/causal_event_loop.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/nemesis/causal_event_loop.py b/nemesis/causal_event_loop.py index b73458f..22ec65c 100644 --- a/nemesis/causal_event_loop.py +++ b/nemesis/causal_event_loop.py @@ -102,29 +102,36 @@ class CausalEventLoop(asyncio.SelectorEventLoop): # the last time we entered the target coro _time_entered_coro = None _ready_events = [] + # the time this experiment started + _start_time = None def __init__(self) -> None: super().__init__() def set_speedup(self, speedup): + # print(self._coro_intervals) + # we want to delay the start time if we are starting a new experiment + # during the old experiment's interval + self._start_time = self.time() if not self._time_entered_coro else None self._speedup = speedup # reset experiment counters - self._time_entered_coro = None self._coro_intervals.clear() self._completed_coros.clear() def get_completed_coros(self): return copy(self._completed_coros) - def get_pause_time(self): + def get_run_time(self): + curr_time = self.time() if not self._coro_intervals: return 0 start_interval = self._coro_intervals[0][0] - end_interval = self.time() if self._time_entered_coro else self._coro_intervals[-1][1] + end_interval = curr_time if self._time_entered_coro else self._coro_intervals[-1][1] interval = (start_interval, end_interval) - return self._get_pause_time(interval) + pause_time = self._get_pause_time(interval) + return (curr_time - self._start_time) - pause_time def ping_enter_coro(self): self._time_entered_coro = self.time() @@ -135,7 +142,10 @@ class CausalEventLoop(asyncio.SelectorEventLoop): except AssertionError as e: print(f"Assertion failed: {e}") sys.exit(1) - self._coro_intervals.add((self._time_entered_coro, self.time())) + if self._start_time: + self._coro_intervals.add((self._time_entered_coro, self.time())) + else: + self._start_time = self.time() self._time_entered_coro = None def collect_ready_events(self, timeout=0): |
