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:
parent
bbc9417e83
commit
e0c800f655
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue