diff options
-rw-r--r-- | ci/config_functest.yaml | 2 | ||||
-rw-r--r-- | ci/testcases.yaml | 2 | ||||
-rw-r--r-- | ci/tier_handler.py | 10 | ||||
-rwxr-xr-x | testcases/OpenStack/tempest/run_tempest.py | 11 | ||||
-rwxr-xr-x | testcases/features/doctor.py | 3 | ||||
-rw-r--r-- | testcases/vnf/RNC/parser.py | 27 | ||||
-rw-r--r-- | utils/functest_utils.py | 21 |
7 files changed, 46 insertions, 30 deletions
diff --git a/ci/config_functest.yaml b/ci/config_functest.yaml index e4468208e..fb4103d34 100644 --- a/ci/config_functest.yaml +++ b/ci/config_functest.yaml @@ -74,6 +74,8 @@ tempest: tenant_description: Tenant for Tempest test suite user_name: tempest user_password: tempest + validation: + ssh_timeout: 130 private_net_name: tempest-net private_subnet_name: tempest-subnet private_subnet_cidr: 192.168.150.0/24 diff --git a/ci/testcases.yaml b/ci/testcases.yaml index 315969ae7..221d2fcf1 100644 --- a/ci/testcases.yaml +++ b/ci/testcases.yaml @@ -257,7 +257,7 @@ tiers: scenario: '(ocl)|(nosdn)|^(os-odl)((?!bgpvpn).)*$' - name: parser - criteria: 'status == "PASS"' + criteria: 'ret == 0' blocking: false description: >- Test suite from Parser project. diff --git a/ci/tier_handler.py b/ci/tier_handler.py index e50fbe6fd..1eadfba50 100644 --- a/ci/tier_handler.py +++ b/ci/tier_handler.py @@ -111,17 +111,21 @@ class TestCase: self.criteria = criteria self.blocking = blocking + @staticmethod + def is_none(item): + return item is None or item is "" + def is_compatible(self, ci_installer, ci_scenario): try: - if ci_installer is not None: + if not self.is_none(ci_installer): if re.search(self.dependency.get_installer(), ci_installer) is None: return False - if ci_scenario is not None: + if not self.is_none(ci_scenario): if re.search(self.dependency.get_scenario(), ci_scenario) is None: return False - return not (ci_scenario is None and ci_installer is None) + return True except TypeError: return False diff --git a/testcases/OpenStack/tempest/run_tempest.py b/testcases/OpenStack/tempest/run_tempest.py index 53a70b799..d29b3f3bc 100755 --- a/testcases/OpenStack/tempest/run_tempest.py +++ b/testcases/OpenStack/tempest/run_tempest.py @@ -81,6 +81,8 @@ TENANT_DESCRIPTION = functest_yaml.get("tempest").get("identity").get( USER_NAME = functest_yaml.get("tempest").get("identity").get("user_name") USER_PASSWORD = functest_yaml.get("tempest").get("identity").get( "user_password") +SSH_TIMEOUT = functest_yaml.get("tempest").get("validation").get( + "ssh_timeout") DEPLOYMENT_MAME = functest_yaml.get("rally").get("deployment_name") RALLY_INSTALLATION_DIR = functest_yaml.get("general").get("directories").get( "dir_rally_inst") @@ -176,12 +178,16 @@ def configure_tempest(deployment_dir): Add/update needed parameters into tempest.conf file generated by Rally """ - logger.debug("Generating tempest.conf file...") + tempest_conf_file = deployment_dir + "/tempest.conf" + if os.path.isfile(tempest_conf_file): + logger.debug("Deleting old tempest.conf file...") + os.remove(tempest_conf_file) + + logger.debug("Generating new tempest.conf file...") cmd = "rally verify genconfig" ft_utils.execute_command(cmd, logger) logger.debug("Finding tempest.conf file...") - tempest_conf_file = deployment_dir + "/tempest.conf" if not os.path.isfile(tempest_conf_file): logger.error("Tempest configuration file %s NOT found." % tempest_conf_file) @@ -194,6 +200,7 @@ def configure_tempest(deployment_dir): config.set('identity', 'tenant_name', TENANT_NAME) config.set('identity', 'username', USER_NAME) config.set('identity', 'password', USER_PASSWORD) + config.set('validation', 'ssh_timeout', SSH_TIMEOUT) if os.getenv('OS_ENDPOINT_TYPE') is not None: services_list = ['compute', 'volume', 'image', 'network', diff --git a/testcases/features/doctor.py b/testcases/features/doctor.py index bdf3ddc35..184ab032b 100755 --- a/testcases/features/doctor.py +++ b/testcases/features/doctor.py @@ -37,7 +37,8 @@ def main(): cmd = 'cd %s/tests && ./run.sh' % DOCTOR_REPO start_time = time.time() - ret = functest_utils.execute_command(cmd, logger, exit_on_error=False) + ret = functest_utils.execute_command(cmd, logger, info=True, + exit_on_error=False) stop_time = time.time() duration = round(stop_time - start_time, 1) diff --git a/testcases/vnf/RNC/parser.py b/testcases/vnf/RNC/parser.py index 485af0e14..91d5bb06a 100644 --- a/testcases/vnf/RNC/parser.py +++ b/testcases/vnf/RNC/parser.py @@ -32,33 +32,18 @@ logger = ft_logger.Logger("parser").getLogger() def main(): - EXIT_CODE = -1 project = 'parser' case_name = 'parser-basics' cmd = 'cd %s/tests && ./functest_run.sh' % PARSER_REPO - start_time = time.time() + start_time = time.time() ret = functest_utils.execute_command(cmd, logger, exit_on_error=False) - stop_time = time.time() - duration = round(stop_time - start_time, 1) - if ret == 0: - EXIT_CODE = 0 - logger.info("parser OK") - test_status = 'OK' - else: - logger.info("parser FAILED") - test_status = 'NOK' - - details = { - 'timestart': start_time, - 'duration': duration, - 'status': test_status, - } - status = "FAIL" - if details['status'] == "OK": - status = "PASS" + status, details = functest_utils.check_test_result(case_name, + ret, + start_time, + stop_time) functest_utils.logger_test_results(logger, project, @@ -73,7 +58,7 @@ def main(): stop_time, status, details) - exit(EXIT_CODE) + exit(ret) if __name__ == '__main__': main() diff --git a/utils/functest_utils.py b/utils/functest_utils.py index 5f790a015..cb2333d42 100644 --- a/utils/functest_utils.py +++ b/utils/functest_utils.py @@ -357,16 +357,33 @@ def check_success_rate(case_name, success_rate): success_rate = float(success_rate) criteria = get_criteria_by_test(case_name) - def get_value(op): + def get_criteria_value(op): return float(criteria.split(op)[1].rstrip('%')) status = 'FAIL' ops = ['==', '>='] for op in ops: if op in criteria: - c_value = get_value(op) + c_value = get_criteria_value(op) if eval("%s %s %s" % (success_rate, op, c_value)): status = 'PASS' break return status + + +def check_test_result(test_name, ret, start_time, stop_time): + def get_criteria_value(): + return get_criteria_by_test(test_name).split('==')[1].strip() + + status = 'FAIL' + if str(ret) == get_criteria_value(): + status = 'PASS' + + details = { + 'timestart': start_time, + 'duration': round(stop_time - start_time, 1), + 'status': status, + } + + return status, details |