extend testing
This commit is contained in:
parent
2b45ace3ba
commit
09df636183
@ -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):
|
||||||
|
@ -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):
|
||||||
|
Loading…
Reference in New Issue
Block a user