aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sfc/lib/config.py2
-rw-r--r--sfc/lib/utils.py42
-rw-r--r--sfc/tests/functest/config.yaml1
-rw-r--r--sfc/tests/functest/sfc_one_chain_two_service_functions_different_computes.py7
-rw-r--r--sfc/tests/functest/sfc_symmetric_chain.py22
-rw-r--r--sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py12
6 files changed, 59 insertions, 27 deletions
diff --git a/sfc/lib/config.py b/sfc/lib/config.py
index 3ef8514e..3a8247e3 100644
--- a/sfc/lib/config.py
+++ b/sfc/lib/config.py
@@ -31,6 +31,8 @@ class CommonConfig(object):
self.sfc_test_dir = os.path.join(
self.repo_path, "sfc", "tests", "functest")
self.vnfd_dir = os.path.join(self.sfc_test_dir, "vnfd-templates")
+ self.vnfd_default_params_file = os.path.join(
+ self.sfc_test_dir, "vnfd-default-params-file")
self.functest_results_dir = os.path.join(
CONST.dir_results, "odl-sfc")
self.config_file = os.path.join(self.sfc_test_dir, "config.yaml")
diff --git a/sfc/lib/utils.py b/sfc/lib/utils.py
index 249cd6c8..dde71b2b 100644
--- a/sfc/lib/utils.py
+++ b/sfc/lib/utils.py
@@ -78,10 +78,10 @@ def download_image(url, image_path):
logger.info("Using old image")
-def create_vnf_in_av_zone(tacker_client, vnf_name, vnfd_name, av_zone=None):
- param_file = os.path.join(os.getcwd(),
- 'vnfd-templates',
- 'test-vnfd-default-params.yaml')
+def create_vnf_in_av_zone(
+ tacker_client, vnf_name, vnfd_name, default_param_file, av_zone=None):
+ param_file = default_param_file
+
if av_zone is not None or av_zone != 'nova':
param_file = os.path.join(
'/tmp',
@@ -382,22 +382,24 @@ def ofctl_time_counter(ovs_logger, ssh_conn, max_duration=None):
@ft_utils.timethis
def wait_for_classification_rules(ovs_logger, compute_clients, timeout=200):
# 10 sec. is the threshold to consider a flow from an old deployment
- max_duration = 10
- rsps = ofctl_time_counter(ovs_logger, compute_clients[0], max_duration)
- # first_RSP saves a potential RSP from an old deployment. ODL may take
- # quite some time to implement the new flow and an old flow may be there
- first_RSP = rsps[0] if len(rsps) > 0 else ''
- while not ((len(rsps) > 1) and
- (first_RSP != rsps[0]) and
- (rsps[0] == rsps[1])):
- rsps = ofctl_time_counter(ovs_logger, compute_clients[0])
- timeout -= 1
- if timeout == 0:
- logger.error(
- "Timeout but classification rules are not updated")
- return
- time.sleep(1)
- logger.info("classification rules updated")
+ for compute_client in compute_clients:
+ max_duration = 10
+ rsps = ofctl_time_counter(ovs_logger, compute_client, max_duration)
+ # first_RSP saves a potential RSP from an old deployment.
+ # ODL may take quite some time to implement the new flow
+ # and an old flow may be there
+ first_RSP = rsps[0] if len(rsps) > 0 else ''
+ while not ((len(rsps) > 1) and
+ (first_RSP != rsps[0]) and
+ (rsps[0] == rsps[1])):
+ rsps = ofctl_time_counter(ovs_logger, compute_client)
+ timeout -= 1
+ if timeout == 0:
+ logger.error(
+ "Timeout but classification rules are not updated")
+ return
+ time.sleep(1)
+ logger.info("classification rules updated")
def setup_compute_node(cidr, compute_nodes):
diff --git a/sfc/tests/functest/config.yaml b/sfc/tests/functest/config.yaml
index 618d69e1..bb32a7df 100644
--- a/sfc/tests/functest/config.yaml
+++ b/sfc/tests/functest/config.yaml
@@ -15,6 +15,7 @@ defaults:
image_format: qcow2
url: "http://artifacts.opnfv.org/sfc/images"
vnfd-dir: "vnfd-templates"
+ vnfd-default-params-file: "test-vnfd-default-params.yaml"
testcases:
sfc_two_chains_SSH_and_HTTP:
diff --git a/sfc/tests/functest/sfc_one_chain_two_service_functions_different_computes.py b/sfc/tests/functest/sfc_one_chain_two_service_functions_different_computes.py
index 72408897..357f08de 100644
--- a/sfc/tests/functest/sfc_one_chain_two_service_functions_different_computes.py
+++ b/sfc/tests/functest/sfc_one_chain_two_service_functions_different_computes.py
@@ -148,15 +148,22 @@ def main():
tacker_client,
tosca_file=tosca_file)
+ default_param_file = os.path.join(
+ COMMON_CONFIG.sfc_test_dir,
+ COMMON_CONFIG.vnfd_dir,
+ COMMON_CONFIG.vnfd_default_params_file)
+
test_utils.create_vnf_in_av_zone(
tacker_client,
'testVNF1',
'test-vnfd1',
+ default_param_file,
av_zone=availability_zones[0])
test_utils.create_vnf_in_av_zone(
tacker_client,
'testVNF2',
'test-vnfd2',
+ default_param_file,
av_zone=availability_zones[1])
vnf1_id = os_tacker.wait_for_vnf(tacker_client, vnf_name='testVNF1')
diff --git a/sfc/tests/functest/sfc_symmetric_chain.py b/sfc/tests/functest/sfc_symmetric_chain.py
index 6ac8c1b6..409bd0b8 100644
--- a/sfc/tests/functest/sfc_symmetric_chain.py
+++ b/sfc/tests/functest/sfc_symmetric_chain.py
@@ -22,6 +22,7 @@ from opnfv.deployment.factory import Factory as DeploymentFactory
import sfc.lib.config as sfc_config
import sfc.lib.utils as test_utils
from sfc.lib.results import Results
+import sfc.lib.topology_shuffler as topo_shuffler
logger = ft_logger.Logger(__name__).getLogger()
@@ -96,13 +97,22 @@ def main():
TESTCASE_CONFIG.secgroup_name,
TESTCASE_CONFIG.secgroup_descr)
+ vnfs = ['testVNF1']
+ # Using seed=0 uses the baseline topology: everything in the same host
+ testTopology = topo_shuffler.topology(vnfs, seed=0)
+ logger.info('This test is run with the topology {0}'
+ .format(testTopology['id']))
+ logger.info('Topology description: {0}'
+ .format(testTopology['description']))
+
test_utils.create_instance(
nova_client,
CLIENT,
COMMON_CONFIG.flavor,
image_id,
network_id,
- sg_id)
+ sg_id,
+ av_zone=testTopology[CLIENT])
server_instance = test_utils.create_instance(
nova_client,
@@ -110,17 +120,19 @@ def main():
COMMON_CONFIG.flavor,
image_id,
network_id,
- sg_id)
+ sg_id,
+ av_zone=testTopology[SERVER])
server_ip = server_instance.networks.get(TESTCASE_CONFIG.net_name)[0]
- tosca = os.path.join(
+ tosca_file = os.path.join(
COMMON_CONFIG.sfc_test_dir,
COMMON_CONFIG.vnfd_dir,
TESTCASE_CONFIG.test_vnfd)
- os_tacker.create_vnfd(tacker_client, tosca_file=tosca)
- test_utils.create_vnf_in_av_zone(tacker_client, 'testVNF1', 'test-vnfd1')
+ os_tacker.create_vnfd(tacker_client, tosca_file=tosca_file)
+ test_utils.create_vnf_in_av_zone(
+ tacker_client, vnfs[0], 'test-vnfd1', testTopology[vnfs[0]])
vnf_id = os_tacker.wait_for_vnf(tacker_client, vnf_name='testVNF1')
if vnf_id is None:
diff --git a/sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py b/sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py
index 99e5d67e..fa549b16 100644
--- a/sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py
+++ b/sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py
@@ -139,10 +139,18 @@ def main():
COMMON_CONFIG.vnfd_dir,
TESTCASE_CONFIG.test_vnfd_blue)
os_tacker.create_vnfd(tacker_client, tosca_file=tosca_blue)
+
+ default_param_file = os.path.join(
+ COMMON_CONFIG.sfc_test_dir,
+ COMMON_CONFIG.vnfd_dir,
+ COMMON_CONFIG.vnfd_default_params_file)
+
test_utils.create_vnf_in_av_zone(
- tacker_client, vnfs[0], 'test-vnfd1', testTopology[vnfs[0]])
+ tacker_client, vnfs[0], 'test-vnfd1',
+ default_param_file, testTopology[vnfs[0]])
test_utils.create_vnf_in_av_zone(
- tacker_client, vnfs[1], 'test-vnfd2', testTopology[vnfs[1]])
+ tacker_client, vnfs[1], 'test-vnfd2',
+ default_param_file, testTopology[vnfs[1]])
vnf1_id = os_tacker.wait_for_vnf(tacker_client, vnf_name='testVNF1')
vnf2_id = os_tacker.wait_for_vnf(tacker_client, vnf_name='testVNF2')