Refactor codes for operate vnf ut
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / tests / test_operate_vnf.py
index 3ebc90a..296abad 100644 (file)
 \r
 import json\r
 import uuid\r
-\r
 import mock\r
+\r
 from django.test import TestCase, Client\r
 from rest_framework import status\r
 \r
 from lcm.nf.biz.operate_vnf import OperateVnf\r
-from lcm.pub.database.models import NfInstModel, JobStatusModel, VmInstModel, SubscriptionModel\r
+from lcm.pub.database.models import NfInstModel\r
+from lcm.pub.database.models import JobStatusModel\r
+from lcm.pub.database.models import VmInstModel\r
+from lcm.pub.database.models import SubscriptionModel\r
 from lcm.pub.utils import restcall\r
 from lcm.pub.utils.jobutil import JobUtil\r
 from lcm.pub.utils.notificationsutil import NotificationsUtil\r
@@ -36,66 +39,125 @@ class TestNFOperate(TestCase):
         VmInstModel.objects.all().delete()\r
 \r
     def assert_job_result(self, job_id, job_progress, job_detail):\r
-        jobs = JobStatusModel.objects.filter(jobid=job_id,\r
-                                             progress=job_progress,\r
-                                             descp=job_detail)\r
+        jobs = JobStatusModel.objects.filter(\r
+            jobid=job_id,\r
+            progress=job_progress,\r
+            descp=job_detail\r
+        )\r
         self.assertEqual(1, len(jobs))\r
 \r
     def test_operate_vnf_not_found(self):\r
         req_data = {\r
             "changeStateTo": "STARTED"\r
         }\r
-        response = self.client.post("/api/vnflcm/v1/vnf_instances/12/operate", data=req_data, format='json')\r
+        response = self.client.post(\r
+            "/api/vnflcm/v1/vnf_instances/12/operate",\r
+            data=req_data,\r
+            format='json'\r
+        )\r
         self.failUnlessEqual(status.HTTP_404_NOT_FOUND, response.status_code)\r
 \r
     def test_operate_vnf_conflict(self):\r
         req_data = {\r
             "changeStateTo": "STARTED"\r
         }\r
-        NfInstModel(nfinstid='12', nf_name='VNF1', status='NOT_INSTANTIATED').save()\r
-        response = self.client.post("/api/vnflcm/v1/vnf_instances/12/operate", data=req_data, format='json')\r
+        NfInstModel(\r
+            nfinstid='12',\r
+            nf_name='VNF1',\r
+            status='NOT_INSTANTIATED'\r
+        ).save()\r
+        response = self.client.post(\r
+            "/api/vnflcm/v1/vnf_instances/12/operate",\r
+            data=req_data,\r
+            format='json'\r
+        )\r
         self.failUnlessEqual(status.HTTP_409_CONFLICT, response.status_code)\r
-        NfInstModel(nfinstid='12', nf_name='VNF1', status='NOT_INSTANTIATED').delete()\r
+        NfInstModel(\r
+            nfinstid='12',\r
+            nf_name='VNF1',\r
+            status='NOT_INSTANTIATED'\r
+        ).delete()\r
+\r
+    def test_operate_vnf_inner_error(self):\r
+        NfInstModel(\r
+            nfinstid='345',\r
+            nf_name='VNF1',\r
+            nf_desc="VNF DESC",\r
+            vnfdid="1",\r
+            netype="XGW",\r
+            vendor="ZTE",\r
+            vnfSoftwareVersion="V1",\r
+            version="V1",\r
+            package_id="2",\r
+            status='INSTANTIATED'\r
+        ).save()\r
+        url = "/api/vnflcm/v1/vnf_instances/345/operate"\r
+        response = self.client.post(\r
+            url,\r
+            data={},\r
+            format='json'\r
+        )\r
+        NfInstModel.objects.filter(nfinstid='345').delete()\r
+        self.failUnlessEqual(\r
+            status.HTTP_500_INTERNAL_SERVER_ERROR,\r
+            response.status_code\r
+        )\r
 \r
     @mock.patch.object(OperateVnf, 'run')\r
     def test_operate_vnf_success(self, mock_run):\r
         req_data = {\r
             "changeStateTo": "STARTED"\r
         }\r
-        NfInstModel(nfinstid='12', nf_name='VNF1', status='INSTANTIATED').save()\r
-        response = self.client.post("/api/vnflcm/v1/vnf_instances/12/operate", data=req_data, format='json')\r
+        NfInstModel(\r
+            nfinstid='12',\r
+            nf_name='VNF1',\r
+            status='INSTANTIATED'\r
+        ).save()\r
+        response = self.client.post(\r
+            "/api/vnflcm/v1/vnf_instances/12/operate",\r
+            data=req_data,\r
+            format='json'\r
+        )\r
         mock_run.re.return_value = None\r
         self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code)\r
