From 32cc637c69580b18112e1e347830b6ee194b1b60 Mon Sep 17 00:00:00 2001 From: George Paraskevopoulos Date: Tue, 21 Feb 2017 10:10:09 +0200 Subject: Wait for flows to appear in all compute nodes Right now we check the classification rules only on the first compute node. This leads to race conditions when running the testcases on multiple computes (ie the test fails when a rule is installed in the first compute but not the other[s]) Change-Id: I13cf26201aae185a0a5d1220b38e061d8bd3c766 Signed-off-by: George Paraskevopoulos --- sfc/lib/utils.py | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'sfc/lib/utils.py') diff --git a/sfc/lib/utils.py b/sfc/lib/utils.py index a7edef68..c8641dd0 100644 --- a/sfc/lib/utils.py +++ b/sfc/lib/utils.py @@ -399,22 +399,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): -- cgit 1.2.3-korg