| Index: infra_libs/test/httplib2_utils_test.py
|
| diff --git a/infra_libs/test/httplib2_utils_test.py b/infra_libs/test/httplib2_utils_test.py
|
| index 072565608181dc9c020df95d737642c306ada341..0c6bdc8fe856ba81f00549d294bf87c5b2e1fea7 100644
|
| --- a/infra_libs/test/httplib2_utils_test.py
|
| +++ b/infra_libs/test/httplib2_utils_test.py
|
| @@ -129,6 +129,43 @@ class GetAuthenticatedHttp(unittest.TestCase):
|
| 'creds_malformed.json',
|
| service_accounts_creds_root=DATA_DIR)
|
|
|
| +class RetriableHttplib2Test(unittest.TestCase):
|
| + def setUp(self):
|
| + super(RetriableHttplib2Test, self).setUp()
|
| + self.http = infra_libs.RetriableHttp()
|
| + self.http._request = mock.create_autospec(self.http._request, spec_set=True)
|
| +
|
| + _MOCK_REQUEST = mock.call(*([mock.ANY] * 9))
|
| +
|
| + def test_succeed(self):
|
| + self.http._request.return_value = (
|
| + httplib2.Response({'status': 400}), 'content')
|
| + response, _ = self.http.request('http://foo/')
|
| + self.assertEqual(400, response.status)
|
| + self.http._request.assert_has_calls([ self._MOCK_REQUEST ])
|
| +
|
| + def test_retry_succeed(self):
|
| + self.http._request.side_effect = iter([
|
| + (httplib2.Response({'status': 500}), 'content'),
|
| + httplib2.HttpLib2Error,
|
| + (httplib2.Response({'status': 200}), 'content')
|
| + ])
|
| + response, _ = self.http.request('http://foo/')
|
| + self.assertEqual(200, response.status)
|
| + self.http._request.assert_has_calls([ self._MOCK_REQUEST ] * 3)
|
| +
|
| + def test_fail_exception(self):
|
| + self.http._request.side_effect = httplib2.HttpLib2Error()
|
| + self.assertRaises(httplib2.HttpLib2Error, self.http.request, 'http://foo/')
|
| + self.http._request.assert_has_calls([ self._MOCK_REQUEST ] * 5)
|
| +
|
| + def test_fail_status_code(self):
|
| + self.http._request.return_value = (
|
| + httplib2.Response({'status': 500}), 'content')
|
| + response, _ = self.http.request('http://foo/')
|
| + self.assertEqual(500, response.status)
|
| + self.http._request.assert_has_calls([ self._MOCK_REQUEST ] * 5)
|
| +
|
|
|
| class InstrumentedHttplib2Test(unittest.TestCase):
|
| def setUp(self):
|
|
|