extend testing

This commit is contained in:
holger krekel 2024-03-30 16:50:06 +01:00
parent 2b45ace3ba
commit 09df636183
2 changed files with 20 additions and 8 deletions

View File

@ -90,12 +90,12 @@ class Notifier:
while True: while True:
self.thread_retry_one(requests_session, numtries) self.thread_retry_one(requests_session, numtries)
def thread_retry_one(self, requests_session, numtries): def thread_retry_one(self, requests_session, numtries, sleepfunc=time.sleep):
retry_queue = self.retry_queues[numtries] retry_queue = self.retry_queues[numtries]
when, token = retry_queue.get() when, token = retry_queue.get()
wait_time = when - time.time() wait_time = when - time.time()
if wait_time > 0: if wait_time > 0:
time.sleep(wait_time) sleepfunc(wait_time)
self.notify_one(requests_session, token, numtries) self.notify_one(requests_session, token, numtries)
def notify_one(self, requests_session, token, numtries=0): def notify_one(self, requests_session, token, numtries=0):

View File

@ -190,14 +190,26 @@ def test_notifier_thread_run(notifier, testaddr):
@pytest.mark.parametrize("status", [requests.exceptions.RequestException(), 404, 500]) @pytest.mark.parametrize("status", [requests.exceptions.RequestException(), 404, 500])
def test_notifier_thread_connection_failures(notifier, testaddr, status): def test_notifier_thread_connection_failures(notifier, testaddr, status, caplog):
""" test that tokens keep getting retried until they are given up. """
notifier.add_token(testaddr, "01234") notifier.add_token(testaddr, "01234")
notifier.new_message_for_addr(testaddr) notifier.new_message_for_addr(testaddr)
reqmock = get_mocked_requests([status]) notifier.NOTIFICATION_RETRY_DELAY = 5
notifier.NOTIFICATION_RETRY_DELAY = 0.1 for i in range(notifier.MAX_NUMBER_OF_TRIES):
notifier.thread_retry_one(reqmock, numtries=0) caplog.clear()
assert notifier.retry_queues[1].get()[1] == "01234" reqmock = get_mocked_requests([status])
assert notifier.retry_queues[0].qsize() == 0 sleep_calls = []
notifier.thread_retry_one(reqmock, numtries=i, sleepfunc=sleep_calls.append)
assert notifier.retry_queues[i].qsize() == 0
assert "request failed" in caplog.records[0].msg
if i > 0:
assert len(sleep_calls) == 1
if i + 1 < notifier.MAX_NUMBER_OF_TRIES:
assert notifier.retry_queues[i + 1].qsize() == 1
assert len(caplog.records) == 1
else:
assert len(caplog.records) == 2
assert "giving up" in caplog.records[1].msg
def test_multi_device_notifier(notifier, testaddr): def test_multi_device_notifier(notifier, testaddr):