mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-06-28 06:41:43 +00:00
feat: add timer for metrics purposes
This commit is contained in:
42
tests/ahriman/models/test_metrics_timer.py
Normal file
42
tests/ahriman/models/test_metrics_timer.py
Normal file
@ -0,0 +1,42 @@
|
||||
import pytest
|
||||
import time
|
||||
|
||||
from ahriman.core.exceptions import InitializeError
|
||||
from ahriman.models.metrics_timer import MetricsTimer
|
||||
|
||||
|
||||
def test_elapsed() -> None:
|
||||
"""
|
||||
must return elapsed time
|
||||
"""
|
||||
with MetricsTimer() as timer:
|
||||
value1 = timer.elapsed
|
||||
time.sleep(0.1)
|
||||
value2 = timer.elapsed
|
||||
assert value2 > value1
|
||||
|
||||
|
||||
def test_elapsed_exception() -> None:
|
||||
"""
|
||||
must raise InitializeError if timer wasn't started in the context manager
|
||||
"""
|
||||
timer = MetricsTimer()
|
||||
with pytest.raises(InitializeError):
|
||||
assert timer.elapsed
|
||||
|
||||
|
||||
def test_enter() -> None:
|
||||
"""
|
||||
must start timer with context manager
|
||||
"""
|
||||
with MetricsTimer() as timer:
|
||||
assert timer.start_time > 0
|
||||
|
||||
|
||||
def test_exit_with_exception() -> None:
|
||||
"""
|
||||
must exit from context manager if an exception is raised
|
||||
"""
|
||||
with pytest.raises(ValueError):
|
||||
with MetricsTimer():
|
||||
raise ValueError()
|
@ -1,5 +1,4 @@
|
||||
import pytest
|
||||
import time
|
||||
|
||||
from ahriman.models.waiter import Waiter, WaiterResult, WaiterTaskFinished, WaiterTimedOut
|
||||
|
||||
@ -37,17 +36,17 @@ def test_is_timed_out() -> None:
|
||||
"""
|
||||
must correctly check if timer runs out
|
||||
"""
|
||||
assert Waiter(-1).is_timed_out()
|
||||
assert Waiter(1, start_time=time.monotonic() - 10.0).is_timed_out()
|
||||
assert not Waiter(1, start_time=time.monotonic() + 10.0).is_timed_out()
|
||||
assert Waiter(-1).is_timed_out(0.0)
|
||||
assert Waiter(1).is_timed_out(42.0)
|
||||
assert not Waiter(1).is_timed_out(0.42)
|
||||
|
||||
|
||||
def test_is_timed_out_infinite() -> None:
|
||||
"""
|
||||
must treat 0 wait timeout as infinite
|
||||
"""
|
||||
assert not Waiter(0).is_timed_out()
|
||||
assert not Waiter(0, start_time=time.monotonic() - 10.0).is_timed_out()
|
||||
assert not Waiter(0).is_timed_out(0.0)
|
||||
assert not Waiter(0).is_timed_out(-1.0)
|
||||
|
||||
|
||||
def test_wait() -> None:
|
||||
|
Reference in New Issue
Block a user