Update unit tests

- Updated existing unit tests
 - Add additional unit tests

Change-Id: I7a109ee890988eeb706559b4c7740d66444d3d96
Signed-off-by: Helena McGough <helena.mcgough@intel.com>
This commit is contained in:
Helena McGough 2019-04-20 17:59:48 +00:00 committed by Helena
parent bbc9417e83
commit e0c800f655
2 changed files with 212 additions and 3 deletions

View File

@ -17,6 +17,8 @@ import json
import mock
import requests
from nova import context
from nova import exception
@ -33,6 +35,7 @@ from nova.virt import hardware
from rsd_virt_for_nova.virt import rsd
from rsd_virt_for_nova.virt.rsd import driver
from rsd_virt_for_nova.virt.rsd import flavor_management
from oslo_utils import versionutils
@ -50,6 +53,19 @@ from rsd_lib.resources.v2_3 import node as v2_3_node
from sushy import connector
class FakeResponse(object):
"""A class to fake out the response from a request."""
def __init__(self, text, status_code):
"""Initialize the variables for the fake response."""
self.text = text
self.status_code = status_code
def __getitem__(self, key):
"""Method to retrieve fake instance variables."""
return getattr(self, key)
class FakeInstance(object):
"""A class to fake out nova instances."""
@ -756,3 +772,183 @@ class TestRSDDriver(base.BaseTestCase):
'/redfish/v1/Systems/System2',
'/redfish/v1/Systems/System3',
'/redfish/v1/Systems/System4'])
@mock.patch.object(flavor_management.FlavorManager, '_create_request_url')
@mock.patch.object(driver, 'requests')
@mock.patch.object(fields.ResourceClass, 'normalize_name')
@mock.patch.object(driver.RSDDriver, 'check_chassis_systems')
def test_create_flavors(self, check_chas, norm_name, reqs, create_url):
"""Test successfully creating a new flavor."""
sys_col = self.RSD.driver.PODM.get_system_collection.return_value
sys_col.get_member.return_value = self.system_inst
chas_col = self.RSD.driver.PODM.get_chassis_collection.return_value
chas_col.members_identities = ['/redfish/v1/Chassis/Chassis1']
chas_col.get_member.return_value = self.chassis_inst
check_chas.return_value = ['/redfish/v1/Systems/System1']
self.RSD._url_base = "mock_url_base"
self.RSD.headers = "headers"
mem = self.RSD.conv_GiB_to_MiB(
self.system_inst.memory_summary.total_system_memory_gib) - 512
proc = self.system_inst.json['ProcessorSummary']['Count']
flav_id = str(mem) + 'MB-' + str(proc) + 'vcpus'
spec = str('resources:' + norm_name.return_value)
mock_specs = {
'extra_specs': {
spec: '1'}}
# Run Test
self.RSD._create_flavors()
self.RSD.driver.PODM.get_system_collection.assert_called_once()
self.RSD.driver.PODM.get_chassis_collection.assert_called_once()
chas_col.get_member.assert_called_with(self.chassis_inst.path)
check_chas.assert_called_with(self.chassis_inst)
sys_col.get_member.assert_called_with(self.system_inst.path)
norm_name.assert_called_once_with(flav_id)
create_url.assert_called_once_with(flav_id, 'update')
reqs.post.assert_called_with(create_url.return_value,
data=json.dumps(mock_specs), headers="headers")
self.assertEquals(self.RSD.chas_systems,
{str(self.chassis_inst.path):
[str(self.system_inst.path)]})
self.assertEquals(self.RSD.rsd_flavors,
{flav_id: {
'rsd_systems': self.RSD.chas_systems}})
@mock.patch.object(requests, 'post')
@mock.patch.object(fields.ResourceClass, 'normalize_name')
@mock.patch.object(driver.RSDDriver, 'check_chassis_systems')
def test_create_flavors_exists(self, check_chas, norm_name, post_req):
"""Test existing failure to create a new flavor."""
sys_col = self.RSD.driver.PODM.get_system_collection.return_value
sys_col.get_member.return_value = self.system_inst
chas_col = self.RSD.driver.PODM.get_chassis_collection.return_value
chas_col.members_identities = ['/redfish/v1/Chassis/Chassis1']
chas_col.get_member.return_value = self.chassis_inst
check_chas.return_value = ['/redfish/v1/Systems/System1']
# Run Test
self.RSD._create_flavors()
self.RSD.driver.PODM.get_system_collection.assert_called_once()
self.RSD.driver.PODM.get_chassis_collection.assert_called_once()
chas_col.get_member.assert_called_with(self.chassis_inst.path)
check_chas.assert_called_with(self.chassis_inst)
sys_col.get_member.assert_called_with(self.system_inst.path)
post_req.assert_not_called()
@mock.patch.object(flavor_management.FlavorManager, '_create_request_url')
@mock.patch.object(driver.requests, 'get')
@mock.patch.object(flavor_management.FlavorManager, 'get_headers')
@mock.patch.object(flavor_management.FlavorManager, '_get_base_url')
@mock.patch.object(flavor_management.FlavorManager, 'keystone_req')
@mock.patch.object(driver.RSDDriver, 'conv_GiB_to_MiB')
def test_check_flavors_success_exists(self, conv_mem, key_req, get_url,
get_head, get_req, create_url):
"""Test successfully checking all valid flavors."""
response = {"flavors": [
{"id": "1",
"links": [
{"href": "http://openstack.example.com/v2/6f70656e/flavors/1",
"rel": "self"
},
{"href": "http://openstack.example.com/6f70656e/flavors/1",
"rel": "bookmark"
}],
"name": "m1.tiny"
},
{"id": "2",
"links": [
{"href": "http://openstack.example.com/v2/6f70656e/flavors/2",
"rel": "self"
},
{"href": "http://openstack.example.com/6f70656e/flavors/2",
"rel": "bookmark"
}],
"name": "m1.small"
}]
}
resp = FakeResponse(response, 201)
get_req.return_value.text = json.dumps(resp.text)
# Run test
self.RSD.check_flavors(
self.system_col, self.system_col.members_identities)
conv_mem.assert_called_with(
self.system_inst.memory_summary.total_system_memory_gib)
key_req.assert_called_once()
self.assertEqual(self.RSD._auth_token, key_req.return_value.auth_token)
get_url.assert_called_once()
get_head.assert_called_with(self.RSD._auth_token)
get_req.assert_called_with(
get_url.return_value, headers=self.RSD.headers)
create_url.assert_not_called()
@mock.patch.object(driver.requests, 'delete')
@mock.patch.object(flavor_management.FlavorManager, '_create_request_url')
@mock.patch.object(driver.requests, 'get')
@mock.patch.object(flavor_management.FlavorManager, 'get_headers')
@mock.patch.object(flavor_management.FlavorManager, '_get_base_url')
@mock.patch.object(flavor_management.FlavorManager, 'keystone_req')
@mock.patch.object(driver.RSDDriver, 'conv_GiB_to_MiB')
def test_check_flavors_success_update(self, conv_mem, key_req, get_url,
get_head, get_req, create_url, del_req):
"""Test successfully checking all valid flavors, delete flavor."""
gb = self.system_inst.memory_summary.total_system_memory_gib
mem = self.RSD.conv_GiB_to_MiB(gb)
proc = self.system_inst.json['ProcessorSummary']['Count']
flavID = str(mem) + 'MB-' + str(proc) + 'vcpus'
response = {"flavors": [
{"id": "1",
"links": [
{"href": "http://openstack.example.com/v2/6e/flavors/1",
"rel": "self"
},
{"href": "http://openstack.example.com/6e/flavors/1",
"rel": "bookmark"
}],
"name": "m1.tiny"
},
{"id": "2",
"links": [
{"href": "http://openstack.example.com/v2/6e/flavors/2",
"rel": "self"
},
{"href": "http://openstack.example.com/6e/flavors/2",
"rel": "bookmark"
}],
"name": "m1.small"
},
{"id": flavID,
"links": [
{"href": "http://openstack.example.com/v2/6e/flavors/%s" + flavID,
"rel": "self"
},
{"href": "http://openstack.example.com/6e/flavors/%s" + flavID,
"rel": "bookmark"
}
],
"name": str('RSD.' + flavID)
}
]
}
resp = FakeResponse(response, 201)
get_req.return_value.text = json.dumps(resp.text)
# Run test
self.RSD.check_flavors(
self.system_col, self.system_col.members_identities)
conv_mem.assert_called_with(
self.system_inst.memory_summary.total_system_memory_gib)
key_req.assert_called_once()
self.assertEqual(self.RSD._auth_token, key_req.return_value.auth_token)
get_url.assert_called_once()
get_head.assert_called_with(self.RSD._auth_token)
get_req.assert_called_with(
get_url.return_value, headers=self.RSD.headers)
create_url.assert_called_with(flavID, 'delete')
del_req.assert_called_once_with(
create_url.return_value, headers=self.RSD.headers)

View File

@ -41,9 +41,22 @@ class TestFlavorManager(base.BaseTestCase):
self.assertEqual(self.flav_man._auth_token, None)
self.assertEqual(self.flav_man.headers, None)
def test_keystone_req(self):
"""Test a successful keystone request."""
# TODO(helenam100): write successful and failed versions of test
@mock.patch.object(flavor_management, 'ClientV3')
def test_keystone_req(self, cV3):
"""Test a keystone request."""
keystoneREQ = self.flav_man.keystone_req()
keystone_url = CONF.rsd.auth_url + '/v' + str(
CONF.rsd.identity_version)
cV3.assert_called_once_with(
auth_url=str(keystone_url),
username=CONF.rsd.username,
password=CONF.rsd.auth_password,
tenant_name=CONF.rsd.tenant_name)
self.assertEqual(
self.flav_man._auth_token, cV3.return_value.auth_token)
self.assertEqual(keystoneREQ, cV3.return_value)
@mock.patch.object(flavor_management.FlavorManager, "_get_endpoint")
def test_get_base_url(self, get_endpoint):