Skip to content

Commit

Permalink
fix: use perf_counter() instead of time() where appropriate
Browse files Browse the repository at this point in the history
  • Loading branch information
tysmith committed Dec 9, 2024
1 parent cec5060 commit 6bd7891
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 16 deletions.
8 changes: 4 additions & 4 deletions src/grizzly/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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

Expand Down
8 changes: 4 additions & 4 deletions src/grizzly/test_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
14 changes: 8 additions & 6 deletions src/sapphire/connection_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand All @@ -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
Expand Down Expand Up @@ -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():
Expand Down
4 changes: 2 additions & 2 deletions src/sapphire/test_connection_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -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""
Expand All @@ -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)
Expand Down

0 comments on commit 6bd7891

Please sign in to comment.