From 2ebb76e757caf2a450758a14223f9a16d8d154ea Mon Sep 17 00:00:00 2001 From: Manuel Buil Date: Tue, 14 Mar 2017 11:13:22 +0000 Subject: Bug fix: classif. check not working for one chain In the test case with only one chain the wait_classification function was not working Change-Id: I4cff1e61130b6fc68d736108a0da048909dad750 Signed-off-by: Manuel Buil (cherry picked from commit 4b082d08b46941da06630926a117054881a8aa1b) --- sfc/lib/utils.py | 35 +++++++++++++++------- ...ain_two_service_functions_different_computes.py | 4 ++- sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py | 3 +- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/sfc/lib/utils.py b/sfc/lib/utils.py index 2b8bdc13..4b5e91f5 100644 --- a/sfc/lib/utils.py +++ b/sfc/lib/utils.py @@ -360,7 +360,8 @@ 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): +def wait_for_classification_rules(ovs_logger, compute_clients, + num_chains, timeout=200): # 10 sec. is the threshold to consider a flow from an old deployment for compute_client in compute_clients: max_duration = 10 @@ -369,16 +370,28 @@ def wait_for_classification_rules(ovs_logger, compute_clients, timeout=200): # 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("This is the first_RSP: %s" % first_RSP) + if num_chains == 1: + while not ((len(rsps) == 1) and (first_RSP != rsps[0])): + rsps = ofctl_time_counter(ovs_logger, compute_client) + logger.info("These are the rsps: %s" % rsps) + timeout -= 1 + if timeout == 0: + logger.error( + "Timeout but classification rules are not updated") + return + time.sleep(1) + elif num_chains == 2: + while not ((len(rsps) > 1) and (first_RSP != rsps[0]) and + (rsps[0] == rsps[1])): + rsps = ofctl_time_counter(ovs_logger, compute_client) + logger.info("This is the rsps: %s" % rsps) + timeout -= 1 + if timeout == 0: + logger.error( + "Timeout but classification rules are not updated") + return + time.sleep(1) logger.info("classification rules updated") 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 88c3d5fb..77c3a4e5 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 @@ -165,9 +165,11 @@ def main(): logger.info(test_utils.run_cmd('tacker sfc-list')[1]) logger.info(test_utils.run_cmd('tacker sfc-classifier-list')[1]) + num_chains = 1 + # Start measuring the time it takes to implement the classification rules t1 = threading.Thread(target=test_utils.wait_for_classification_rules, - args=(ovs_logger, compute_clients,)) + args=(ovs_logger, compute_clients, num_chains,)) try: t1.start() except Exception, e: 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 fa549b16..d96b9d83 100644 --- a/sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py +++ b/sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py @@ -180,9 +180,10 @@ def main(): logger.info(test_utils.run_cmd('tacker sfc-list')[1]) logger.info(test_utils.run_cmd('tacker sfc-classifier-list')[1]) + num_chains = 2 # Start measuring the time it takes to implement the classification rules t1 = threading.Thread(target=test_utils.wait_for_classification_rules, - args=(ovs_logger, compute_clients,)) + args=(ovs_logger, compute_clients, num_chains,)) try: t1.start() except Exception, e: -- cgit 1.2.3-korg