@@ -16,7 +16,6 @@ def get_time(reference: str) -> datetime | None:
1616 values = {
1717 "now" : now (),
1818 "ten_seconds_ago" : now () - timedelta (seconds = 11 ),
19- "five_minutes_ago" : now () - timedelta (seconds = 301 ),
2019 }
2120 return values .get (reference )
2221
@@ -28,19 +27,25 @@ async def test_configuration():
2827@pytest .mark .parametrize ("enabled" , [False , True ])
2928@pytest .mark .parametrize ("queued" , [False , True ])
3029@pytest .mark .parametrize ("running" , [False , True ])
30+ @pytest .mark .parametrize ("queued_at" , [None , "now" , "ten_seconds_ago" ])
31+ @pytest .mark .parametrize ("running_at" , [None , "now" , "ten_seconds_ago" ])
3132@pytest .mark .parametrize ("last_heartbeat" , [None , "now" , "ten_seconds_ago" ])
3233async def test_monitors_stuck (
3334 caplog ,
3435 sample_monitor : Monitor ,
3536 enabled ,
3637 queued ,
3738 running ,
39+ queued_at ,
40+ running_at ,
3841 last_heartbeat ,
3942):
4043 """'monitors_stuck' should fix monitors that are stuck"""
4144 sample_monitor .enabled = enabled
4245 sample_monitor .queued = queued
4346 sample_monitor .running = running
47+ sample_monitor .queued_at = get_time (queued_at ) # type:ignore[assignment]
48+ sample_monitor .running_at = get_time (running_at ) # type:ignore[assignment]
4449 sample_monitor .last_heartbeat = get_time (last_heartbeat ) # type:ignore[assignment]
4550 await sample_monitor .save ()
4651
@@ -52,6 +57,10 @@ async def test_monitors_stuck(
5257 triggered = False
5358 elif last_heartbeat is None :
5459 triggered = False
60+ elif queued_at == "now" :
61+ triggered = False
62+ elif running_at == "now" :
63+ triggered = False
5564 elif last_heartbeat == "now" :
5665 triggered = False
5766 else :
0 commit comments