improve code coverage rate after vfclcm upgraded from python2 to python3 25/91125/2
authorhongyuzhao <zhao.hongyu@zte.com.cn>
Wed, 10 Jul 2019 03:48:52 +0000 (11:48 +0800)
committerhongyuzhao <zhao.hongyu@zte.com.cn>
Wed, 10 Jul 2019 05:34:49 +0000 (13:34 +0800)
Change-Id: I9c62ad2638ff8eeaafcae4d51dcf1e92a688eb5e
Issue-ID: VFC-1429
Signed-off-by: hongyuzhao <zhao.hongyu@zte.com.cn>
lcm/lcm/nf/biz/instantiate_vnf.py
lcm/lcm/nf/tests/test_create_vnf.py
lcm/lcm/nf/tests/test_delete_vnf.py
lcm/lcm/nf/tests/test_instantiate_vnf.py
lcm/lcm/nf/views/curd_vnf_views.py

index 57711f7..58ca591 100644 (file)
@@ -59,10 +59,10 @@ class InstantiateVnf(Thread):
             operation=OPERATION_TYPE.INSTANTIATE,
             task=OPERATION_TASK.INSTANTIATE
         )
-        self.pre_deal()
 
     def run(self):
         try:
+            self.pre_deal()
             self.inst_pre()
             self.lcm_op_occ.notify_lcm(OPERATION_STATE_TYPE.STARTING)
             self.apply_grant()
@@ -84,6 +84,8 @@ class InstantiateVnf(Thread):
             )
         except NFLCMException as e:
             self.vnf_inst_failed_handle(e.args[0])
+        except NFLCMExceptionConflict as e:
+            self.vnf_inst_failed_handle(e.args[0])
         except Exception as e:
             logger.error(str(e))
             logger.error(traceback.format_exc())
index 3ac414f..240ed17 100644 (file)
@@ -116,7 +116,7 @@ class TestNFInstantiate(TestCase):
     @mock.patch.object(restcall, 'call_req')
     @mock.patch.object(uuid, 'uuid4')
     def test_create_vnf_inner_error(self, mock_uuid4, mock_call_req):
-        mock_call_req.return_value = NFLCMException('Boom!')
+        mock_call_req.side_effect = NFLCMException('Boom!')
         mock_uuid4.return_value = "1"
         data = {
             "vnfdId": "111",
index 61d173e..4ef1ab6 100644 (file)
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-
+import mock
 from django.test import TestCase, Client
 from rest_framework import status
 
@@ -26,6 +26,8 @@ from lcm.pub.database.models import FlavourInstModel
 from lcm.pub.database.models import StorageInstModel
 from lcm.pub.database.models import NfvoRegInfoModel
 from lcm.pub.utils.timeutil import now_time
+from lcm.nf.biz.delete_vnf import DeleteVnf
+from lcm.pub.exceptions import NFLCMException
 
 
 class TestNFTerminate(TestCase):
@@ -133,3 +135,9 @@ class TestNFTerminate(TestCase):
     def test_delete_vnf_identifier_when_vnf_not_exist(self):
         response = self.client.delete("/api/vnflcm/v1/vnf_instances/1111")
         self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code)
+
+    @mock.patch.object(DeleteVnf, 'do_biz')
+    def test_delete_vnf_inner_error(self, mock_DeleteVnf_do_biz):
+        mock_DeleteVnf_do_biz.side_effect = NFLCMException('Boom!')
+        response = self.client.delete("/api/vnflcm/v1/vnf_instances/1234")
+        self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code)
index 16351f9..c243c44 100644 (file)
@@ -34,7 +34,7 @@ from .const import inst_req_data
 from .const import vnfpackage_info\r
 from .const import instantiate_grant_result\r
 \r
-from lcm.pub.database.models import NfInstModel\r
+from lcm.pub.database.models import NfInstModel, VNFLcmOpOccModel\r
 from lcm.pub.database.models import JobStatusModel\r
 from lcm.pub.database.models import SubscriptionModel\r
 from lcm.pub.utils import restcall\r
@@ -45,6 +45,7 @@ from lcm.pub.vimapi import api
 from lcm.pub.exceptions import NFLCMException\r
 \r
 from lcm.nf.biz.instantiate_vnf import InstantiateVnf\r
+from lcm.nf import const\r
 \r
 \r
 class TestNFInstantiate(TestCase):\r
@@ -390,6 +391,11 @@ class TestNFInstantiate(TestCase):
             nf_inst_id=self.nf_inst_id,\r
             job_id=self.job_id\r
         ).run()\r
+        self.assert_job_result(\r
+            self.job_id,\r
+            100,\r
+            'Instantiate Vnf success.'\r
+        )\r
 \r
     @mock.patch.object(JobUtil, 'create_job')\r
     def test_instantiate_inner_error(self, mock_run):\r
@@ -420,3 +426,44 @@ class TestNFInstantiate(TestCase):
         )\r
         NfInstModel.objects.filter(nfinstid='144').delete()\r
         self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code)\r
+\r
+    @mock.patch.object(restcall, 'call_req')\r
+    def test_instantiate_operating_fail(self, mock_call_req):\r
+        NfInstModel.objects.create(\r
+            nfinstid='1111',\r
+            nf_name='vFW_01',\r
+            package_id='222',\r
+            version='',\r
+            vendor='',\r
+            netype='',\r
+            vnfd_model='',\r
+            status='NOT_INSTANTIATED',\r
+            nf_desc='vFW in Nanjing TIC Edge',\r
+            vnfdid='111',\r
+            create_time=now_time()\r
+        )\r
+        r1_get_vnfpackage_by_vnfdid = [\r
+            0,\r
+            json.JSONEncoder().encode(vnfpackage_info),\r
+            '200'\r
+        ]\r
+        mock_call_req.side_effect = [\r
+            r1_get_vnfpackage_by_vnfdid\r
+        ]\r
+        self.nf_inst_id = '1111'\r
+        self.job_id = JobUtil.create_job('NF', 'CREATE', self.nf_inst_id)\r
+        JobUtil.add_job_status(self.job_id, 0, 'INST_VNF_READY')\r
+        VNFLcmOpOccModel.objects.create(vnf_instance_id=self.nf_inst_id,\r
+                                        id=self.job_id,\r
+                                        operation=const.OPERATION_TYPE.INSTANTIATE,\r
+                                        operation_state=const.OPERATION_STATE_TYPE.PROCESSING)\r
+        InstantiateVnf(\r
+            inst_req_data,\r
+            nf_inst_id=self.nf_inst_id,\r
+            job_id=self.job_id\r
+        ).run()\r
+        self.assert_job_result(\r
+            self.job_id,\r
+            255,\r
+            'VNF(%s) %s in processing.' % (self.nf_inst_id, const.OPERATION_TYPE.INSTANTIATE)\r
+        )\r
index f5c7a77..2992814 100644 (file)
@@ -108,7 +108,7 @@ class DeleteVnfAndQueryVnf(APIView):
     )
     @view_safe_call_with_log(logger=logger)
     def delete(self, request, instanceid):
-        logger.debug("DeleteVnfIdentifier--delete::> %s" % request.data)
+        logger.debug("DeleteVnfIdentifier--delete::> %s" % instanceid)
 
         DeleteVnf(request.data, instanceid).do_biz()