-        NfInstModel(nfinstid='12', nf_name='VNF1', status='INSTANTIATED').delete()\r
+        NfInstModel(\r
+            nfinstid='12',\r
+            nf_name='VNF1',\r
+            status='INSTANTIATED'\r
+        ).delete()\r
 \r
     @mock.patch.object(restcall, 'call_req')\r
     @mock.patch.object(api, 'call')\r
     @mock.patch.object(NotificationsUtil, 'post_notification')\r
     def test_operate_vnf_success_start(self, mock_post_notification, mock_call, mock_call_req):\r
-        NfInstModel.objects.create(nfinstid='1111',\r
-                                   nf_name='2222',\r
-                                   vnfminstid='1',\r
-                                   package_id='todo',\r
-                                   version='',\r
-                                   vendor='',\r
-                                   netype='',\r
-                                   vnfd_model='',\r
-                                   status='INSTANTIATED',\r
-                                   nf_desc='',\r
-                                   vnfdid='',\r
-                                   vnfSoftwareVersion='',\r
-                                   vnfConfigurableProperties='todo',\r
-                                   localizationLanguage='EN_US',\r
-                                   create_time=now_time())\r
+        NfInstModel.objects.create(\r
+            nfinstid='1111',\r
+            nf_name='2222',\r
+            vnfminstid='1',\r
+            package_id='todo',\r
+            version='',\r
+            vendor='',\r
+            netype='',\r
+            vnfd_model='',\r
+            status='INSTANTIATED',\r
+            nf_desc='',\r
+            vnfdid='',\r
+            vnfSoftwareVersion='',\r
+            vnfConfigurableProperties='todo',\r
+            localizationLanguage='EN_US',\r
+            create_time=now_time()\r
+        )\r
 \r
-        VmInstModel.objects.create(vmid="1",\r
-                                   vimid="1",\r
-                                   resourceid="11",\r
-                                   insttype=0,\r
-                                   instid="1111",\r
-                                   vmname="test_01",\r
-                                   is_predefined=1,\r
-                                   operationalstate=1)\r
+        VmInstModel.objects.create(\r
+            vmid="1",\r
+            vimid="1",\r
+            resourceid="11",\r
+            insttype=0,\r
+            instid="1111",\r
+            vmname="test_01",\r
+            is_predefined=1,\r
+            operationalstate=1\r
+        )\r
 \r
         SubscriptionModel.objects.create(\r
             subscription_id=str(uuid.uuid4()),\r
@@ -123,9 +185,7 @@ class TestNFOperate(TestCase):
         )\r
 \r
         t1_apply_grant_result = [0, json.JSONEncoder().encode(''), '200']\r
-        # t2_lcm_notify_result = [0, json.JSONEncoder().encode(''), '200']\r
         t3_action_vm_start_result = [0, json.JSONEncoder().encode(''), '202']\r
-        # mock_call_req.side_effect = [t1_apply_grant_result, t2_lcm_notify_result, t3_action_vm_start_result]\r
         mock_call_req.side_effect = [t1_apply_grant_result, t3_action_vm_start_result]\r
         mock_call.return_value = None\r
         mock_post_notification.return_value = None\r
@@ -136,38 +196,40 @@ class TestNFOperate(TestCase):
         self.job_id = JobUtil.create_job('NF', 'OPERATE', self.nf_inst_id)\r
         JobUtil.add_job_status(self.job_id, 0, "OPERATE_VNF_READY")\r
         OperateVnf(req_data, nf_inst_id=self.nf_inst_id, job_id=self.job_id).run()\r
-        vm = VmInstModel.objects.filter(vmid="1", vimid="1", resourceid="11")\r
-        self.assertEqual("ACTIVE", vm[0].operationalstate)\r
         self.assert_job_result(self.job_id, 100, "Operate Vnf success.")\r
 \r
     @mock.patch.object(restcall, 'call_req')\r
     @mock.patch.object(api, 'call')\r
     @mock.patch.object(NotificationsUtil, 'post_notification')\r
     def test_operate_vnf_success_stop(self, mock_post_notification, mock_call, mock_call_req):\r
