TestServerGeneral: Add test for _prep_server_detail()
1. Make TestServerGeneral inherit from TestServer because we need to use servers_mock, image_mock and flavor_mock in compute_client. 2. Create a dict containing all info of a server in the original format, and pass it to _prep_server_detail(). 3. Compare the original and formatted dict. Change-Id: Ie0b83c42a5c3bbba630a064d28374d07e2ce9caf Implements: blueprint osc-unit-test-framework-improvement
This commit is contained in:
		| @@ -14,7 +14,6 @@ | |||||||
| # | # | ||||||
|  |  | ||||||
| import mock | import mock | ||||||
| import testtools |  | ||||||
|  |  | ||||||
| from mock import call | from mock import call | ||||||
| from openstackclient.common import exceptions | from openstackclient.common import exceptions | ||||||
| @@ -1066,7 +1065,7 @@ class TestServerUnshelve(TestServer): | |||||||
|         self.run_method_with_servers('unshelve', 3) |         self.run_method_with_servers('unshelve', 3) | ||||||
|  |  | ||||||
|  |  | ||||||
| class TestServerGeneral(testtools.TestCase): | class TestServerGeneral(TestServer): | ||||||
|     OLD = { |     OLD = { | ||||||
|         'private': [ |         'private': [ | ||||||
|             { |             { | ||||||
| @@ -1160,3 +1159,46 @@ class TestServerGeneral(testtools.TestCase): | |||||||
|                'actual    = %s\n' % |                'actual    = %s\n' % | ||||||
|                (data_1, data_2, networks_format)) |                (data_1, data_2, networks_format)) | ||||||
|         self.assertIn(networks_format, (data_1, data_2), msg) |         self.assertIn(networks_format, (data_1, data_2), msg) | ||||||
|  |  | ||||||
|  |     @mock.patch('openstackclient.common.utils.find_resource') | ||||||
|  |     def test_prep_server_detail(self, find_resource): | ||||||
|  |         # Setup mock method return value. utils.find_resource() will be called | ||||||
|  |         # twice in _prep_server_detail(): | ||||||
|  |         # - The first time, return image info. | ||||||
|  |         # - The second time, return flavor info. | ||||||
|  |         _image = image_fakes.FakeImage.create_one_image() | ||||||
|  |         _flavor = compute_fakes.FakeFlavor.create_one_flavor() | ||||||
|  |         find_resource.side_effect = [_image, _flavor] | ||||||
|  |  | ||||||
|  |         # compute_client.servers.get() will be called once, return server info. | ||||||
|  |         server_info = { | ||||||
|  |             'image': {u'id': _image.id}, | ||||||
|  |             'flavor': {u'id': _flavor.id}, | ||||||
|  |             'tenant_id': u'tenant-id-xxx', | ||||||
|  |             'networks': {u'public': [u'10.20.30.40', u'2001:db8::f']}, | ||||||
|  |             'links': u'http://xxx.yyy.com', | ||||||
|  |         } | ||||||
|  |         _server = compute_fakes.FakeServer.create_one_server(attrs=server_info) | ||||||
|  |         self.servers_mock.get.return_value = _server | ||||||
|  |  | ||||||
|  |         # Prepare result data. | ||||||
|  |         info = { | ||||||
|  |             'id': _server.id, | ||||||
|  |             'name': _server.name, | ||||||
|  |             'addresses': u'public=10.20.30.40, 2001:db8::f', | ||||||
|  |             'flavor': u'%s (%s)' % (_flavor.name, _flavor.id), | ||||||
|  |             'image': u'%s (%s)' % (_image.name, _image.id), | ||||||
|  |             'project_id': u'tenant-id-xxx', | ||||||
|  |             'properties': '', | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # Call _prep_server_detail(). | ||||||
|  |         server_detail = server._prep_server_detail( | ||||||
|  |             self.app.client_manager.compute, | ||||||
|  |             _server | ||||||
|  |         ) | ||||||
|  |         # 'networks' is used to create _server. Remove it. | ||||||
|  |         server_detail.pop('networks') | ||||||
|  |  | ||||||
|  |         # Check the results. | ||||||
|  |         self.assertDictEqual(info, server_detail) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Tang Chen
					Tang Chen