Compliance Test Code Improvement
We provide improvements to the test code of Compliance Test: * Improved getting of OpOcc ID for Scale Test cases causing different OpOcc ID to be returned. * Returned copy.deepcopy() function for INSTANTIATION_BODY so that the original copy of INSTANTIATION_BODY is retained in the next test cases. * Resolved the issue of random race condition occurrences when getting OpOcc ID. Change-Id: I9a99aa5a720360cbc765322033ecb256ed983fb3
This commit is contained in:
parent
3156895dee
commit
c869af7df7
|
@ -13,6 +13,7 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
|
@ -36,6 +37,7 @@ VNFINS_GET_IND_LCM_OP_OCCS_PATH = '/vnflcm/v1/vnf_lcm_op_occs/%s'
|
|||
VNFINS_CREATE_SUBSC_PATH = '/vnflcm/v1/subscriptions'
|
||||
VNFINS_DEL_SUBSC_PATH = '/vnflcm/v1/subscriptions/%s'
|
||||
VNFINS_SCALE_PATH = '/vnflcm/v1/vnf_instances/%s/scale'
|
||||
VNFINS_ROLLBACK_PATH = '/vnflcm/v1/vnf_lcm_op_occs/%s/rollback'
|
||||
|
||||
INSTANTIATION_BODY = {
|
||||
'flavourId': 'simple',
|
||||
|
@ -251,7 +253,8 @@ class BaseComplTest(base.BaseTackerTest):
|
|||
|
||||
@classmethod
|
||||
def _instantiate_vnf_instance(cls, vnfid):
|
||||
body = INSTANTIATION_BODY
|
||||
body = copy.deepcopy(INSTANTIATION_BODY)
|
||||
body['flavourId'] = 'simple'
|
||||
body['extVirtualLinks'][0]['resourceId'] = cls.net0_id
|
||||
body['vimConnectionInfo'][0]['id'] = uuidutils.generate_uuid()
|
||||
body['vimConnectionInfo'][0]['vimId'] = cls.vimid
|
||||
|
@ -280,9 +283,27 @@ class BaseComplTest(base.BaseTackerTest):
|
|||
|
||||
return resbody[0]['id']
|
||||
|
||||
@classmethod
|
||||
def _get_vnf_instance_id_for_scalein(cls):
|
||||
res, resbody = cls.http_client.do_request(VNFINSS_PATH, 'GET')
|
||||
|
||||
vnf_id = None
|
||||
for entry in resbody:
|
||||
vnf_dict = entry
|
||||
if (vnf_dict['instantiationState'] == 'INSTANTIATED'):
|
||||
vnf_id = vnf_dict['id']
|
||||
lcm_id = None
|
||||
scale_type = 'SCALE_OUT'
|
||||
lcm_id = cls._get_lcm_op_occs_id_for_scale(vnf_id, scale_type,
|
||||
lcm='SCALE')
|
||||
if (lcm_id is not None):
|
||||
break
|
||||
|
||||
return vnf_id
|
||||
|
||||
@classmethod
|
||||
def _instantiate_vnf_instance_for_scale(cls, vnfid):
|
||||
body = INSTANTIATION_BODY
|
||||
body = copy.deepcopy(INSTANTIATION_BODY)
|
||||
body['flavourId'] = 'default'
|
||||
body['extVirtualLinks'][0]['resourceId'] = cls.net0_id
|
||||
body['vimConnectionInfo'][0]['id'] = uuidutils.generate_uuid()
|
||||
|
@ -299,7 +320,7 @@ class BaseComplTest(base.BaseTackerTest):
|
|||
|
||||
@classmethod
|
||||
def _instantiate_error_vnf_instance(cls, vnfid):
|
||||
body = INSTANTIATION_BODY
|
||||
body = copy.deepcopy(INSTANTIATION_BODY)
|
||||
body['flavorId'] = 'sample'
|
||||
body['extVirtualLinks'][0]['resourceId'] = cls.net0_id
|
||||
body['vimConnectionInfo'][0]['id'] = uuidutils.generate_uuid()
|
||||
|
@ -312,7 +333,9 @@ class BaseComplTest(base.BaseTackerTest):
|
|||
cls.http_client.do_request(VNFINS_INST_PATH % vnfid,
|
||||
'POST', body=jsonutils.dumps(body))
|
||||
|
||||
cls._wait_vnf_status(vnfid, 'instantiationState', 'INSTANTIATED')
|
||||
# cls._wait_vnf_status(vnfid, 'instantiationState', 'INSTANTIATED')
|
||||
lcmid = cls._get_lcm_op_occs_id(vnfid, lcm='INSTANTIATE')
|
||||
cls._wait_lcm_status(lcmid, value='FAILED_TEMP')
|
||||
|
||||
@classmethod
|
||||
def _get_lcm_op_occs_id(cls, vnfid, lcm='INSTANTIATE'):
|
||||
|
@ -329,6 +352,25 @@ class BaseComplTest(base.BaseTackerTest):
|
|||
|
||||
return lcmid
|
||||
|
||||
@classmethod
|
||||
def _get_lcm_op_occs_id_for_scale(cls, vnfid, scale_type, lcm='SCALE'):
|
||||
res, resbody = cls.http_client.do_request(
|
||||
VNFINS_GET_LCM_OP_OCCS_PATH, 'GET')
|
||||
|
||||
lcmid = None
|
||||
for entry in resbody:
|
||||
lcm_dict = entry
|
||||
if ((lcm_dict['vnfInstanceId'] == vnfid) and
|
||||
(lcm_dict['operation'] == lcm)):
|
||||
lcmid = lcm_dict['id']
|
||||
resp, body = cls.http_client.do_request(
|
||||
VNFINS_GET_IND_LCM_OP_OCCS_PATH % lcmid, 'GET')
|
||||
param = json.loads(body['operationParams'])
|
||||
if ((param['type'] == scale_type)):
|
||||
break
|
||||
|
||||
return lcmid
|
||||
|
||||
@classmethod
|
||||
def _create_subscription(cls, vnfdid):
|
||||
body = SUBSCRIPTION_BODY
|
||||
|
@ -360,13 +402,15 @@ class BaseComplTest(base.BaseTackerTest):
|
|||
VNFINS_SCALE_PATH % vnfid,
|
||||
'POST', body=jsonutils.dumps(body))
|
||||
|
||||
print("scaleout called")
|
||||
print(res_scale)
|
||||
print(resbody)
|
||||
lcmid = cls._get_lcm_op_occs_id(vnfid, lcm='SCALE')
|
||||
res = cls._wait_lcm_status(lcmid)
|
||||
return res, lcmid
|
||||
|
||||
@classmethod
|
||||
def _rollback_instance(cls, lcmid):
|
||||
cls.http_client.do_request(VNFINS_ROLLBACK_PATH % lcmid, 'POST')
|
||||
cls._wait_lcm_status(lcmid, value='ROLLED_BACK')
|
||||
|
||||
@classmethod
|
||||
def _wait_lcm_status(cls, lcmid, value='COMPLETED', expire=600):
|
||||
start_time = int(time.time())
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
import time
|
||||
|
||||
from oslo_serialization import jsonutils
|
||||
from oslo_utils import uuidutils
|
||||
from tacker.tests.compliance import base as rootbase
|
||||
|
@ -123,6 +126,8 @@ class IndividualVNFInstanceTest(BaseVNFLifecycleManagementTest):
|
|||
def test_modify_information_about_individual_vnf_instance(self):
|
||||
# Pre-conditions: none
|
||||
res, vnf = self._create_vnf_instance(self.vnfpkginfos[0].vnfdid)
|
||||
self._instantiate_vnf_instance(vnf['id'])
|
||||
|
||||
vnfid = vnf['id']
|
||||
variables = ['vnfInstanceId:' + vnfid]
|
||||
|
||||
|
@ -135,8 +140,15 @@ class IndividualVNFInstanceTest(BaseVNFLifecycleManagementTest):
|
|||
body=jsonutils.dumps(body))
|
||||
|
||||
# Post-Conditions:
|
||||
self._delete_vnf_instance(vnfid)
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='MODIFY_INFO')
|
||||
time.sleep(5)
|
||||
|
||||
res = self._wait_lcm_status(lcmid)
|
||||
self._terminate_vnf_instance(vnf['id'])
|
||||
self._delete_vnf_instance(vnf['id'])
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(0, rc)
|
||||
|
||||
|
||||
|
@ -153,7 +165,7 @@ class InstantiateVNFTaskTest(BaseVNFLifecycleManagementTest):
|
|||
|
||||
variables = ['vnfInstanceId:' + vnf['id']]
|
||||
|
||||
body = rootbase.INSTANTIATION_BODY
|
||||
body = copy.deepcopy(rootbase.INSTANTIATION_BODY)
|
||||
|
||||
body['extVirtualLinks'][0]['resourceId'] = self.net0_id
|
||||
body['vimConnectionInfo'][0]['id'] = uuidutils.generate_uuid()
|
||||
|
@ -216,41 +228,47 @@ class ScaleVNFTaskTest(BaseVNFLifecycleManagementScaleTest):
|
|||
variables = ['vnfInstanceId:' + vnf['id']]
|
||||
body = rootbase.SCALE_BODY
|
||||
body['type'] = 'SCALE_OUT'
|
||||
scale_type = 'SCALE_OUT'
|
||||
|
||||
rc, output = self._run('POST Scale a vnfInstance',
|
||||
variables=variables,
|
||||
body=jsonutils.dumps(body),
|
||||
filename='scaleVnfRequest.json')
|
||||
|
||||
res = self._get_responses_from_output(output)
|
||||
|
||||
# Post-Conditions:
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='SCALE')
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id_for_scale(vnf['id'], scale_type,
|
||||
lcm='SCALE')
|
||||
time.sleep(5)
|
||||
|
||||
res = self._wait_lcm_status(lcmid)
|
||||
self.assertEqual(0, res)
|
||||
|
||||
self.assertEqual(0, rc)
|
||||
|
||||
def test_post_reduce_by_scalein(self):
|
||||
vnf_id = self._get_vnf_instance_id()
|
||||
vnf_id = self._get_vnf_instance_id_for_scalein()
|
||||
|
||||
body = rootbase.SCALE_BODY
|
||||
body['type'] = 'SCALE_IN'
|
||||
scale_type = 'SCALE_IN'
|
||||
|
||||
rc, output = self._run('POST Scale a vnfInstance',
|
||||
variables=['vnfInstanceId:' + vnf_id],
|
||||
body=jsonutils.dumps(body),
|
||||
filename='scaleVnfRequest.json')
|
||||
|
||||
res = self._get_responses_from_output(output)
|
||||
|
||||
# Post-Conditions:
|
||||
lcmid = self._get_lcm_op_occs_id(vnf_id, lcm='SCALE')
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id_for_scale(vnf_id, scale_type,
|
||||
lcm='SCALE')
|
||||
time.sleep(5)
|
||||
|
||||
res = self._wait_lcm_status(lcmid)
|
||||
self.assertEqual(0, res)
|
||||
self._terminate_vnf_instance(vnf_id)
|
||||
self._delete_vnf_instance(vnf_id)
|
||||
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(0, rc)
|
||||
|
||||
|
||||
|
@ -339,12 +357,15 @@ class HealVNFTaskTest(BaseVNFLifecycleManagementTest):
|
|||
filename=' healVnfRequest.json')
|
||||
|
||||
# Post-Conditions:
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='HEAL')
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='HEAL')
|
||||
time.sleep(5)
|
||||
|
||||
res = self._wait_lcm_status(lcmid)
|
||||
self.assertEqual(0, res)
|
||||
self._terminate_vnf_instance(vnf['id'])
|
||||
self._delete_vnf_instance(vnf['id'])
|
||||
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(0, rc)
|
||||
|
||||
|
||||
|
@ -359,7 +380,11 @@ class RetryOperationTaskTest(BaseVNFLifecycleManagementTest):
|
|||
# Pre-conditions: none
|
||||
res, vnf = self._create_vnf_instance(self.vnfpkginfos[0].vnfdid)
|
||||
self._instantiate_error_vnf_instance(vnf['id'])
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'])
|
||||
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'])
|
||||
time.sleep(5)
|
||||
|
||||
variables = ['vnfLcmOpOccId:' + lcmid]
|
||||
|
||||
|
@ -368,10 +393,9 @@ class RetryOperationTaskTest(BaseVNFLifecycleManagementTest):
|
|||
|
||||
# Post-Conditions:
|
||||
res = self._wait_lcm_status(lcmid, value='FAILED_TEMP')
|
||||
self.assertEqual(0, res)
|
||||
self._terminate_vnf_instance(vnf['id'])
|
||||
self._rollback_instance(lcmid)
|
||||
self._delete_vnf_instance(vnf['id'])
|
||||
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(1, rc)
|
||||
|
||||
|
||||
|
@ -404,10 +428,13 @@ class ChangeExternalVNFConnectivityTaskTest(BaseVNFLifecycleManagementTest):
|
|||
filename='changeExtVnfConnectivityRequest.json')
|
||||
|
||||
# Post-Conditions:
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='CHANGE_EXT_CONN')
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='CHANGE_EXT_CONN')
|
||||
time.sleep(5)
|
||||
|
||||
res = self._wait_lcm_status(lcmid)
|
||||
self.assertEqual(0, res)
|
||||
self._terminate_vnf_instance(vnf['id'])
|
||||
self._delete_vnf_instance(vnf['id'])
|
||||
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(0, rc)
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
import time
|
||||
|
||||
from oslo_serialization import jsonutils
|
||||
from oslo_utils import uuidutils
|
||||
from tacker.tests.compliance import base as rootbase
|
||||
|
@ -123,6 +126,8 @@ class IndividualVNFInstanceTest(BaseVNFLifecycleManagementTest):
|
|||
def test_modify_information_about_individual_vnf_instance(self):
|
||||
# Pre-conditions: none
|
||||
res, vnf = self._create_vnf_instance(self.vnfpkginfos[0].vnfdid)
|
||||
self._instantiate_vnf_instance(vnf['id'])
|
||||
|
||||
vnfid = vnf['id']
|
||||
variables = ['vnfInstanceId:' + vnfid]
|
||||
|
||||
|
@ -135,8 +140,15 @@ class IndividualVNFInstanceTest(BaseVNFLifecycleManagementTest):
|
|||
body=jsonutils.dumps(body))
|
||||
|
||||
# Post-Conditions:
|
||||
self._delete_vnf_instance(vnfid)
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='MODIFY_INFO')
|
||||
time.sleep(5)
|
||||
|
||||
res = self._wait_lcm_status(lcmid)
|
||||
self._terminate_vnf_instance(vnf['id'])
|
||||
self._delete_vnf_instance(vnf['id'])
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(0, rc)
|
||||
|
||||
|
||||
|
@ -153,7 +165,7 @@ class InstantiateVNFTaskTest(BaseVNFLifecycleManagementTest):
|
|||
|
||||
variables = ['vnfInstanceId:' + vnf['id']]
|
||||
|
||||
body = rootbase.INSTANTIATION_BODY
|
||||
body = copy.deepcopy(rootbase.INSTANTIATION_BODY)
|
||||
|
||||
body['extVirtualLinks'][0]['resourceId'] = self.net0_id
|
||||
body['vimConnectionInfo'][0]['id'] = uuidutils.generate_uuid()
|
||||
|
@ -302,7 +314,6 @@ class IndividualSubscriptionTest(BaseVNFLifecycleManagementTest):
|
|||
|
||||
|
||||
class ScaleVNFTaskTest(BaseVNFLifecycleManagementScaleTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.resource = 'ScaleVNFTask'
|
||||
|
@ -318,41 +329,47 @@ class ScaleVNFTaskTest(BaseVNFLifecycleManagementScaleTest):
|
|||
variables = ['vnfInstanceId:' + vnf['id']]
|
||||
body = rootbase.SCALE_BODY
|
||||
body['type'] = 'SCALE_OUT'
|
||||
scale_type = 'SCALE_OUT'
|
||||
|
||||
rc, output = self._run('POST Scale a vnfInstance',
|
||||
variables=variables,
|
||||
body=jsonutils.dumps(body),
|
||||
filename='scaleVnfRequest.json')
|
||||
|
||||
res = self._get_responses_from_output(output)
|
||||
|
||||
# Post-Conditions:
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='SCALE')
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id_for_scale(vnf['id'], scale_type,
|
||||
lcm='SCALE')
|
||||
time.sleep(5)
|
||||
|
||||
res = self._wait_lcm_status(lcmid)
|
||||
self.assertEqual(0, res)
|
||||
|
||||
self.assertEqual(0, rc)
|
||||
|
||||
def test_post_reduce_by_scalein(self):
|
||||
vnf_id = self._get_vnf_instance_id()
|
||||
vnf_id = self._get_vnf_instance_id_for_scalein()
|
||||
|
||||
body = rootbase.SCALE_BODY
|
||||
body['type'] = 'SCALE_IN'
|
||||
scale_type = 'SCALE_IN'
|
||||
|
||||
rc, output = self._run('POST Scale a vnfInstance',
|
||||
variables=['vnfInstanceId:' + vnf_id],
|
||||
body=jsonutils.dumps(body),
|
||||
filename='scaleVnfRequest.json')
|
||||
|
||||
res = self._get_responses_from_output(output)
|
||||
|
||||
# Post-Conditions:
|
||||
lcmid = self._get_lcm_op_occs_id(vnf_id, lcm='SCALE')
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id_for_scale(vnf_id, scale_type,
|
||||
lcm='SCALE')
|
||||
time.sleep(5)
|
||||
|
||||
res = self._wait_lcm_status(lcmid)
|
||||
self.assertEqual(0, res)
|
||||
self._terminate_vnf_instance(vnf_id)
|
||||
self._delete_vnf_instance(vnf_id)
|
||||
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(0, rc)
|
||||
|
||||
|
||||
|
@ -380,12 +397,15 @@ class HealVNFTaskTest(BaseVNFLifecycleManagementTest):
|
|||
filename=' healVnfRequest.json')
|
||||
|
||||
# Post-Conditions:
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='HEAL')
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='HEAL')
|
||||
time.sleep(5)
|
||||
|
||||
res = self._wait_lcm_status(lcmid)
|
||||
self.assertEqual(0, res)
|
||||
self._terminate_vnf_instance(vnf['id'])
|
||||
self._delete_vnf_instance(vnf['id'])
|
||||
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(0, rc)
|
||||
|
||||
|
||||
|
@ -418,12 +438,15 @@ class ChangeExternalVNFConnectivityTaskTest(BaseVNFLifecycleManagementTest):
|
|||
filename='changeExtVnfConnectivityRequest.json')
|
||||
|
||||
# Post-Conditions:
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='CHANGE_EXT_CONN')
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'], lcm='CHANGE_EXT_CONN')
|
||||
time.sleep(5)
|
||||
|
||||
res = self._wait_lcm_status(lcmid)
|
||||
self.assertEqual(0, res)
|
||||
self._terminate_vnf_instance(vnf['id'])
|
||||
self._delete_vnf_instance(vnf['id'])
|
||||
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(0, rc)
|
||||
|
||||
|
||||
|
@ -438,7 +461,11 @@ class RetryOperationTaskTest(BaseVNFLifecycleManagementTest):
|
|||
# Pre-conditions: none
|
||||
res, vnf = self._create_vnf_instance(self.vnfpkginfos[0].vnfdid)
|
||||
self._instantiate_error_vnf_instance(vnf['id'])
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'])
|
||||
|
||||
lcmid = None
|
||||
while(lcmid is None):
|
||||
lcmid = self._get_lcm_op_occs_id(vnf['id'])
|
||||
time.sleep(5)
|
||||
|
||||
variables = ['vnfLcmOpOccId:' + lcmid]
|
||||
|
||||
|
@ -447,10 +474,9 @@ class RetryOperationTaskTest(BaseVNFLifecycleManagementTest):
|
|||
|
||||
# Post-Conditions:
|
||||
res = self._wait_lcm_status(lcmid, value='FAILED_TEMP')
|
||||
self.assertEqual(0, res)
|
||||
self._terminate_vnf_instance(vnf['id'])
|
||||
self._rollback_instance(lcmid)
|
||||
self._delete_vnf_instance(vnf['id'])
|
||||
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(1, rc)
|
||||
|
||||
|
||||
|
@ -474,8 +500,6 @@ class RollbackOperationTaskTest(BaseVNFLifecycleManagementTest):
|
|||
|
||||
# Post-Conditions:
|
||||
res = self._wait_lcm_status(lcmid, value='ROLLED_BACK')
|
||||
self.assertEqual(0, res)
|
||||
self._terminate_vnf_instance(vnf['id'])
|
||||
self._delete_vnf_instance(vnf['id'])
|
||||
|
||||
self.assertEqual(0, res)
|
||||
self.assertEqual(0, rc)
|
||||
|
|
Loading…
Reference in New Issue