Add test cases to test some commands with '--wait' and fix bug
"server image create" "server rebuild" "server resize" Above 3 commands are not covered by unit test. So add some unit tests. Meanwhile, fix bug. Now that image name is an optional argument, we'd better record error messages with positional arguments instead of optional argument. So, record server name. Change-Id: I41bc025d4824dc46f63a3213d82e1528bacbbe12
This commit is contained in:
parent
02e5b6f41d
commit
84942bb11c
@ -617,8 +617,8 @@ class CreateServerImage(command.ShowOne):
|
||||
):
|
||||
sys.stdout.write('\n')
|
||||
else:
|
||||
self.log.error(_('Error creating server snapshot: %s'),
|
||||
parsed_args.image_name)
|
||||
self.log.error(_('Error creating snapshot of server: %s'),
|
||||
parsed_args.server)
|
||||
sys.stdout.write(_('\nError creating server snapshot'))
|
||||
raise SystemExit
|
||||
|
||||
|
@ -595,6 +595,64 @@ class TestServerImageCreate(TestServer):
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.datalist(), data)
|
||||
|
||||
@mock.patch.object(common_utils, 'wait_for_status', return_value=False)
|
||||
def test_server_create_image_with_wait_fails(self, mock_wait_for_status):
|
||||
arglist = [
|
||||
'--wait',
|
||||
self.server.id,
|
||||
]
|
||||
verifylist = [
|
||||
('wait', True),
|
||||
('server', self.server.id),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
|
||||
|
||||
mock_wait_for_status.assert_called_once_with(
|
||||
self.images_mock.get,
|
||||
self.image.id,
|
||||
callback=server._show_progress
|
||||
)
|
||||
|
||||
# ServerManager.create_image(server, image_name, metadata=)
|
||||
self.servers_mock.create_image.assert_called_with(
|
||||
self.servers_mock.get.return_value,
|
||||
self.server.name,
|
||||
)
|
||||
|
||||
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
|
||||
def test_server_create_image_with_wait_ok(self, mock_wait_for_status):
|
||||
arglist = [
|
||||
'--wait',
|
||||
self.server.id,
|
||||
]
|
||||
verifylist = [
|
||||
('wait', True),
|
||||
('server', self.server.id),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
# In base command class ShowOne in cliff, abstract method take_action()
|
||||
# returns a two-part tuple with a tuple of column names and a tuple of
|
||||
# data to be shown.
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
# ServerManager.create_image(server, image_name, metadata=)
|
||||
self.servers_mock.create_image.assert_called_with(
|
||||
self.servers_mock.get.return_value,
|
||||
self.server.name,
|
||||
)
|
||||
|
||||
mock_wait_for_status.assert_called_once_with(
|
||||
self.images_mock.get,
|
||||
self.image.id,
|
||||
callback=server._show_progress
|
||||
)
|
||||
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.datalist(), data)
|
||||
|
||||
|
||||
class TestServerList(TestServer):
|
||||
|
||||
@ -831,6 +889,58 @@ class TestServerRebuild(TestServer):
|
||||
self.cimages_mock.get.assert_called_with(self.image.id)
|
||||
self.server.rebuild.assert_called_with(self.image, password)
|
||||
|
||||
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
|
||||
def test_rebuild_with_wait_ok(self, mock_wait_for_status):
|
||||
arglist = [
|
||||
'--wait',
|
||||
self.server.id,
|
||||
]
|
||||
verifylist = [
|
||||
('wait', True),
|
||||
('server', self.server.id),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
# Get the command object to test.
|
||||
self.cmd.take_action(parsed_args)
|
||||
|
||||
# kwargs = dict(success_status=['active', 'verify_resize'],)
|
||||
|
||||
mock_wait_for_status.assert_called_once_with(
|
||||
self.servers_mock.get,
|
||||
self.server.id,
|
||||
callback=server._show_progress,
|
||||
# **kwargs
|
||||
)
|
||||
|
||||
self.servers_mock.get.assert_called_with(self.server.id)
|
||||
self.cimages_mock.get.assert_called_with(self.image.id)
|
||||
self.server.rebuild.assert_called_with(self.image, None)
|
||||
|
||||
@mock.patch.object(common_utils, 'wait_for_status', return_value=False)
|
||||
def test_rebuild_with_wait_fails(self, mock_wait_for_status):
|
||||
arglist = [
|
||||
'--wait',
|
||||
self.server.id,
|
||||
]
|
||||
verifylist = [
|
||||
('wait', True),
|
||||
('server', self.server.id),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
|
||||
|
||||
mock_wait_for_status.assert_called_once_with(
|
||||
self.servers_mock.get,
|
||||
self.server.id,
|
||||
callback=server._show_progress
|
||||
)
|
||||
|
||||
self.servers_mock.get.assert_called_with(self.server.id)
|
||||
self.cimages_mock.get.assert_called_with(self.image.id)
|
||||
self.server.rebuild.assert_called_with(self.image, None)
|
||||
|
||||
|
||||
class TestServerResize(TestServer):
|
||||
|
||||
@ -952,6 +1062,84 @@ class TestServerResize(TestServer):
|
||||
self.server,
|
||||
)
|
||||
|
||||
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
|
||||
def test_server_resize_with_wait_ok(self, mock_wait_for_status):
|
||||
|
||||
arglist = [
|
||||
'--flavor', self.flavors_get_return_value.id,
|
||||
'--wait',
|
||||
self.server.id,
|
||||
]
|
||||
|
||||
verifylist = [
|
||||
('flavor', self.flavors_get_return_value.id),
|
||||
('confirm', False),
|
||||
('revert', False),
|
||||
('wait', True),
|
||||
('server', self.server.id),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
self.cmd.take_action(parsed_args)
|
||||
|
||||
self.servers_mock.get.assert_called_with(
|
||||
self.server.id,
|
||||
)
|
||||
|
||||
kwargs = dict(success_status=['active', 'verify_resize'],)
|
||||
|
||||
mock_wait_for_status.assert_called_once_with(
|
||||
self.servers_mock.get,
|
||||
self.server.id,
|
||||
callback=server._show_progress,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
self.servers_mock.resize.assert_called_with(
|
||||
self.server,
|
||||
self.flavors_get_return_value
|
||||
)
|
||||
self.assertNotCalled(self.servers_mock.confirm_resize)
|
||||
self.assertNotCalled(self.servers_mock.revert_resize)
|
||||
|
||||
@mock.patch.object(common_utils, 'wait_for_status', return_value=False)
|
||||
def test_server_resize_with_wait_fails(self, mock_wait_for_status):
|
||||
|
||||
arglist = [
|
||||
'--flavor', self.flavors_get_return_value.id,
|
||||
'--wait',
|
||||
self.server.id,
|
||||
]
|
||||
|
||||
verifylist = [
|
||||
('flavor', self.flavors_get_return_value.id),
|
||||
('confirm', False),
|
||||
('revert', False),
|
||||
('wait', True),
|
||||
('server', self.server.id),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
|
||||
|
||||
self.servers_mock.get.assert_called_with(
|
||||
self.server.id,
|
||||
)
|
||||
|
||||
kwargs = dict(success_status=['active', 'verify_resize'],)
|
||||
|
||||
mock_wait_for_status.assert_called_once_with(
|
||||
self.servers_mock.get,
|
||||
self.server.id,
|
||||
callback=server._show_progress,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
self.servers_mock.resize.assert_called_with(
|
||||
self.server,
|
||||
self.flavors_get_return_value
|
||||
)
|
||||
|
||||
|
||||
class TestServerResume(TestServer):
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user