def test_server_exception_msg_and_traceback(self): error_msg = 'another test error' error_trace = ("\"Traceback (most recent call last):\\n\\n " "File \\\"/usr/local/lib/python2.7/...") error_body = _get_error_body(error_msg, error_trace) fake_session = utils.FakeSession({'Content-Type': 'application/json'}, error_body, 500) client = http.SessionClient(session=fake_session, auth=None, interface=None, service_type='publicURL', region_name='', service_name=None) error = self.assertRaises(exc.InternalServerError, client.json_request, 'GET', '/v1/resources') self.assertEqual( '%(error)s (HTTP 500)\n%(trace)s' % { 'error': error_msg, 'trace': error_trace }, "%(error)s\n%(details)s" % { 'error': str(error), 'details': str(error.details) })
def _session_client(**kwargs): return http.SessionClient(os_ironic_api_version='1.6', api_version_select_state='default', max_retries=5, retry_interval=2, auth=None, interface='publicURL', service_type='baremetal', region_name='', endpoint='http://%s:%s' % (DEFAULT_HOST, DEFAULT_PORT), **kwargs)
def test_server_exception_empty_body(self): error_body = _get_error_body() fake_session = utils.FakeSession({'Content-Type': 'application/json'}, error_body, 500) client = http.SessionClient(session=fake_session, auth=None, interface=None, service_type='publicURL', region_name='', service_name=None) error = self.assertRaises(exc.InternalServerError, client.json_request, 'GET', '/v1/resources') self.assertEqual('Internal Server Error (HTTP 500)', str(error))
def test__parse_version_headers(self): # Test parsing of version headers from SessionClient fake_session = utils.FakeSession( {'X-OpenStack-Ironic-API-Minimum-Version': '1.1', 'X-OpenStack-Ironic-API-Maximum-Version': '1.6', 'content-type': 'text/plain', }, None, 506) expected_result = ('1.1', '1.6') client = http.SessionClient(session=fake_session, auth=None, interface=None, service_type='publicURL', region_name='', service_name=None) result = client._parse_version_headers(fake_session) self.assertEqual(expected_result, result)
def test_session_retry_fail(self): error_body = _get_error_body() fake_resp = utils.FakeSessionResponse( {'Content-Type': 'application/json'}, error_body, 409) fake_session = mock.Mock(spec=utils.FakeSession) fake_session.request.return_value = fake_resp client = http.SessionClient(session=fake_session, auth=None, interface=None, service_type='publicURL', region_name='', service_name=None) self.assertRaises(exc.Conflict, client.json_request, 'GET', '/v1/resources') self.assertEqual(http.DEFAULT_MAX_RETRIES + 1, fake_session.request.call_count)
def test_session_retry(self): error_body = _get_error_body() fake_resp = utils.FakeSessionResponse( {'Content-Type': 'application/json'}, error_body, 409) ok_resp = utils.FakeSessionResponse( {'Content-Type': 'application/json'}, b"OK", 200) fake_session = mock.Mock(spec=utils.FakeSession) fake_session.request.side_effect = iter((fake_resp, ok_resp)) client = http.SessionClient(session=fake_session, auth=None, interface=None, service_type='publicURL', region_name='', service_name=None) client.json_request('GET', '/v1/resources') self.assertEqual(2, fake_session.request.call_count)
def test_session_client_endpoint_deprecation(self, log_mock): http.SessionClient(os_ironic_api_version=1, session=mock.Mock(), api_version_select_state='user', max_retries=5, retry_interval=5, endpoint='abc') self.assertIn('deprecated', log_mock.call_args[0][0])