-        NfInstModel.objects.create(nfinstid='1111',\r
-                                   nf_name='2222',\r
-                                   vnfminstid='1',\r
-                                   package_id='todo',\r
-                                   version='',\r
-                                   vendor='',\r
-                                   netype='',\r
-                                   vnfd_model='',\r
-                                   status='INSTANTIATED',\r
-                                   nf_desc='',\r
-                                   vnfdid='',\r
-                                   vnfSoftwareVersion='',\r
-                                   vnfConfigurableProperties='todo',\r
-                                   localizationLanguage='EN_US',\r
-                                   create_time=now_time())\r
+        NfInstModel.objects.create(\r
+            nfinstid='1111',\r
+            nf_name='2222',\r
+            vnfminstid='1',\r
+            package_id='todo',\r
+            version='',\r
+            vendor='',\r
+            netype='',\r
+            vnfd_model='',\r
+            status='INSTANTIATED',\r
+            nf_desc='',\r
+            vnfdid='',\r
+            vnfSoftwareVersion='',\r
+            vnfConfigurableProperties='todo',\r
+            localizationLanguage='EN_US',\r
+            create_time=now_time()\r
+        )\r
 \r
-        VmInstModel.objects.create(vmid="1",\r
-                                   vimid="1",\r
-                                   resourceid="11",\r
-                                   insttype=0,\r
-                                   instid="1111",\r
-                                   vmname="test_01",\r
-                                   is_predefined=1,\r
-                                   operationalstate=1)\r
+        VmInstModel.objects.create(\r
+            vmid="1",\r
+            vimid="1",\r
+            resourceid="11",\r
+            insttype=0,\r
+            instid="1111",\r
+            vmname="test_01",\r
+            is_predefined=1,\r
+            operationalstate=1\r
+        )\r
 \r
         SubscriptionModel.objects.create(\r
             subscription_id=str(uuid.uuid4()),\r
@@ -195,9 +257,7 @@ class TestNFOperate(TestCase):
         )\r
 \r
         t1_apply_grant_result = [0, json.JSONEncoder().encode(''), '200']\r
-        # t2_lcm_notify_result = [0, json.JSONEncoder().encode(''), '200']\r
         t3_action_vm_stop_result = [0, json.JSONEncoder().encode(''), '202']\r
-        # mock_call_req.side_effect = [t1_apply_grant_result, t2_lcm_notify_result, t3_action_vm_stop_result]\r
         mock_call_req.side_effect = [t1_apply_grant_result, t3_action_vm_stop_result]\r
         mock_call.return_value = None\r
         mock_post_notification.return_value = None\r
@@ -208,41 +268,47 @@ class TestNFOperate(TestCase):
         self.job_id = JobUtil.create_job('NF', 'OPERATE', self.nf_inst_id)\r
         JobUtil.add_job_status(self.job_id, 0, "OPERATE_VNF_READY")\r
         OperateVnf(req_data, nf_inst_id=self.nf_inst_id, job_id=self.job_id).run()\r
-        vm = VmInstModel.objects.filter(vmid="1", vimid="1", resourceid="11")\r
-        self.assertEqual("INACTIVE", vm[0].operationalstate)\r
         self.assert_job_result(self.job_id, 100, "Operate Vnf success.")\r
 \r
     @mock.patch.object(restcall, 'call_req')\r
     @mock.patch.object(api, 'call')\r
     def test_operate_vnf_success_stop_graceful(self, mock_call, mock_call_req):\r
-        NfInstModel.objects.create(nfinstid='1111',\r
-                                   nf_name='2222',\r
-                                   vnfminstid='1',\r
-                                   package_id='todo',\r
-                                   version='',\r
-                                   vendor='',\r
-                                   netype='',\r
-                                   vnfd_model='',\r
-                                   status='INSTANTIATED',\r
-                                   nf_desc='',\r
-                                   vnfdid='',\r
-                                   vnfSoftwareVersion='',\r
-                                   vnfConfigurableProperties='todo',\r
-                                   localizationLanguage='EN_US',\r
-                                   create_time=now_time())\r
+        NfInstModel.objects.create(\r
+            nfinstid='1111',\r
+            nf_name='2222',\r
+            vnfminstid='1',\r
+            package_id='todo',\r
+            version='',\r
+            vendor='',\r
+            netype='',\r
+            vnfd_model='',\r
+            status='INSTANTIATED',\r
+            nf_desc='',\r
+            vnfdid='',\r
+            vnfSoftwareVersion='',\r
+            vnfConfigurableProperties='todo',\r
+            localizationLanguage='EN_US',\r
+            create_time=now_time()\r
+        )\r
 \r
-        VmInstModel.objects.create(vmid="1",\r
-                                   vimid="1",\r
-                                   resourceid="11",\r
-                                   insttype=0,\r
-                                   instid="1111",\r
-                                   vmname="test_01",\r
-                                   is_predefined=1,\r
-                                   operationalstate=1)\r
+        VmInstModel.objects.create(\r
+            vmid="1",\r
+            vimid="1",\r
+            resourceid="11",\r
+            insttype=0,\r
+            instid="1111",\r
+            vmname="test_01",\r
+            is_predefined=1,\r
+            operationalstate=1\r
+        )\r
         t1_apply_grant_result = [0, json.JSONEncoder().encode(''), '200']\r
         t2_lcm_notify_result = [0, json.JSONEncoder().encode(''), '200']\r
         t3_action_vm_stop_result = [0, json.JSONEncoder().encode(''), '202']\r
