Skip to content

Commit 747ec5b

Browse files
author
jiahui.qiang
committed
Add unit tests for server create in computev2
Unit tests for server create is not completed. Some of the code in take_action has not been tested. Change-Id: Ifd3f42400408d3437e0bc6cd42acbb6db861b1f3
1 parent 158dbe1 commit 747ec5b

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)