From d94269b2189405e854aeb6d21e476206a0b3d701 Mon Sep 17 00:00:00 2001 From: Cédric Ollivier Date: Wed, 2 Aug 2017 11:54:19 +0200 Subject: Install run_sdnvpn_tests.py in $PATH MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It eases how Functest runs it (see testcases.yaml [1]). The former run_tests.py is renamed to avoid duplicated binaries (see [2] and [3]). [1] https://git.opnfv.org/functest/tree/functest/ci/testcases.yaml [2] https://git.opnfv.org/sfc/tree/sfc/tests/functest/run_tests.py [3] https://git.opnfv.org/promise/tree/promise/test/functest/run_tests.py Change-Id: I50219cad42bf0e085c2edf2e1abe149c2e057a99 Signed-off-by: Cédric Ollivier --- sdnvpn/test/functest/run_sdnvpn_tests.py | 115 +++++++++++++++++++++++++++++++ sdnvpn/test/functest/run_tests.py | 115 ------------------------------- setup.cfg | 2 + 3 files changed, 117 insertions(+), 115 deletions(-) create mode 100644 sdnvpn/test/functest/run_sdnvpn_tests.py delete mode 100644 sdnvpn/test/functest/run_tests.py diff --git a/sdnvpn/test/functest/run_sdnvpn_tests.py b/sdnvpn/test/functest/run_sdnvpn_tests.py new file mode 100644 index 0000000..e671264 --- /dev/null +++ b/sdnvpn/test/functest/run_sdnvpn_tests.py @@ -0,0 +1,115 @@ +#!/bin/python +# +# Copyright (c) 2017 All rights reserved +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# + +import argparse +import importlib +import logging +import os +import sys +import time +import traceback +import yaml + +import functest.utils.functest_utils as ft_utils +from sdnvpn.lib import config as sdnvpn_config +from sdnvpn.lib.gather_logs import gather_logs + +logger = logging.getLogger('sdnvpn-run-tests') + +COMMON_CONFIG = sdnvpn_config.CommonConfig() +TEST_DB_URL = COMMON_CONFIG.test_db + + +def push_results(testname, start_time, end_time, criteria, details): + logger.info("Push testcase '%s' results into the DB...\n" % testname) + ft_utils.push_results_to_db("sdnvpn", + testname, + start_time, + end_time, + criteria, + details) + + +def main(report=False): + # Workaround for https://jira.opnfv.org/projects/SDNVPN/issues/SDNVPN-100 + # and SDNVPN-126 + cmd_line = "neutron quota-update --subnet -1 --network -1 --port -1" + logger.info("Setting subnet/net quota to unlimited : %s" % cmd_line) + cmd = os.popen(cmd_line) + output = cmd.read() + logger.debug(output) + + # Workaround for https://jira.opnfv.org/projects/SDNVPN/issues/SDNVPN-115 + cmd_line = "nova quota-class-update --instances -1 default" + logger.info("Setting instances quota to unlimited : %s" % cmd_line) + cmd = os.popen(cmd_line) + output = cmd.read() + logger.debug(output) + + with open(COMMON_CONFIG.config_file) as f: + config_yaml = yaml.safe_load(f) + + testcases = config_yaml.get("testcases") + overall_status = "PASS" + for testcase in testcases: + if testcases[testcase]['enabled']: + test_name = testcase + test_descr = testcases[testcase]['description'] + test_name_db = testcases[testcase]['testname_db'] + title = ("Running '%s - %s'" % + (test_name, test_descr)) + logger.info(title) + logger.info("%s\n" % ("=" * len(title))) + t = importlib.import_module(testcase, package=None) + start_time = time.time() + try: + result = t.main() + except Exception as ex: + result = -1 + logger.info("Caught Exception in %s: %s Trace: %s" % + (test_name, ex, traceback.format_exc())) + end_time = time.time() + if result < 0: + status = "FAIL" + overall_status = "FAIL" + logger.info("Testcase %s failed" % test_name) + else: + status = result.get("status") + details = result.get("details") + logger.info("Results of test case '%s - %s':\n%s\n" % + (test_name, test_descr, result)) + + if status == "FAIL": + overall_status = "FAIL" + + if report: + push_results( + test_name_db, start_time, end_time, status, details) + + try: + gather_logs('overall') + except Exception as ex: + logger.error(('Something went wrong in the Log gathering.' + 'Ex: %s, Trace: %s') + % ex, traceback.format_exc()) + if overall_status == "FAIL": + sys.exit(-1) + + sys.exit(0) + + +if __name__ == '__main__': + logging.basicConfig(level=logging.INFO) + parser = argparse.ArgumentParser() + parser.add_argument("-r", "--report", + help="Create json result file", + action="store_true") + args = parser.parse_args() + main(report=args.report) diff --git a/sdnvpn/test/functest/run_tests.py b/sdnvpn/test/functest/run_tests.py deleted file mode 100644 index e671264..0000000 --- a/sdnvpn/test/functest/run_tests.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/python -# -# Copyright (c) 2017 All rights reserved -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# - -import argparse -import importlib -import logging -import os -import sys -import time -import traceback -import yaml - -import functest.utils.functest_utils as ft_utils -from sdnvpn.lib import config as sdnvpn_config -from sdnvpn.lib.gather_logs import gather_logs - -logger = logging.getLogger('sdnvpn-run-tests') - -COMMON_CONFIG = sdnvpn_config.CommonConfig() -TEST_DB_URL = COMMON_CONFIG.test_db - - -def push_results(testname, start_time, end_time, criteria, details): - logger.info("Push testcase '%s' results into the DB...\n" % testname) - ft_utils.push_results_to_db("sdnvpn", - testname, - start_time, - end_time, - criteria, - details) - - -def main(report=False): - # Workaround for https://jira.opnfv.org/projects/SDNVPN/issues/SDNVPN-100 - # and SDNVPN-126 - cmd_line = "neutron quota-update --subnet -1 --network -1 --port -1" - logger.info("Setting subnet/net quota to unlimited : %s" % cmd_line) - cmd = os.popen(cmd_line) - output = cmd.read() - logger.debug(output) - - # Workaround for https://jira.opnfv.org/projects/SDNVPN/issues/SDNVPN-115 - cmd_line = "nova quota-class-update --instances -1 default" - logger.info("Setting instances quota to unlimited : %s" % cmd_line) - cmd = os.popen(cmd_line) - output = cmd.read() - logger.debug(output) - - with open(COMMON_CONFIG.config_file) as f: - config_yaml = yaml.safe_load(f) - - testcases = config_yaml.get("testcases") - overall_status = "PASS" - for testcase in testcases: - if testcases[testcase]['enabled']: - test_name = testcase - test_descr = testcases[testcase]['description'] - test_name_db = testcases[testcase]['testname_db'] - title = ("Running '%s - %s'" % - (test_name, test_descr)) - logger.info(title) - logger.info("%s\n" % ("=" * len(title))) - t = importlib.import_module(testcase, package=None) - start_time = time.time() - try: - result = t.main() - except Exception as ex: - result = -1 - logger.info("Caught Exception in %s: %s Trace: %s" % - (test_name, ex, traceback.format_exc())) - end_time = time.time() - if result < 0: - status = "FAIL" - overall_status = "FAIL" - logger.info("Testcase %s failed" % test_name) - else: - status = result.get("status") - details = result.get("details") - logger.info("Results of test case '%s - %s':\n%s\n" % - (test_name, test_descr, result)) - - if status == "FAIL": - overall_status = "FAIL" - - if report: - push_results( - test_name_db, start_time, end_time, status, details) - - try: - gather_logs('overall') - except Exception as ex: - logger.error(('Something went wrong in the Log gathering.' - 'Ex: %s, Trace: %s') - % ex, traceback.format_exc()) - if overall_status == "FAIL": - sys.exit(-1) - - sys.exit(0) - - -if __name__ == '__main__': - logging.basicConfig(level=logging.INFO) - parser = argparse.ArgumentParser() - parser.add_argument("-r", "--report", - help="Create json result file", - action="store_true") - args = parser.parse_args() - main(report=args.report) diff --git a/setup.cfg b/setup.cfg index e26266c..bb825eb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -5,3 +5,5 @@ home-page = https://wiki.opnfv.org/display/sdnvpn/SDNVPN+project+main+page [files] packages = sdnvpn +scripts = + sdnvpn/test/functest/run_sdnvpn_tests.py -- cgit 1.2.3-korg