Skip to content

Commit 3bc64aa

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add unit tests for server create in computev2"
2 parents 83cf09d + 747ec5b commit 3bc64aa

1 file changed

Lines changed: 151 additions & 0 deletions

File tree

openstackclient/tests/unit/compute/v2/test_server.py

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,61 @@ def test_server_create_minimal(self):
328328
self.assertEqual(self.columns, columns)
329329
self.assertEqual(self.datalist(), data)
330330

331+
def test_server_create_with_options(self):
332+
arglist = [
333+
'--image', 'image1',
334+
'--flavor', 'flavor1',
335+
'--key-name', 'keyname',
336+
'--property', 'Beta=b',
337+
'--security-group', 'securitygroup',
338+
'--hint', 'a=b',
339+
'--hint', 'a=c',
340+
self.new_server.name,
341+
]
342+
verifylist = [
343+
('image', 'image1'),
344+
('flavor', 'flavor1'),
345+
('key_name', 'keyname'),
346+
('property', {'Beta': 'b'}),
347+
('security_group', ['securitygroup']),
348+
('hint', ['a=b', 'a=c']),
349+
('config_drive', False),
350+
('server_name', self.new_server.name),
351+
]
352+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
353+
354+
# In base command class ShowOne in cliff, abstract method take_action()
355+
# returns a two-part tuple with a tuple of column names and a tuple of
356+
# data to be shown.
357+
columns, data = self.cmd.take_action(parsed_args)
358+
359+
# Set expected values
360+
kwargs = dict(
361+
meta={'Beta': 'b'},
362+
files={},
363+
reservation_id=None,
364+
min_count=1,
365+
max_count=1,
366+
security_groups=['securitygroup'],
367+
userdata=None,
368+
key_name='keyname',
369+
availability_zone=None,
370+
block_device_mapping={},
371+
nics=[],
372+
scheduler_hints={'a': ['b', 'c']},
373+
config_drive=None,
374+
)
375+
# ServerManager.create(name, image, flavor, **kwargs)
376+
self.servers_mock.create.assert_called_with(
377+
self.new_server.name,
378+
self.image,
379+
self.flavor,
380+
**kwargs
381+
)
382+
383+
self.assertEqual(self.columns, columns)
384+
self.assertEqual(self.datalist(), data)
385+
331386
def test_server_create_with_network(self):
332387
arglist = [
333388
'--image', 'image1',
@@ -415,6 +470,102 @@ def test_server_create_with_network(self):
415470
self.assertEqual(self.columns, columns)
416471
self.assertEqual(self.datalist(), data)
417472

473+
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
474+
def test_server_create_with_wait_ok(self, mock_wait_for_status):
475+
arglist = [
476+
'--image', 'image1',
477+
'--flavor', 'flavor1',
478+
'--wait',
479+
self.new_server.name,
480+
]
481+
verifylist = [
482+
('image', 'image1'),
483+
('flavor', 'flavor1'),
484+
('config_drive', False),
485+
('wait', True),
486+
('server_name', self.new_server.name),
487+
]
488+
489+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
490+
columns, data = self.cmd.take_action(parsed_args)
491+
mock_wait_for_status.assert_called_once_with(
492+
self.servers_mock.get,
493+
self.new_server.id,
494+
callback=server._show_progress,
495+
)
496+
497+
kwargs = dict(
498+
meta=None,
499+
files={},
500+
reservation_id=None,
501+
min_count=1,
502+
max_count=1,
503+
security_groups=[],
504+
userdata=None,
505+
key_name=None,
506+
availability_zone=None,
507+
block_device_mapping={},
508+
nics=[],
509+
scheduler_hints={},
510+
config_drive=None,
511+
)
512+
self.servers_mock.create.assert_called_with(
513+
self.new_server.name,
514+
self.image,
515+
self.flavor,
516+
**kwargs
517+
)
518+
self.assertEqual(self.columns, columns)
519+
self.assertEqual(self.datalist(), data)
520+
521+
@mock.patch.object(common_utils, 'wait_for_status', return_value=False)
522+
def test_server_create_with_wait_fails(self, mock_wait_for_status):
523+
arglist = [
524+
'--image', 'image1',
525+
'--flavor', 'flavor1',
526+
'--wait',
527+
self.new_server.name,
528+
]
529+
verifylist = [
530+
('image', 'image1'),
531+
('flavor', 'flavor1'),
532+
('config_drive', False),
533+
('wait', True),
534+
('server_name', self.new_server.name),
535+
]
536+
537+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
538+
539+
self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
540+
541+
mock_wait_for_status.assert_called_once_with(
542+
self.servers_mock.get,
543+
self.new_server.id,
544+
callback=server._show_progress,
545+
)
546+
547+
kwargs = dict(
548+
meta=None,
549+
files={},
550+
reservation_id=None,
551+
min_count=1,
552+
max_count=1,
553+
security_groups=[],
554+
userdata=None,
555+
key_name=None,
556+
availability_zone=None,
557+
block_device_mapping={},
558+
nics=[],
559+
scheduler_hints={},
560+
config_drive=None,
561+
)
562+
self.servers_mock.create.assert_called_with(
563+
self.new_server.name,
564+
self.image,
565+
self.flavor,
566+
**kwargs
567+
)
568+
418569
@mock.patch('openstackclient.compute.v2.server.io.open')
419570
def test_server_create_userdata(self, mock_open):
420571
mock_file = mock.Mock(name='File')

0 commit comments

Comments
 (0)