Improve code coverage of plugin module

Added new unit tests to improve code coverage of delete_vnf and
update_vnf methods.

Change-Id: Ie172d39c17138d5f210af5e1d145c7354cd2560e
This commit is contained in:
shubham potale 2019-01-23 14:14:33 +00:00
parent 2ef42f1fba
commit e9506c84b1
1 changed files with 101 additions and 0 deletions

View File

@ -58,6 +58,10 @@ class FakeVimClient(mock.Mock):
pass
class FakeException(Exception):
pass
class TestVNFMPluginMonitor(db_base.SqlTestCase):
def setUp(self):
super(TestVNFMPluginMonitor, self).setUp()
@ -542,6 +546,34 @@ class TestVNFMPlugin(db_base.SqlTestCase):
res_state=mock.ANY, res_type=constants.RES_TYPE_VNF,
tstamp=mock.ANY, details=mock.ANY)
@patch('tacker.db.vnfm.vnfm_db.VNFMPluginDb._delete_vnf_post')
def test_delete_vnf_fail(self, mock_delete_vnf_post):
self.delete.side_effect = FakeException
self._insert_dummy_vnf_template()
dummy_device_obj = self._insert_dummy_vnf()
self.assertRaises(FakeException,
self.vnfm_plugin.delete_vnf, self.context,
dummy_device_obj['id'])
self._vnf_monitor.delete_hosting_vnf.assert_called_once_with(
dummy_device_obj['id'])
mock_delete_vnf_post.assert_called_once_with(self.context, mock.ANY,
mock.ANY)
self._cos_db_plugin.create_event.assert_called_with(
self.context, evt_type=constants.RES_EVT_DELETE, res_id=mock.ANY,
res_state=mock.ANY, res_type=constants.RES_TYPE_VNF,
tstamp=mock.ANY, details=mock.ANY)
@patch('tacker.db.vnfm.vnfm_db.VNFMPluginDb.set_vnf_error_status_reason')
def test_delete_vnf_delete_wait_failed_exception(self,
mock_set_vnf_error_status_reason):
self._insert_dummy_vnf_template()
dummy_vnf_obj = self._insert_dummy_vnf()
self.delete_wait.side_effect = vnfm.VNFDeleteWaitFailed(reason='test')
self.vnfm_plugin.delete_vnf(self.context, dummy_vnf_obj['id'])
mock_set_vnf_error_status_reason.assert_called_once_with(self.context,
mock.ANY,
mock.ANY)
def _insert_dummy_ns_template(self):
session = self.context.session
attributes = {
@ -620,6 +652,75 @@ class TestVNFMPlugin(db_base.SqlTestCase):
res_state=mock.ANY, res_type=constants.RES_TYPE_VNF,
tstamp=mock.ANY)
@patch('tacker.db.vnfm.vnfm_db.VNFMPluginDb._update_vnf_post')
def test_update_vnf_with_exception(self, mock_update_vnf_post):
self.update.side_effect = FakeException
self._insert_dummy_vnf_template()
dummy_device_obj = self._insert_dummy_vnf()
vnf_config_obj = utils.get_dummy_vnf_config_obj()
self.assertRaises(FakeException,
self.vnfm_plugin.update_vnf, self.context,
dummy_device_obj['id'], vnf_config_obj)
self._vnf_monitor.delete_hosting_vnf.assert_called_once_with(
dummy_device_obj['id'])
mock_update_vnf_post.assert_called_once_with(self.context,
dummy_device_obj['id'],
constants.ERROR,
mock.ANY,
constants.PENDING_UPDATE,
constants.RES_EVT_UPDATE)
self._cos_db_plugin.create_event.assert_called_with(
self.context, evt_type=constants.RES_EVT_UPDATE, res_id=mock.ANY,
res_state=mock.ANY, res_type=constants.RES_TYPE_VNF,
tstamp=mock.ANY)
@mock.patch('tacker.vnfm.plugin.VNFMPlugin._report_deprecated_yaml_str')
def test_update_vnf_invalid_config_format(self,
mock_report_deprecated_yaml_str):
self._insert_dummy_vnf_template()
dummy_vnf_obj = self._insert_dummy_vnf()
vnf_config_obj = utils.get_dummy_vnf_config_obj()
vnf_config_obj['vnf']['attributes']['config'] = 'test'
result = self.vnfm_plugin.update_vnf(self.context, dummy_vnf_obj[
'id'], vnf_config_obj)
self.assertEqual(1, mock_report_deprecated_yaml_str.call_count)
self.assertEqual(constants.ACTIVE, result['status'])
@patch('tacker.db.vnfm.vnfm_db.VNFMPluginDb.set_vnf_error_status_reason')
@mock.patch('tacker.vnfm.plugin.VNFMPlugin.mgmt_call')
def test_update_vnf_fail_mgmt_driver_error(self, mock_mgmt_call,
mock_set_vnf_error_status_reason):
self._insert_dummy_vnf_template()
dummy_vnf_obj = self._insert_dummy_vnf()
vnf_config_obj = utils.get_dummy_vnf_config_obj()
mock_mgmt_call.side_effect = exceptions.MgmtDriverException
vnf_dict = self.vnfm_plugin.update_vnf(self.context,
dummy_vnf_obj['id'],
vnf_config_obj)
self.assertEqual(constants.ERROR,
vnf_dict['status'])
mock_set_vnf_error_status_reason.assert_called_once_with(self.context,
dummy_vnf_obj['id'],
'VNF configuration failed')
@patch('tacker.db.vnfm.vnfm_db.VNFMPluginDb.set_vnf_error_status_reason')
def test_update_vnf_fail_update_wait_error(self,
mock_set_vnf_error_status_reason):
self._insert_dummy_vnf_template()
dummy_vnf_obj = self._insert_dummy_vnf()
vnf_config_obj = utils.get_dummy_vnf_config_obj()
self.update_wait.side_effect = vnfm.VNFUpdateWaitFailed(reason='VNF'
' Updation failed')
self.assertRaises(vnfm.VNFUpdateWaitFailed,
self.vnfm_plugin.update_vnf, self.context,
dummy_vnf_obj['id'], vnf_config_obj)
self._vnf_monitor.\
delete_hosting_vnf.assert_called_once_with(dummy_vnf_obj['id'])
mock_set_vnf_error_status_reason.assert_called_once_with(self.context,
dummy_vnf_obj['id'],
'VNF Updation failed')
def _get_dummy_scaling_policy(self, type):
vnf_scale = {}
vnf_scale['scale'] = {}