diff options
-rw-r--r-- | docker/Dockerfile | 3 | ||||
-rw-r--r-- | docs/release-notes/functest-release.rst | 16 | ||||
-rw-r--r-- | functest/ci/__init__.py (renamed from ci/__init__.py) | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | functest/ci/check_os.sh (renamed from ci/check_os.sh) | 0 | ||||
-rw-r--r-- | functest/ci/config_functest.yaml (renamed from ci/config_functest.yaml) | 0 | ||||
-rw-r--r-- | functest/ci/config_patch.yaml (renamed from ci/config_patch.yaml) | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | functest/ci/exec_test.sh (renamed from ci/exec_test.sh) | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | functest/ci/generate_report.py (renamed from ci/generate_report.py) | 1 | ||||
-rw-r--r--[-rwxr-xr-x] | functest/ci/prepare_env.py (renamed from ci/prepare_env.py) | 4 | ||||
-rw-r--r--[-rwxr-xr-x] | functest/ci/run_tests.py (renamed from ci/run_tests.py) | 0 | ||||
-rw-r--r-- | functest/ci/testcases.yaml (renamed from ci/testcases.yaml) | 0 | ||||
-rw-r--r-- | functest/ci/tier_builder.py (renamed from ci/tier_builder.py) | 0 | ||||
-rw-r--r-- | functest/ci/tier_handler.py (renamed from ci/tier_handler.py) | 0 | ||||
-rw-r--r-- | functest/cli/commands/cli_env.py | 3 | ||||
-rw-r--r-- | functest/cli/commands/cli_os.py | 2 | ||||
-rw-r--r-- | functest/opnfv_tests/features/sfc/ovs_utils.py | 20 | ||||
-rwxr-xr-x | functest/opnfv_tests/features/sfc/sfc.py | 40 | ||||
-rw-r--r-- | functest/utils/functest_utils.py | 2 |
18 files changed, 74 insertions, 17 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile index 73fce50cc..a51e3046e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -41,7 +41,8 @@ ENV creds /home/opnfv/functest/conf/openstack.creds ENV TERM xterm ENV COLORTERM gnome-terminal ENV PYTHONPATH $PYTHONPATH:/home/opnfv/repos/ -ENV CONFIG_FUNCTEST_YAML /home/opnfv/repos/functest/ci/config_functest.yaml +ENV CONFIG_FUNCTEST_YAML /home/opnfv/repos/functest/functest/ci/config_functest.yaml +ENV PYTHONPATH $PYTHONPATH:/home/opnfv/repos/:/home/opnfv/repos/functest WORKDIR /home/opnfv # Packaged dependencies diff --git a/docs/release-notes/functest-release.rst b/docs/release-notes/functest-release.rst index 1c9819f5a..03dfc20a1 100644 --- a/docs/release-notes/functest-release.rst +++ b/docs/release-notes/functest-release.rst @@ -206,12 +206,12 @@ precised, the scenario is a HA scenario): | multisite | | | X | | +---------------------+---------+---------+---------+---------+ -For Colorado 2.0, the following scenarios have been released: +For Colorado 2.0, the following scenarios have been re-released: +---------------------+---------+---------+---------+---------+ | Scenario | Apex | Compass | Fuel | Joid | +=====================+=========+=========+=========+=========+ -| onos-nofeature | X | X | X | X | +| onos | X | X | X | X | +---------------------+---------+---------+---------+---------+ | odl_l2-sfc-ha | | | X | | +---------------------+---------+---------+---------+---------+ @@ -310,12 +310,10 @@ Compass +------------------+---------+---------+-------------------+ | odl_l2-moon | 15/18 | 83% | `compass-res-567`_| +------------------+---------+---------+-------------------+ -| onos-ha | 15/15 | 100% | `compass-res-77`_ | +| onos-ha | 15/15 | 100% | `compass-res-285`_| +------------------+---------+---------+-------------------+ | onos-sfc-ha | 17/18 | 95% | `compass-res-76`_ | +------------------+---------+---------+-------------------+ -| onos-nofeature-ha| 15/15 | 100% | `compass-res-285`_| -+------------------+---------+---------+-------------------+ Note: all the Compass tests for Colorado have been executed on virtual environment. Bare metal resources were used for Master branch. @@ -356,7 +354,7 @@ Fuel +---------------------+---------+---------+-------------------+ | odl_l3-noha | 12/15 | 80% | `fuel-res-164`_ | +---------------------+---------+---------+-------------------+ -| onos | 20/21 | 95% | `fuel-res-117`_ | +| onos | 20/21 | 95% | `fuel-res-492`_ | +---------------------+---------+---------+-------------------+ | onos-noha | 18/18 | 100% | `fuel-res-166`_ | +---------------------+---------+---------+-------------------+ @@ -364,8 +362,6 @@ Fuel +---------------------+---------+---------+-------------------+ | onos-sfc-noha | 21/21 | 100% | `fuel-res-129`_ | +---------------------+---------+---------+-------------------+ -| onos-nofeature-ha | 18/18 | 100% | `fuel-res-492`_ | -+---------------------+---------+---------+-------------------+ | multisite | N.R | 100% | `fuel-res-8`_ | +---------------------+---------+---------+-------------------+ @@ -404,12 +400,10 @@ Joid +---------------------+---------+---------+-----------------+ | odl_l2 | 21/21 | 100% | `joid-res-103`_ | +---------------------+---------+---------+-----------------+ -| onos | 21/21 | 100% | `joid-res-99`_ | +| onos | 21/21 | 100% | `joid-res-345`_ | +---------------------+---------+---------+-----------------+ | onos-sfc | 24/24 | 100% | `joid-res-97`_ | +---------------------+---------+---------+-----------------+ -| onos-nofeature-ha | 21/21 | 100% | `joid-res-345`_ | -+---------------------+---------+---------+-----------------+ It is highly recommended to install a json viewer in your browser (e.g. https://addons.mozilla.org/fr/firefox/addon/jsonview/) diff --git a/ci/__init__.py b/functest/ci/__init__.py index e69de29bb..e69de29bb 100644 --- a/ci/__init__.py +++ b/functest/ci/__init__.py diff --git a/ci/check_os.sh b/functest/ci/check_os.sh index 38fe32f58..38fe32f58 100755..100644 --- a/ci/check_os.sh +++ b/functest/ci/check_os.sh diff --git a/ci/config_functest.yaml b/functest/ci/config_functest.yaml index cca4959a9..cca4959a9 100644 --- a/ci/config_functest.yaml +++ b/functest/ci/config_functest.yaml diff --git a/ci/config_patch.yaml b/functest/ci/config_patch.yaml index 46064a07f..46064a07f 100644 --- a/ci/config_patch.yaml +++ b/functest/ci/config_patch.yaml diff --git a/ci/exec_test.sh b/functest/ci/exec_test.sh index 640180059..640180059 100755..100644 --- a/ci/exec_test.sh +++ b/functest/ci/exec_test.sh diff --git a/ci/generate_report.py b/functest/ci/generate_report.py index d2e09eb80..c93437294 100755..100644 --- a/ci/generate_report.py +++ b/functest/ci/generate_report.py @@ -2,6 +2,7 @@ import json import os import re import urllib2 + import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as ft_utils diff --git a/ci/prepare_env.py b/functest/ci/prepare_env.py index e110aa572..e5c24cc30 100755..100644 --- a/ci/prepare_env.py +++ b/functest/ci/prepare_env.py @@ -109,7 +109,7 @@ def check_env_variables(): if CI_SCENARIO is None: logger.warning("The env variable 'DEPLOY_SCENARIO' is not defined. " - "Setting CE_SCENARIO=undefined.") + "Setting CI_SCENARIO=undefined.") CI_SCENARIO = "undefined" else: logger.info(" DEPLOY_SCENARIO=%s" % CI_SCENARIO) @@ -205,7 +205,7 @@ def patch_config_file(): def verify_deployment(): print_separator() logger.info("Verifying OpenStack services...") - cmd = ("%s/ci/check_os.sh" % ft_utils.FUNCTEST_REPO) + cmd = ("%s/functest/ci/check_os.sh" % ft_utils.FUNCTEST_REPO) logger.debug("Executing command: %s" % cmd) p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) diff --git a/ci/run_tests.py b/functest/ci/run_tests.py index f30062f75..f30062f75 100755..100644 --- a/ci/run_tests.py +++ b/functest/ci/run_tests.py diff --git a/ci/testcases.yaml b/functest/ci/testcases.yaml index afd329868..afd329868 100644 --- a/ci/testcases.yaml +++ b/functest/ci/testcases.yaml diff --git a/ci/tier_builder.py b/functest/ci/tier_builder.py index e1c3e49e6..e1c3e49e6 100644 --- a/ci/tier_builder.py +++ b/functest/ci/tier_builder.py diff --git a/ci/tier_handler.py b/functest/ci/tier_handler.py index 1eadfba50..1eadfba50 100644 --- a/ci/tier_handler.py +++ b/functest/ci/tier_handler.py diff --git a/functest/cli/commands/cli_env.py b/functest/cli/commands/cli_env.py index 572012643..d331cc15a 100644 --- a/functest/cli/commands/cli_env.py +++ b/functest/cli/commands/cli_env.py @@ -19,6 +19,7 @@ FUNCTEST_REPO = ft_utils.FUNCTEST_REPO class CliEnv: + def __init__(self): pass @@ -36,7 +37,7 @@ class CliEnv: else: answer = raw_input("Invalid answer. Please type [y|n]\n") - cmd = ("python %s/ci/prepare_env.py start" % FUNCTEST_REPO) + cmd = ("python %s/functest/ci/prepare_env.py start" % FUNCTEST_REPO) ft_utils.execute_command(cmd) def show(self): diff --git a/functest/cli/commands/cli_os.py b/functest/cli/commands/cli_os.py index 2f3f329f3..2530b5f2d 100644 --- a/functest/cli/commands/cli_os.py +++ b/functest/cli/commands/cli_os.py @@ -79,7 +79,7 @@ class CliOpenStack: def check(self): self.ping_endpoint() - cmd = ft_utils.FUNCTEST_REPO + "/ci/check_os.sh" + cmd = ft_utils.FUNCTEST_REPO + "/functest/ci/check_os.sh" ft_utils.execute_command(cmd, verbose=False) def snapshot_create(self): diff --git a/functest/opnfv_tests/features/sfc/ovs_utils.py b/functest/opnfv_tests/features/sfc/ovs_utils.py index 20ab5a7e3..af1f232c8 100644 --- a/functest/opnfv_tests/features/sfc/ovs_utils.py +++ b/functest/opnfv_tests/features/sfc/ovs_utils.py @@ -11,6 +11,7 @@ import functest.utils.functest_logger as rl import os import time import shutil +import re logger = rl.Logger('ovs_utils').getLogger() @@ -115,3 +116,22 @@ class OVSLogger(object): dumpdir = os.path.join(self.ovs_dir, timestamp) with open(os.path.join(dumpdir, 'error'), 'w') as f: f.write(related_error) + + def ofctl_time_counter(self, ssh_conn): + try: + # We get the flows from table 11 + table = 11 + br = "br-int" + output = self.ofctl_dump_flows(ssh_conn, br, table) + pattern = "NXM_NX_NSP" + rsps = [] + lines = output.split(",") + for line in lines: + is_there = re.findall(pattern, line) + if is_there: + value = line.split(":")[1].split("-")[0] + rsps.append(value) + return rsps + except Exception, e: + logger.error('Error when countering %s' % e) + return None diff --git a/functest/opnfv_tests/features/sfc/sfc.py b/functest/opnfv_tests/features/sfc/sfc.py index e5ae7dcbe..5e3e37d7c 100755 --- a/functest/opnfv_tests/features/sfc/sfc.py +++ b/functest/opnfv_tests/features/sfc/sfc.py @@ -10,6 +10,7 @@ import re import json import SSHUtils as ssh_utils import ovs_utils +import thread parser = argparse.ArgumentParser() @@ -400,6 +401,31 @@ def check_ssh(ips, retries=100): return False +# Measure the time it takes to update the classification rules + + +def capture_time_log(compute_clients): + ovs_logger = ovs_utils.OVSLogger( + os.path.join(os.getcwd(), 'ovs-logs'), + "test") + i = 0 + first_RSP = "" + start_time = time.time() + while True: + rsps = ovs_logger.ofctl_time_counter(compute_clients[0]) + if not i: + first_RSP = rsps[0] + i = i + 1 + if(first_RSP != rsps[0]): + if (rsps[0] == rsps[1]): + stop_time = time.time() + logger.info("classification rules updated") + difference = stop_time - start_time + logger.info("It took %s seconds" % difference) + break + time.sleep(1) + return + def main(): installer_type = os.environ.get("INSTALLER_TYPE") @@ -453,6 +479,13 @@ def main(): nova_client, SERVER, FLAVOR, image_id, network_id, sg_id) subprocess.call(TACKER_SCRIPT, shell=True) + + # Start measuring the time it takes to implement the classification rules + try: + thread.start_new_thread(capture_time_log, (compute_clients,)) + except Exception, e: + logger.error("Unable to start the thread that counts time %s" % e) + server_ip, client_ip, sf1, sf2 = get_floating_ips( nova_client, neutron_client) @@ -496,6 +529,13 @@ def main(): logger.info("Changing the classification") subprocess.call(TACKER_CHANGECLASSI, shell=True) + + # Start measuring the time it takes to implement the classification rules + try: + thread.start_new_thread(capture_time_log, (compute_clients,)) + except Exception, e: + logger.error("Unable to start the thread that counts time %s" % e) + logger.info("Wait for ODL to update the classification rules in OVS") time.sleep(100) diff --git a/functest/utils/functest_utils.py b/functest/utils/functest_utils.py index 41b6485d9..2d4a652d8 100644 --- a/functest/utils/functest_utils.py +++ b/functest/utils/functest_utils.py @@ -439,7 +439,7 @@ def check_test_result(test_name, ret, start_time, stop_time): def get_testcases_file(): - return FUNCTEST_REPO + "/ci/testcases.yaml" + return FUNCTEST_REPO + "/functest/ci/testcases.yaml" def get_functest_yaml(): |