Split FT to Legacy and SOL implementation

FT execution time in Zuul is about to exceed its timeout. This patch
make the existing dsvm-functional FT job to be separated to two jobs;
* dsvm-functional-legacy
* dsvm-functional-sol

This patch fixes the unstable FT results in zuul FT jobs:
* test_rollback_instantiate:
  ``depends_on`` in BaseHOT makes stable deletion of stacks, otherwise
  Heat fails to delete subnets due to missing dependency with ports.
* test_vnf_alarm_scale_with_instance_reservation:
   "--concurrency 1" enables to run test without any VMs on hosts,
  otherwise Blazar fails to add hosts into the freepool.

Changes:
* Split the FT directory to legacy and sol
* Create new tox envs for FT of legacy and of SOL
* Relative path are changed due to the new directory structure
* Add ``depends_on` parameter in BaseHOT
* Set "--concurrency 1" for both of the new FT jobs

Change-Id: I4c66353eada16f7e51d7ed1c1999cf50635b9dce
This commit is contained in:
Yoshito Ito 2021-01-13 21:42:51 +09:00
parent 7906be6818
commit ba813054a4
32 changed files with 45 additions and 22 deletions

View File

@ -33,7 +33,7 @@
- compute2 - compute2
- job: - job:
name: tacker-functional-devstack-multinode-python3 name: tacker-functional-devstack-multinode-legacy
parent: devstack parent: devstack
description: | description: |
Base multinodes job for devstack-based functional tests Base multinodes job for devstack-based functional tests
@ -157,7 +157,7 @@
# Tacker services # Tacker services
tacker: true tacker: true
tacker-conductor: true tacker-conductor: true
tox_envlist: dsvm-functional tox_envlist: dsvm-functional-legacy
group-vars: group-vars:
compute: compute:
# Since a VirtualInterfaceCreateException occurs during a test, # Since a VirtualInterfaceCreateException occurs during a test,
@ -205,6 +205,15 @@
# To override the parent job's definitions. # To override the parent job's definitions.
tls-proxy: false tls-proxy: false
- job:
name: tacker-functional-devstack-multinode-sol
parent: tacker-functional-devstack-multinode-legacy
description: |
Multinodes job for SOL devstack-based functional tests
host-vars:
controller-tacker:
tox_envlist: dsvm-functional-sol
- project: - project:
templates: templates:
- check-requirements - check-requirements
@ -215,4 +224,5 @@
- release-notes-jobs-python3 - release-notes-jobs-python3
check: check:
jobs: jobs:
- tacker-functional-devstack-multinode-python3 - tacker-functional-devstack-multinode-legacy
- tacker-functional-devstack-multinode-sol

View File

@ -39,6 +39,7 @@ resources:
adjustment_type: change_in_capacity adjustment_type: change_in_capacity
VDU2_scale_group: VDU2_scale_group:
type: OS::Heat::AutoScalingGroup type: OS::Heat::AutoScalingGroup
depends_on: VDU1_scale_group
properties: properties:
min_size: 2 min_size: 2
max_size: 2 max_size: 2

View File

@ -36,7 +36,7 @@ class VnfTestToscaVNFC(base.BaseTackerTest):
input_yaml = read_file('sample_tosca_vnfc.yaml') input_yaml = read_file('sample_tosca_vnfc.yaml')
tosca_dict = yaml.safe_load(input_yaml) tosca_dict = yaml.safe_load(input_yaml)
path = os.path.abspath(os.path.join( path = os.path.abspath(os.path.join(
os.path.dirname(__file__), "../../etc/samples")) os.path.dirname(__file__), "../../../etc/samples"))
vnfd_name = 'sample-tosca-vnfc' vnfd_name = 'sample-tosca-vnfc'
tosca_dict['topology_template']['node_templates' tosca_dict['topology_template']['node_templates'
]['firewall_vnfc' ]['firewall_vnfc'

View File

@ -39,7 +39,7 @@ def _create_and_upload_vnf_package(tacker_client, csar_package_name,
'/vnfpkgm/v1/vnf_packages', "POST", body=body) '/vnfpkgm/v1/vnf_packages', "POST", body=body)
# upload vnf package # upload vnf package
csar_package_path = "../../etc/samples/etsi/nfv/%s" % csar_package_name csar_package_path = "../../../etc/samples/etsi/nfv/%s" % csar_package_name
file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), file_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
csar_package_path)) csar_package_path))
@ -826,7 +826,7 @@ class VnfLcmTest(base.BaseTackerTest):
self): self):
instance_file_dir = os.path.join( instance_file_dir = os.path.join(
os.path.dirname(os.path.abspath(__file__)), os.path.dirname(os.path.abspath(__file__)),
'../../etc/samples/etsi/nfv/test_create_vnf_instance_' '../../../etc/samples/etsi/nfv/test_create_vnf_instance_'
'and_instantiate_and_terminate_cnf_with_artifact_is_url/' 'and_instantiate_and_terminate_cnf_with_artifact_is_url/'
) )
artifact_file_dir = os.path.join( artifact_file_dir = os.path.join(

View File

@ -95,7 +95,7 @@ def _create_and_upload_vnf_package(tacker_client, csar_package_name,
'/vnfpkgm/v1/vnf_packages', "POST", body=body) '/vnfpkgm/v1/vnf_packages', "POST", body=body)
# upload vnf package # upload vnf package
csar_package_path = "../../etc/samples/etsi/nfv/%s" % csar_package_name csar_package_path = "../../../etc/samples/etsi/nfv/%s" % csar_package_name
file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), file_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
csar_package_path)) csar_package_path))

View File

@ -14,8 +14,8 @@
import os import os
from oslo_utils import uuidutils from oslo_utils import uuidutils
from tacker.objects import fields from tacker.objects import fields
from tacker.tests.functional.vnflcm import base as vnflcm_base from tacker.tests.functional.sol.vnflcm import base as vnflcm_base
from tacker.tests.functional.vnflcm import fake_vnflcm from tacker.tests.functional.sol.vnflcm import fake_vnflcm
import tempfile import tempfile
import time import time
@ -128,7 +128,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id( tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id(
csar_package_path) csar_package_path)
@ -260,7 +260,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id( tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id(
csar_package_path) csar_package_path)
@ -307,7 +307,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id( tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id(
csar_package_path) csar_package_path)
@ -403,7 +403,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id( tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id(
csar_package_path) csar_package_path)
@ -452,7 +452,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id( tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id(
csar_package_path) csar_package_path)
@ -512,7 +512,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_user_data_common( tempname, _ = vnflcm_base._create_csar_user_data_common(
csar_package_path) csar_package_path)
@ -563,7 +563,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_user_data_common( tempname, _ = vnflcm_base._create_csar_user_data_common(
csar_package_path) csar_package_path)
@ -616,7 +616,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_user_data_common( tempname, _ = vnflcm_base._create_csar_user_data_common(
csar_package_path) csar_package_path)
@ -670,7 +670,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_user_data_common( tempname, _ = vnflcm_base._create_csar_user_data_common(
csar_package_path) csar_package_path)
@ -725,7 +725,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_user_data_common( tempname, _ = vnflcm_base._create_csar_user_data_common(
csar_package_path) csar_package_path)
@ -796,7 +796,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id( tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id(
csar_package_path) csar_package_path)
@ -891,7 +891,7 @@ class VnfLcmWithUserDataTest(vnflcm_base.BaseVnfLcmTest):
csar_package_path = os.path.abspath( csar_package_path = os.path.abspath(
os.path.join( os.path.join(
os.path.dirname(__file__), os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", "../../../etc/samples/etsi/nfv",
sample_name)) sample_name))
tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id( tempname, _ = vnflcm_base._create_csar_with_unique_vnfd_id(
csar_package_path) csar_package_path)

View File

@ -159,7 +159,7 @@ class VnfPackageTest(base.BaseTackerTest):
def _get_csar_dir_path(self, csar_name): def _get_csar_dir_path(self, csar_name):
csar_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), csar_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),
"../../etc/samples/etsi/nfv", csar_name)) "../../../etc/samples/etsi/nfv", csar_name))
return csar_dir return csar_dir
def _create_and_upload_vnf(self, sample_name): def _create_and_upload_vnf(self, sample_name):

12
tox.ini
View File

@ -40,6 +40,18 @@ setenv = {[testenv]setenv}
commands = commands =
stestr --test-path=./tacker/tests/functional run --slowest --concurrency 2 {posargs} stestr --test-path=./tacker/tests/functional run --slowest --concurrency 2 {posargs}
[testenv:dsvm-functional-legacy]
setenv = {[testenv]setenv}
commands =
stestr --test-path=./tacker/tests/functional/legacy run --slowest --concurrency 1 {posargs}
[testenv:dsvm-functional-sol]
setenv = {[testenv]setenv}
commands =
stestr --test-path=./tacker/tests/functional/sol run --slowest --concurrency 1 {posargs}
[testenv:debug] [testenv:debug]
commands = oslo_debug_helper {posargs} commands = oslo_debug_helper {posargs}