def testGetMetadataRequestRetry(self, mock_request, mock_urlopen, mock_time): mocks = mock.Mock() mocks.attach_mock(mock_request, 'request') mocks.attach_mock(mock_urlopen, 'urlopen') mocks.attach_mock(mock_time, 'time') mock_request.return_value = mock_request mock_unavailable = mock.Mock() mock_unavailable.getcode.return_value = ( metadata_watcher.httpclient.SERVICE_UNAVAILABLE) mock_success = mock.Mock() mock_success.getcode.return_value = metadata_watcher.httpclient.OK # Retry after a service unavailable error response. mock_urlopen.side_effect = [ metadata_watcher.StatusException(mock_unavailable), mock_success, ] self.mock_watcher._GetMetadataRequest(self.url) request_url = '%s?' % self.url headers = {'Metadata-Flavor': 'Google'} timeout = self.timeout * 1.1 expected_calls = [ mock.call.request(request_url, headers=headers), mock.call.urlopen(mock_request, timeout=timeout), mock.call.time.sleep(mock.ANY), mock.call.request(request_url, headers=headers), mock.call.urlopen(mock_request, timeout=timeout), ] self.assertEqual(mocks.mock_calls, expected_calls)
def testGetMetadataRequestHttpException(self, mock_request, mock_urlopen): mock_request.return_value = mock_request mock_response = mock.Mock() mock_response.getcode.return_value = metadata_watcher.httpclient.NOT_FOUND mock_urlopen.side_effect = metadata_watcher.StatusException( mock_response), with self.assertRaises(metadata_watcher.StatusException): self.mock_watcher._GetMetadataRequest(self.url) self.assertEqual(mock_request.call_count, 1) self.assertEqual(mock_urlopen.call_count, 1)