Skip to content

Commit

Permalink
fixup! Add retry functionality and allow config
Browse files Browse the repository at this point in the history
  • Loading branch information
spyrbri committed Aug 22, 2018
1 parent e0651ae commit 235ac82
Showing 1 changed file with 65 additions and 0 deletions.
65 changes: 65 additions & 0 deletions test/api/test_retry_request.py
@@ -0,0 +1,65 @@
import unittest
import httpretty
import chartmogul
from unittest.mock import patch
from chartmogul import retryrequest, Config, DataSource
from datetime import date, datetime
from requests.exceptions import RetryError

class TestRetryRequests(unittest.TestCase):

@httpretty.activate
def test_retry_requests(self):
httpretty.register_uri(
httpretty.GET,
"https://example:444/testing",
responses=[
httpretty.Response(body='{}', status=500),
httpretty.Response(body='{}', status=200),
]
)

with self.assertRaises(RetryError):
retryrequest.requests_retry_session(0).get('https://example:444/testing')

response = retryrequest.requests_retry_session(2, 0).get('https://example:444/testing')
self.assertEqual(response.text, '{}')

@httpretty.activate
def test_requests_retry_exceptions(self):
httpretty.register_uri(
httpretty.GET,
"https://example:444/testing",
responses=[
httpretty.Response(body='{}', status=500),
httpretty.Response(body='{}', status=200),
]
)

with self.assertRaises(RetryError):
retryrequest.requests_retry_session(0).get('https://example:444/testing')

response = retryrequest.requests_retry_session(2, 0).get('https://example:444/testing')
self.assertEqual(response.text, '{}')

@httpretty.activate
def test_requests_retry_session_on_resource(self):
httpretty.register_uri(
httpretty.POST,
"https://api.chartmogul.com/v1/data_sources",
responses=[
httpretty.Response(body='{}', status=500),
httpretty.Response(body='{}', status=500),
httpretty.Response(body='{}', status=500),
httpretty.Response(body='{}', status=500),
httpretty.Response(body='{}', status=200),
]
)

# max_retries set as 4
# backoff_factor set as 0 to avoid waiting while testing
config = Config("token", "secret", None, 4, 0)
try:
DataSource.create(config, data={ "test_date": date(2015, 1, 1) }).get()
except RetryError:
self.fail("request raised retryError unexpectedly!")

0 comments on commit 235ac82

Please sign in to comment.