Merge "tests: Clean up 'test_hypervisors'"
This commit is contained in:
commit
7527fdf6ea
|
@ -514,6 +514,13 @@ class HypervisorsTestV21(test.NoDBTestCase):
|
||||||
|
|
||||||
_test(self)
|
_test(self)
|
||||||
|
|
||||||
|
def test_show(self):
|
||||||
|
req = self._get_request(True)
|
||||||
|
hyper_id = self._get_hyper_id()
|
||||||
|
result = self.controller.show(req, hyper_id)
|
||||||
|
|
||||||
|
self.assertEqual({'hypervisor': self.DETAIL_HYPERS_DICTS[0]}, result)
|
||||||
|
|
||||||
def test_show_compute_host_not_mapped(self):
|
def test_show_compute_host_not_mapped(self):
|
||||||
"""Tests that if a service is deleted but the compute node is not we
|
"""Tests that if a service is deleted but the compute node is not we
|
||||||
don't fail when listing hypervisors.
|
don't fail when listing hypervisors.
|
||||||
|
@ -543,13 +550,6 @@ class HypervisorsTestV21(test.NoDBTestCase):
|
||||||
req = self._get_request(True)
|
req = self._get_request(True)
|
||||||
self.assertRaises(exc.HTTPNotFound, self.controller.show, req, 'abc')
|
self.assertRaises(exc.HTTPNotFound, self.controller.show, req, 'abc')
|
||||||
|
|
||||||
def test_show_with_id(self):
|
|
||||||
req = self._get_request(True)
|
|
||||||
hyper_id = self._get_hyper_id()
|
|
||||||
result = self.controller.show(req, hyper_id)
|
|
||||||
|
|
||||||
self.assertEqual(dict(hypervisor=self.DETAIL_HYPERS_DICTS[0]), result)
|
|
||||||
|
|
||||||
def test_uptime(self):
|
def test_uptime(self):
|
||||||
with mock.patch.object(
|
with mock.patch.object(
|
||||||
self.controller.host_api, 'get_host_uptime',
|
self.controller.host_api, 'get_host_uptime',
|
||||||
|
@ -737,7 +737,7 @@ class HypervisorsTestV21(test.NoDBTestCase):
|
||||||
self.controller.servers, req, 'abc')
|
self.controller.servers, req, 'abc')
|
||||||
self.assertEqual(1, mock_node_search.call_count)
|
self.assertEqual(1, mock_node_search.call_count)
|
||||||
|
|
||||||
def test_servers_with_no_server(self):
|
def test_servers_with_no_servers(self):
|
||||||
with mock.patch.object(self.controller.host_api,
|
with mock.patch.object(self.controller.host_api,
|
||||||
'instance_get_all_by_host',
|
'instance_get_all_by_host',
|
||||||
return_value=[]) as mock_inst_get_all:
|
return_value=[]) as mock_inst_get_all:
|
||||||
|
@ -1036,7 +1036,27 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
self.controller.servers,
|
self.controller.servers,
|
||||||
self._get_request(True), 'hyper')
|
self._get_request(True), 'hyper')
|
||||||
|
|
||||||
def test_servers_with_no_server(self):
|
def test_servers_not_mapped(self):
|
||||||
|
# the separate 'servers' API has been removed, so skip this test
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_servers_compute_host_not_found(self):
|
||||||
|
# the separate 'servers' API has been removed, so skip this test
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_servers_non_id(self):
|
||||||
|
# the separate 'servers' API has been removed, so skip this test
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_servers_with_non_integer_hypervisor_id(self):
|
||||||
|
# the separate 'servers' API has been removed, so skip this test
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_servers_with_no_servers(self):
|
||||||
|
# the separate 'servers' API has been removed, so skip this test
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_index_with_no_servers(self):
|
||||||
"""Tests GET /os-hypervisors?with_servers=1 when there are no
|
"""Tests GET /os-hypervisors?with_servers=1 when there are no
|
||||||
instances on the given host.
|
instances on the given host.
|
||||||
"""
|
"""
|
||||||
|
@ -1053,7 +1073,7 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
mock.call(req.environ['nova.context'], TEST_HYPERS_OBJ[0].host),
|
mock.call(req.environ['nova.context'], TEST_HYPERS_OBJ[0].host),
|
||||||
mock.call(req.environ['nova.context'], TEST_HYPERS_OBJ[1].host)))
|
mock.call(req.environ['nova.context'], TEST_HYPERS_OBJ[1].host)))
|
||||||
|
|
||||||
def test_servers_not_mapped(self):
|
def test_index_with_servers_not_mapped(self):
|
||||||
"""Tests that instance_get_all_by_host fails with HostMappingNotFound.
|
"""Tests that instance_get_all_by_host fails with HostMappingNotFound.
|
||||||
"""
|
"""
|
||||||
req = self._get_request(use_admin_context=True,
|
req = self._get_request(use_admin_context=True,
|
||||||
|
@ -1064,7 +1084,7 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
result = self.controller.index(req)
|
result = self.controller.index(req)
|
||||||
self.assertEqual(dict(hypervisors=[]), result)
|
self.assertEqual(dict(hypervisors=[]), result)
|
||||||
|
|
||||||
def test_servers_compute_host_not_found(self):
|
def test_index_with_servers_compute_host_not_found(self):
|
||||||
req = self._get_request(
|
req = self._get_request(
|
||||||
use_admin_context=True,
|
use_admin_context=True,
|
||||||
url='/os-hypervisors?with_servers=1')
|
url='/os-hypervisors?with_servers=1')
|
||||||
|
@ -1084,7 +1104,7 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
result = self.controller.index(req)
|
result = self.controller.index(req)
|
||||||
self.assertEqual({'hypervisors': []}, result)
|
self.assertEqual({'hypervisors': []}, result)
|
||||||
|
|
||||||
def test_list_with_servers(self):
|
def test_index_with_servers(self):
|
||||||
"""Tests GET /os-hypervisors?with_servers=True"""
|
"""Tests GET /os-hypervisors?with_servers=True"""
|
||||||
instances = [
|
instances = [
|
||||||
objects.InstanceList(objects=[objects.Instance(
|
objects.InstanceList(objects=[objects.Instance(
|
||||||
|
@ -1109,14 +1129,14 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
mock.call(req.environ['nova.context'], TEST_HYPERS_OBJ[0].host),
|
mock.call(req.environ['nova.context'], TEST_HYPERS_OBJ[0].host),
|
||||||
mock.call(req.environ['nova.context'], TEST_HYPERS_OBJ[1].host)))
|
mock.call(req.environ['nova.context'], TEST_HYPERS_OBJ[1].host)))
|
||||||
|
|
||||||
def test_list_with_servers_invalid_parameter(self):
|
def test_index_with_servers_invalid_parameter(self):
|
||||||
"""Tests using an invalid with_servers query parameter."""
|
"""Tests using an invalid with_servers query parameter."""
|
||||||
req = self._get_request(use_admin_context=True,
|
req = self._get_request(use_admin_context=True,
|
||||||
url='/os-hypervisors?with_servers=invalid')
|
url='/os-hypervisors?with_servers=invalid')
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
exception.ValidationError, self.controller.index, req)
|
exception.ValidationError, self.controller.index, req)
|
||||||
|
|
||||||
def test_list_with_hostname_pattern_and_paging_parameters(self):
|
def test_index_with_hostname_pattern_and_paging_parameters(self):
|
||||||
"""This is a negative test to validate that trying to list hypervisors
|
"""This is a negative test to validate that trying to list hypervisors
|
||||||
with a hostname pattern and paging parameters results in a 400 error.
|
with a hostname pattern and paging parameters results in a 400 error.
|
||||||
"""
|
"""
|
||||||
|
@ -1129,7 +1149,7 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
'hypervisor_hostname_pattern query parameter is not '
|
'hypervisor_hostname_pattern query parameter is not '
|
||||||
'supported.', str(ex))
|
'supported.', str(ex))
|
||||||
|
|
||||||
def test_servers_with_non_integer_hypervisor_id(self):
|
def test_index_with_hostname_pattern_no_match(self):
|
||||||
"""This is a poorly named test, it's really checking the 404 case where
|
"""This is a poorly named test, it's really checking the 404 case where
|
||||||
there is no match for the hostname pattern.
|
there is no match for the hostname pattern.
|
||||||
"""
|
"""
|
||||||
|
@ -1143,19 +1163,7 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
self.assertRaises(exc.HTTPNotFound, self.controller.index, req)
|
self.assertRaises(exc.HTTPNotFound, self.controller.index, req)
|
||||||
s.assert_called_once_with(req.environ['nova.context'], 'shenzhen')
|
s.assert_called_once_with(req.environ['nova.context'], 'shenzhen')
|
||||||
|
|
||||||
def test_servers_non_id(self):
|
def test_detail_with_hostname_pattern(self):
|
||||||
"""There is no reason to test this for 2.53 since the
|
|
||||||
/os-hypervisors/servers route is deprecated.
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_search_old_route(self):
|
|
||||||
"""Asserts that calling the search route after 2.52 fails."""
|
|
||||||
self.assertRaises(exception.VersionNotFoundForAPIMethod,
|
|
||||||
self.controller.search,
|
|
||||||
self._get_request(True), 'hyper')
|
|
||||||
|
|
||||||
def test_search(self):
|
|
||||||
"""Test listing hypervisors with details and using the
|
"""Test listing hypervisors with details and using the
|
||||||
hypervisor_hostname_pattern query string.
|
hypervisor_hostname_pattern query string.
|
||||||
"""
|
"""
|
||||||
|
@ -1177,7 +1185,7 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
self.assertNotIn('hypervisors_links', result)
|
self.assertNotIn('hypervisors_links', result)
|
||||||
self.assertDictEqual(expected, result)
|
self.assertDictEqual(expected, result)
|
||||||
|
|
||||||
def test_search_invalid_hostname_pattern_parameter(self):
|
def test_detail_invalid_hostname_pattern_parameter(self):
|
||||||
"""Tests passing an invalid hypervisor_hostname_pattern query
|
"""Tests passing an invalid hypervisor_hostname_pattern query
|
||||||
parameter.
|
parameter.
|
||||||
"""
|
"""
|
||||||
|
@ -1187,6 +1195,12 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
exception.ValidationError, self.controller.detail, req)
|
exception.ValidationError, self.controller.detail, req)
|
||||||
|
|
||||||
|
def test_search(self):
|
||||||
|
"""Asserts that calling the search route after 2.52 fails."""
|
||||||
|
self.assertRaises(exception.VersionNotFoundForAPIMethod,
|
||||||
|
self.controller.search,
|
||||||
|
self._get_request(True), 'hyper')
|
||||||
|
|
||||||
def test_search_non_exist(self):
|
def test_search_non_exist(self):
|
||||||
"""This is a duplicate of test_servers_with_non_integer_hypervisor_id.
|
"""This is a duplicate of test_servers_with_non_integer_hypervisor_id.
|
||||||
"""
|
"""
|
||||||
|
@ -1256,6 +1270,17 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
mock_inst_get_all.assert_called_once_with(
|
mock_inst_get_all.assert_called_once_with(
|
||||||
req.environ['nova.context'], TEST_HYPERS_OBJ[0].host)
|
req.environ['nova.context'], TEST_HYPERS_OBJ[0].host)
|
||||||
|
|
||||||
|
def test_show_duplicate_query_parameters_validation(self):
|
||||||
|
"""Tests that the show query parameter schema enforces only a single
|
||||||
|
entry for any query parameter.
|
||||||
|
"""
|
||||||
|
req = self._get_request(
|
||||||
|
use_admin_context=True,
|
||||||
|
url='/os-hypervisors/%s?with_servers=1&with_servers=1' %
|
||||||
|
uuids.hyper1)
|
||||||
|
self.assertRaises(exception.ValidationError,
|
||||||
|
self.controller.show, req, uuids.hyper1)
|
||||||
|
|
||||||
def test_uptime_non_integer_id(self):
|
def test_uptime_non_integer_id(self):
|
||||||
"""There is no reason to test this for 2.53 since 2.53 requires a
|
"""There is no reason to test this for 2.53 since 2.53 requires a
|
||||||
non-integer id (requires a uuid).
|
non-integer id (requires a uuid).
|
||||||
|
@ -1370,22 +1395,11 @@ class HypervisorsTestV253(HypervisorsTestV252):
|
||||||
self.assertRaises(exception.ValidationError,
|
self.assertRaises(exception.ValidationError,
|
||||||
self.controller.index, req)
|
self.controller.index, req)
|
||||||
|
|
||||||
def test_show_duplicate_query_parameters_validation(self):
|
|
||||||
"""Tests that the show query parameter schema enforces only a single
|
|
||||||
entry for any query parameter.
|
|
||||||
"""
|
|
||||||
req = self._get_request(
|
|
||||||
use_admin_context=True,
|
|
||||||
url='/os-hypervisors/%s?with_servers=1&with_servers=1' %
|
|
||||||
uuids.hyper1)
|
|
||||||
self.assertRaises(exception.ValidationError,
|
|
||||||
self.controller.show, req, uuids.hyper1)
|
|
||||||
|
|
||||||
|
|
||||||
class HypervisorsTestV275(HypervisorsTestV253):
|
class HypervisorsTestV275(HypervisorsTestV253):
|
||||||
api_version = '2.75'
|
api_version = '2.75'
|
||||||
|
|
||||||
def _test_servers_with_no_server(self, func, version=None, **kwargs):
|
def _test_servers_with_no_servers(self, func, version=None, **kwargs):
|
||||||
"""Tests GET APIs return 'servers' field in response even
|
"""Tests GET APIs return 'servers' field in response even
|
||||||
no servers on hypervisors.
|
no servers on hypervisors.
|
||||||
"""
|
"""
|
||||||
|
@ -1401,39 +1415,38 @@ class HypervisorsTestV275(HypervisorsTestV253):
|
||||||
result = func(req, **kwargs)
|
result = func(req, **kwargs)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def test_list_servers_with_no_server_old_version(self):
|
def test_index_with_no_servers(self):
|
||||||
result = self._test_servers_with_no_server(self.controller.index,
|
result = self._test_servers_with_no_servers(self.controller.index)
|
||||||
version='2.74')
|
|
||||||
for hyper in result['hypervisors']:
|
|
||||||
self.assertNotIn('servers', hyper)
|
|
||||||
|
|
||||||
def test_list_detail_servers_with_no_server_old_version(self):
|
|
||||||
result = self._test_servers_with_no_server(self.controller.detail,
|
|
||||||
version='2.74')
|
|
||||||
for hyper in result['hypervisors']:
|
|
||||||
self.assertNotIn('servers', hyper)
|
|
||||||
|
|
||||||
def test_show_servers_with_no_server_old_version(self):
|
|
||||||
result = self._test_servers_with_no_server(self.controller.show,
|
|
||||||
version='2.74',
|
|
||||||
id=uuids.hyper1)
|
|
||||||
self.assertNotIn('servers', result['hypervisor'])
|
|
||||||
|
|
||||||
def test_servers_with_no_server(self):
|
|
||||||
result = self._test_servers_with_no_server(self.controller.index)
|
|
||||||
for hyper in result['hypervisors']:
|
for hyper in result['hypervisors']:
|
||||||
self.assertEqual(0, len(hyper['servers']))
|
self.assertEqual(0, len(hyper['servers']))
|
||||||
|
|
||||||
def test_list_detail_servers_with_empty_server_list(self):
|
def test_index_with_no_servers_old_version(self):
|
||||||
result = self._test_servers_with_no_server(self.controller.detail)
|
result = self._test_servers_with_no_servers(
|
||||||
|
self.controller.index, version='2.74')
|
||||||
|
for hyper in result['hypervisors']:
|
||||||
|
self.assertNotIn('servers', hyper)
|
||||||
|
|
||||||
|
def test_detail_with_no_servers(self):
|
||||||
|
result = self._test_servers_with_no_servers(self.controller.detail)
|
||||||
for hyper in result['hypervisors']:
|
for hyper in result['hypervisors']:
|
||||||
self.assertEqual(0, len(hyper['servers']))
|
self.assertEqual(0, len(hyper['servers']))
|
||||||
|
|
||||||
def test_show_servers_with_empty_server_list(self):
|
def test_detail_with_no_servers_old_version(self):
|
||||||
result = self._test_servers_with_no_server(self.controller.show,
|
result = self._test_servers_with_no_servers(
|
||||||
id=uuids.hyper1)
|
self.controller.detail, version='2.74')
|
||||||
|
for hyper in result['hypervisors']:
|
||||||
|
self.assertNotIn('servers', hyper)
|
||||||
|
|
||||||
|
def test_show_with_no_servers(self):
|
||||||
|
result = self._test_servers_with_no_servers(
|
||||||
|
self.controller.show, id=uuids.hyper1)
|
||||||
self.assertEqual(0, len(result['hypervisor']['servers']))
|
self.assertEqual(0, len(result['hypervisor']['servers']))
|
||||||
|
|
||||||
|
def test_show_with_no_servers_old_version(self):
|
||||||
|
result = self._test_servers_with_no_servers(
|
||||||
|
self.controller.show, version='2.74', id=uuids.hyper1)
|
||||||
|
self.assertNotIn('servers', result['hypervisor'])
|
||||||
|
|
||||||
|
|
||||||
class HypervisorsTestV288(HypervisorsTestV275):
|
class HypervisorsTestV288(HypervisorsTestV275):
|
||||||
api_version = '2.88'
|
api_version = '2.88'
|
||||||
|
|
Loading…
Reference in New Issue