-        mock_call_req.side_effect = [t1_apply_grant_result, t2_lcm_notify_result, t3_action_vm_stop_result]\r
+        mock_call_req.side_effect = [\r
+            t1_apply_grant_result,\r
+            t2_lcm_notify_result,\r
+            t3_action_vm_stop_result\r
+        ]\r
         mock_call.return_value = None\r
         req_data = {\r
             "changeStateTo": "STOPPED",\r
@@ -253,41 +319,47 @@ class TestNFOperate(TestCase):
         self.job_id = JobUtil.create_job('NF', 'OPERATE', self.nf_inst_id)\r
         JobUtil.add_job_status(self.job_id, 0, "OPERATE_VNF_READY")\r
         OperateVnf(req_data, nf_inst_id=self.nf_inst_id, job_id=self.job_id).run()\r
-        vm = VmInstModel.objects.filter(vmid="1", vimid="1", resourceid="11")\r
-        self.assertEqual("INACTIVE", vm[0].operationalstate)\r
         self.assert_job_result(self.job_id, 100, "Operate Vnf success.")\r
 \r
     @mock.patch.object(restcall, 'call_req')\r
     @mock.patch.object(api, 'call')\r
     def test_operate_vnf_success_stop_forceful(self, mock_call, mock_call_req):\r
-        NfInstModel.objects.create(nfinstid='1111',\r
-                                   nf_name='2222',\r
-                                   vnfminstid='1',\r
-                                   package_id='todo',\r
-                                   version='',\r
-                                   vendor='',\r
-                                   netype='',\r
-                                   vnfd_model='',\r
-                                   status='INSTANTIATED',\r
-                                   nf_desc='',\r
-                                   vnfdid='',\r
-                                   vnfSoftwareVersion='',\r
-                                   vnfConfigurableProperties='todo',\r
-                                   localizationLanguage='EN_US',\r
-                                   create_time=now_time())\r
+        NfInstModel.objects.create(\r
+            nfinstid='1111',\r
+            nf_name='2222',\r
+            vnfminstid='1',\r
+            package_id='todo',\r
+            version='',\r
+            vendor='',\r
+            netype='',\r
+            vnfd_model='',\r
+            status='INSTANTIATED',\r
+            nf_desc='',\r
+            vnfdid='',\r
+            vnfSoftwareVersion='',\r
+            vnfConfigurableProperties='todo',\r
+            localizationLanguage='EN_US',\r
+            create_time=now_time()\r
+        )\r
 \r
-        VmInstModel.objects.create(vmid="1",\r
-                                   vimid="1",\r
-                                   resourceid="11",\r
-                                   insttype=0,\r
-                                   instid="1111",\r
-                                   vmname="test_01",\r
-                                   is_predefined=1,\r
-                                   operationalstate=1)\r
+        VmInstModel.objects.create(\r
+            vmid="1",\r
+            vimid="1",\r
+            resourceid="11",\r
+            insttype=0,\r
+            instid="1111",\r
+            vmname="test_01",\r
+            is_predefined=1,\r
+            operationalstate=1\r
+        )\r
         t1_apply_grant_result = [0, json.JSONEncoder().encode(''), '200']\r
         t2_lcm_notify_result = [0, json.JSONEncoder().encode(''), '200']\r
         t3_action_vm_stop_result = [0, json.JSONEncoder().encode(''), '202']\r
-        mock_call_req.side_effect = [t1_apply_grant_result, t2_lcm_notify_result, t3_action_vm_stop_result]\r
+        mock_call_req.side_effect = [\r
+            t1_apply_grant_result,\r
+            t2_lcm_notify_result,\r
+            t3_action_vm_stop_result\r
+        ]\r
         mock_call.return_value = None\r
         req_data = {\r
             "changeStateTo": "STOPPED",\r
@@ -297,6 +369,4 @@ class TestNFOperate(TestCase):
         self.job_id = JobUtil.create_job('NF', 'OPERATE', self.nf_inst_id)\r
         JobUtil.add_job_status(self.job_id, 0, "OPERATE_VNF_READY")\r
         OperateVnf(req_data, nf_inst_id=self.nf_inst_id, job_id=self.job_id).run()\r
-        vm = VmInstModel.objects.filter(vmid="1", vimid="1", resourceid="11")\r
-        self.assertEqual("INACTIVE", vm[0].operationalstate)\r
         self.assert_job_result(self.job_id, 100, "Operate Vnf success.")\r