Ejemplo n.º 1
0
def mock_sender(*responses, is_async: bool = False):
    sender = MagicMock()
    sender.is_async = is_async
    if is_async:
        sender.send = AsyncMock(side_effect=responses)
    else:
        sender.send.side_effect = responses
    return sender
Ejemplo n.º 2
0
    async def test_async_retry_returns_on_first_success(self):
        fail = failed_response()
        success = ok_response()
        sender = mock_sender(fail, fail, success, fail, is_async=True)

        s = RetryingSender(retries=5, sender=sender)
        with patch(module + '.asyncio', AsyncMock()):
            await s.send(mock_request())
        assert sender.send.call_count == 3
Ejemplo n.º 3
0
    async def test_async_failing_request_retried_max_times(self):
        fail = failed_response()
        success = ok_response()
        sender = mock_sender(fail, fail, fail, success, is_async=True)

        s = RetryingSender(retries=2, sender=sender)
        with patch(module + '.asyncio', AsyncMock()):
            await s.send(mock_request())
        assert sender.send.call_count == 3
Ejemplo n.º 4
0
    def test_async_retry_returns_on_first_success(self):
        fail = failed_response()
        success = ok_response()
        sender = mock_sender(fail, fail, success, fail, is_async=True)

        s = RetryingSender(retries=5, sender=sender)
        with patch('tekore.sender.asyncio', AsyncMock()):
            run(s.send(Request()))
        self.assertEqual(sender.send.call_count, 3)
Ejemplo n.º 5
0
    async def test_async_rate_limited_request_retried_after_set_seconds(self):
        asyncio = AsyncMock()
        fail = rate_limit_response()
        success = ok_response()
        sender = mock_sender(fail, success, is_async=True)

        s = RetryingSender(sender=sender)
        with patch(module + '.asyncio', asyncio):
            await s.send(mock_request())
            asyncio.sleep.assert_called_once_with(1 + 1)
Ejemplo n.º 6
0
    async def test_async_default_retry_after_is_one(self):
        asyncio = AsyncMock()
        fail = rate_limit_response()
        del fail.headers['Retry-After']
        success = ok_response()
        sender = mock_sender(fail, success, is_async=True)

        s = RetryingSender(sender=sender)
        with patch(module + '.asyncio', asyncio):
            await s.send(mock_request())
            asyncio.sleep.assert_called_once_with(1 + 1)
Ejemplo n.º 7
0
    async def test_async_rate_limited_retry_doesnt_decrease_retry_count(self):
        fail = failed_response()
        rate = rate_limit_response()
        success = ok_response()
        sender = mock_sender(fail, rate, fail, success, is_async=True)

        s = RetryingSender(retries=2, sender=sender)
        with patch(module + '.asyncio', AsyncMock()):
            await s.send(mock_request())

        assert sender.send.call_count == 4
Ejemplo n.º 8
0
    def test_async_rate_limited_retry_doesnt_decrease_retry_count(self):
        fail = failed_response()
        rate = rate_limit_response()
        success = ok_response()
        sender = mock_sender(fail, rate, fail, success, is_async=True)

        s = RetryingSender(retries=2, sender=sender)
        with patch('tekore.sender.asyncio', AsyncMock()):
            run(s.send(Request()))

        self.assertEqual(sender.send.call_count, 4)