From 6bd78911cc2547ca36d3642739638ed60f36b3e3 Mon Sep 17 00:00:00 2001 From: Tyson Smith Date: Thu, 5 Dec 2024 15:19:03 -0800 Subject: [PATCH] fix: use perf_counter() instead of time() where appropriate --- src/grizzly/session.py | 8 ++++---- src/grizzly/test_session.py | 8 ++++---- src/sapphire/connection_manager.py | 14 ++++++++------ src/sapphire/test_connection_manager.py | 4 ++-- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/grizzly/session.py b/src/grizzly/session.py index 7e2ffc83..65976f7d 100644 --- a/src/grizzly/session.py +++ b/src/grizzly/session.py @@ -5,7 +5,7 @@ from enum import IntEnum, unique from logging import getLogger -from time import time +from time import perf_counter from typing import TYPE_CHECKING from .common.iomanager import IOManager @@ -61,7 +61,7 @@ def __init__( self._launches = 1 # next launch to trigger output self._multiplier = delta_multiplier # rate to decrease output (iterations) self._rate = rate - self._time = time() + self._time = perf_counter() def ready(self, cur_iter: int, launches: int) -> bool: # calculate if a status line should be output @@ -71,10 +71,10 @@ def ready(self, cur_iter: int, launches: int) -> bool: if cur_iter >= self._iterations: ready = True self._iterations *= self._multiplier - elif launches >= self._launches or time() - self._delay >= self._time: + elif launches >= self._launches or perf_counter() - self._delay >= self._time: ready = True if ready: - self._time = time() + self._time = perf_counter() self._launches = launches + 1 return ready diff --git a/src/grizzly/test_session.py b/src/grizzly/test_session.py index 71da1145..a2ce77cd 100644 --- a/src/grizzly/test_session.py +++ b/src/grizzly/test_session.py @@ -469,7 +469,7 @@ def test_session_10(mocker, harness, iters, result_limit, results): def test_log_output_limiter_01(mocker): """test LogOutputLimiter.ready() not ready""" - fake_time = mocker.patch("grizzly.session.time", autospec=True) + fake_time = mocker.patch("grizzly.session.perf_counter", autospec=True) fake_time.return_value = 1.0 lol = LogOutputLimiter(delay=10, delta_multiplier=2) assert lol._delay == 10 @@ -489,7 +489,7 @@ def test_log_output_limiter_01(mocker): def test_log_output_limiter_02(mocker): """test LogOutputLimiter.ready() due to iterations""" - fake_time = mocker.patch("grizzly.session.time", autospec=True) + fake_time = mocker.patch("grizzly.session.perf_counter", autospec=True) fake_time.return_value = 1.0 lol = LogOutputLimiter(delay=10, delta_multiplier=2) fake_time.return_value = 1.1 @@ -502,7 +502,7 @@ def test_log_output_limiter_02(mocker): def test_log_output_limiter_03(mocker): """test LogOutputLimiter.ready() due to launches""" - fake_time = mocker.patch("grizzly.session.time", autospec=True) + fake_time = mocker.patch("grizzly.session.perf_counter", autospec=True) fake_time.return_value = 1.0 lol = LogOutputLimiter(delay=10, delta_multiplier=2) lol._iterations = 4 @@ -514,7 +514,7 @@ def test_log_output_limiter_03(mocker): def test_log_output_limiter_04(mocker): """test LogOutputLimiter.ready() due to time""" - fake_time = mocker.patch("grizzly.session.time", autospec=True) + fake_time = mocker.patch("grizzly.session.perf_counter", autospec=True) fake_time.return_value = 1.0 lol = LogOutputLimiter(delay=1, delta_multiplier=2) lol._iterations = 4 diff --git a/src/sapphire/connection_manager.py b/src/sapphire/connection_manager.py index aa596b89..713bc733 100644 --- a/src/sapphire/connection_manager.py +++ b/src/sapphire/connection_manager.py @@ -4,7 +4,7 @@ from __future__ import annotations from logging import getLogger -from time import time +from time import perf_counter from traceback import format_exception from typing import TYPE_CHECKING, Callable @@ -63,7 +63,7 @@ def _can_continue(self, continue_cb: Callable[[], bool] | None) -> bool: Returns: True if callback returns True and timeout has been be hit otherwise False. """ - now = time() + now = perf_counter() if self._next_poll > now: return True self._next_poll = now + self._poll @@ -108,8 +108,10 @@ def _join_workers(workers: list[Worker], timeout: float = 0) -> list[Worker]: Returns: Workers that do not join before the timeout is reached. """ - deadline = time() + timeout - return [x for x in workers if not x.join(timeout=max(deadline - time(), 0))] + deadline = perf_counter() + timeout + return [ + x for x in workers if not x.join(timeout=max(deadline - perf_counter(), 0)) + ] def serve( self, @@ -135,7 +137,7 @@ def serve( raise TypeError("continue_cb must be callable") self._deadline_exceeded = False - start_time = time() + start_time = perf_counter() self._deadline = start_time + timeout if timeout else None launches = 0 @@ -168,7 +170,7 @@ def serve( LOG.debug( "serve exit: %d request(s) in %0.3fs, waiting for %d worker(s)...", launches, - time() - start_time, + perf_counter() - start_time, running, ) if not self._job.is_complete(): diff --git a/src/sapphire/test_connection_manager.py b/src/sapphire/test_connection_manager.py index 616fc01b..8d4401d7 100644 --- a/src/sapphire/test_connection_manager.py +++ b/src/sapphire/test_connection_manager.py @@ -97,7 +97,7 @@ def test_connection_manager_04(mocker, tmp_path): def test_connection_manager_05(mocker, tmp_path): """test ConnectionManager.serve() with timeout""" - mocker.patch("sapphire.connection_manager.time", autospec=True, side_effect=count()) + mocker.patch("sapphire.connection_manager.perf_counter", side_effect=count()) (tmp_path / "file").touch() clnt_sock = mocker.Mock(spec_set=socket) clnt_sock.recv.return_value = b"" @@ -113,7 +113,7 @@ def test_connection_manager_05(mocker, tmp_path): def test_connection_manager_06(mocker, tmp_path): """test ConnectionManager.serve() worker fails to exit""" mocker.patch("sapphire.worker.Thread", autospec=True) - mocker.patch("sapphire.connection_manager.time", autospec=True, side_effect=count()) + mocker.patch("sapphire.connection_manager.perf_counter", side_effect=count()) (tmp_path / "file").touch() clnt_sock = mocker.Mock(spec_set=socket) serv_sock = mocker.Mock(spec_set=socket)