diff options
-rw-r--r-- | sfc/lib/config.py | 2 | ||||
-rw-r--r-- | sfc/lib/utils.py | 42 | ||||
-rw-r--r-- | sfc/tests/functest/config.yaml | 1 | ||||
-rw-r--r-- | sfc/tests/functest/sfc_one_chain_two_service_functions_different_computes.py | 7 | ||||
-rw-r--r-- | sfc/tests/functest/sfc_symmetric_chain.py | 22 | ||||
-rw-r--r-- | sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py | 12 |
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') |