Skip to content

Commit d763acd

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add test cases to test some commands with '--wait' and fix bug"
2 parents 2d3ded5 + 84942bb commit d763acd

2 files changed

Lines changed: 190 additions & 2 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -617,8 +617,8 @@ def take_action(self, parsed_args):
617617
):
618618
sys.stdout.write('\n')
619619
else:
620-
self.log.error(_('Error creating server snapshot: %s'),
621-
parsed_args.image_name)
620+
self.log.error(_('Error creating snapshot of server: %s'),
621+
parsed_args.server)
622622
sys.stdout.write(_('\nError creating server snapshot'))
623623
raise SystemExit
624624

openstackclient/tests/compute/v2/test_server.py

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,64 @@ def test_server_image_create_name(self):
592592
self.assertEqual(self.columns, columns)
593593
self.assertEqual(self.datalist(), data)
594594

595+
@mock.patch.object(common_utils, 'wait_for_status', return_value=False)
596+
def test_server_create_image_with_wait_fails(self, mock_wait_for_status):
597+
arglist = [
598+
'--wait',
599+
self.server.id,
600+
]
601+
verifylist = [
602+
('wait', True),
603+
('server', self.server.id),
604+
]
605+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
606+
607+
self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
608+
609+
mock_wait_for_status.assert_called_once_with(
610+
self.images_mock.get,
611+
self.image.id,
612+
callback=server._show_progress
613+
)
614+
615+
# ServerManager.create_image(server, image_name, metadata=)
616+
self.servers_mock.create_image.assert_called_with(
617+
self.servers_mock.get.return_value,
618+
self.server.name,
619+
)
620+
621+
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
622+
def test_server_create_image_with_wait_ok(self, mock_wait_for_status):
623+
arglist = [
624+
'--wait',
625+
self.server.id,
626+
]
627+
verifylist = [
628+
('wait', True),
629+
('server', self.server.id),
630+
]
631+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
632+
633+
# In base command class ShowOne in cliff, abstract method take_action()
634+
# returns a two-part tuple with a tuple of column names and a tuple of
635+
# data to be shown.
636+
columns, data = self.cmd.take_action(parsed_args)
637+
638+
# ServerManager.create_image(server, image_name, metadata=)
639+
self.servers_mock.create_image.assert_called_with(
640+
self.servers_mock.get.return_value,
641+
self.server.name,
642+
)
643+
644+
mock_wait_for_status.assert_called_once_with(
645+
self.images_mock.get,
646+
self.image.id,
647+
callback=server._show_progress
648+
)
649+
650+
self.assertEqual(self.columns, columns)
651+
self.assertEqual(self.datalist(), data)
652+
595653

596654
class TestServerList(TestServer):
597655

@@ -872,6 +930,58 @@ def test_rebuild_with_current_image_and_password(self):
872930
self.cimages_mock.get.assert_called_with(self.image.id)
873931
self.server.rebuild.assert_called_with(self.image, password)
874932

933+
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
934+
def test_rebuild_with_wait_ok(self, mock_wait_for_status):
935+
arglist = [
936+
'--wait',
937+
self.server.id,
938+
]
939+
verifylist = [
940+
('wait', True),
941+
('server', self.server.id),
942+
]
943+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
944+
945+
# Get the command object to test.
946+
self.cmd.take_action(parsed_args)
947+
948+
# kwargs = dict(success_status=['active', 'verify_resize'],)
949+
950+
mock_wait_for_status.assert_called_once_with(
951+
self.servers_mock.get,
952+
self.server.id,
953+
callback=server._show_progress,
954+
# **kwargs
955+
)
956+
957+
self.servers_mock.get.assert_called_with(self.server.id)
958+
self.cimages_mock.get.assert_called_with(self.image.id)
959+
self.server.rebuild.assert_called_with(self.image, None)
960+
961+
@mock.patch.object(common_utils, 'wait_for_status', return_value=False)
962+
def test_rebuild_with_wait_fails(self, mock_wait_for_status):
963+
arglist = [
964+
'--wait',
965+
self.server.id,
966+
]
967+
verifylist = [
968+
('wait', True),
969+
('server', self.server.id),
970+
]
971+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
972+
973+
self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
974+
975+
mock_wait_for_status.assert_called_once_with(
976+
self.servers_mock.get,
977+
self.server.id,
978+
callback=server._show_progress
979+
)
980+
981+
self.servers_mock.get.assert_called_with(self.server.id)
982+
self.cimages_mock.get.assert_called_with(self.image.id)
983+
self.server.rebuild.assert_called_with(self.image, None)
984+
875985

876986
class TestServerResize(TestServer):
877987

@@ -982,6 +1092,84 @@ def test_server_resize_revert(self):
9821092
self.servers_mock.revert_resize.assert_called_with(self.server)
9831093
self.assertIsNone(result)
9841094

1095+
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
1096+
def test_server_resize_with_wait_ok(self, mock_wait_for_status):
1097+
1098+
arglist = [
1099+
'--flavor', self.flavors_get_return_value.id,
1100+
'--wait',
1101+
self.server.id,
1102+
]
1103+
1104+
verifylist = [
1105+
('flavor', self.flavors_get_return_value.id),
1106+
('confirm', False),
1107+
('revert', False),
1108+
('wait', True),
1109+
('server', self.server.id),
1110+
]
1111+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1112+
1113+
self.cmd.take_action(parsed_args)
1114+
1115+
self.servers_mock.get.assert_called_with(
1116+
self.server.id,
1117+
)
1118+
1119+
kwargs = dict(success_status=['active', 'verify_resize'],)
1120+
1121+
mock_wait_for_status.assert_called_once_with(
1122+
self.servers_mock.get,
1123+
self.server.id,
1124+
callback=server._show_progress,
1125+
**kwargs
1126+
)
1127+
1128+
self.servers_mock.resize.assert_called_with(
1129+
self.server,
1130+
self.flavors_get_return_value
1131+
)
1132+
self.assertNotCalled(self.servers_mock.confirm_resize)
1133+
self.assertNotCalled(self.servers_mock.revert_resize)
1134+
1135+
@mock.patch.object(common_utils, 'wait_for_status', return_value=False)
1136+
def test_server_resize_with_wait_fails(self, mock_wait_for_status):
1137+
1138+
arglist = [
1139+
'--flavor', self.flavors_get_return_value.id,
1140+
'--wait',
1141+
self.server.id,
1142+
]
1143+
1144+
verifylist = [
1145+
('flavor', self.flavors_get_return_value.id),
1146+
('confirm', False),
1147+
('revert', False),
1148+
('wait', True),
1149+
('server', self.server.id),
1150+
]
1151+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1152+
1153+
self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
1154+
1155+
self.servers_mock.get.assert_called_with(
1156+
self.server.id,
1157+
)
1158+
1159+
kwargs = dict(success_status=['active', 'verify_resize'],)
1160+
1161+
mock_wait_for_status.assert_called_once_with(
1162+
self.servers_mock.get,
1163+
self.server.id,
1164+
callback=server._show_progress,
1165+
**kwargs
1166+
)
1167+
1168+
self.servers_mock.resize.assert_called_with(
1169+
self.server,
1170+
self.flavors_get_return_value
1171+
)
1172+
9851173

9861174
class TestServerResume(TestServer):
9871175

0 commit comments

Comments
 (0)