diff options
Diffstat (limited to 'dovetail/testcase.py')
-rw-r--r-- | dovetail/testcase.py | 140 |
1 files changed, 60 insertions, 80 deletions
diff --git a/dovetail/testcase.py b/dovetail/testcase.py index 8eec9388..b07a878b 100644 --- a/dovetail/testcase.py +++ b/dovetail/testcase.py @@ -13,11 +13,11 @@ import os import yaml from dovetail import constants -from parser import Parser -from test_runner import TestRunnerFactory -from utils.dovetail_config import DovetailConfig as dt_cfg -import utils.dovetail_logger as dt_logger -import utils.dovetail_utils as dt_utils +from dovetail.parser import Parser +from dovetail.test_runner import TestRunnerFactory +from dovetail.utils.dovetail_config import DovetailConfig as dt_cfg +import dovetail.utils.dovetail_logger as dt_logger +import dovetail.utils.dovetail_utils as dt_utils class Testcase(object): @@ -25,7 +25,7 @@ class Testcase(object): logger = None def __init__(self, testcase_yaml): - self.testcase = testcase_yaml.values()[0] + self.testcase = list(testcase_yaml.values())[0] self.testcase['passed'] = 'FAIL' self.cmds = [] self.sub_testcase_status = {} @@ -42,7 +42,6 @@ class Testcase(object): cmd_lines = Parser.parse_cmd(cmd, self) if not cmd_lines: return False - # self.logger.debug('cmd_lines:%s', cmd_lines) self.cmds.append(cmd_lines) self.logger.debug('cmds: {}'.format(self.cmds)) return True @@ -78,24 +77,22 @@ class Testcase(object): def sub_testcase_passed(self, name, passed=None): if passed is not None: - self.logger.debug( - 'sub_testcase_passed: {} {}'.format(name, passed)) self.sub_testcase_status[name] = passed return self.sub_testcase_status[name] def validate_type(self): return self.testcase['validate']['type'] + def vnf_type(self): + return self.testcase['vnf_type'] + def validate_testcase(self): return self.testcase['validate']['testcase'] - def exceed_max_retry_times(self): - # logger.debug('retry times:%d' % self.testcase['retry']) - return self._exceed_max_retry_times(self.validate_testcase()) + def portal_key_file(self): + return self.testcase['report']['portal_key_file'] def increase_retry(self): - # self.testcase['retry'] = self.testcase['retry'] + 1 - # return self.testcase['retry'] return self._increase_retry(self.validate_testcase()) def passed(self, passed=None): @@ -109,9 +106,6 @@ class Testcase(object): def get_results(self): return self.results - def script_result_acquired(self, acquired=None): - return self._result_acquired(self.validate_testcase(), acquired) - def pre_condition(self): try: pre_condition = self.testcase['validate']['pre_condition'] @@ -146,21 +140,18 @@ class Testcase(object): return post_condition def mk_src_file(self): - testcase_src_file = self.pre_copy_path('src_file') - try: - file_path = os.path.join(dt_cfg.dovetail_config['result_dir'], - testcase_src_file) - with open(file_path, 'w+') as src_file: - if self.sub_testcase() is not None: + test_list = os.path.join(dt_cfg.dovetail_config['result_dir'], + 'tempest_custom.txt') + if self.sub_testcase() is not None: + try: + with open(test_list, 'w+') as src_file: for sub_test in self.sub_testcase(): - self.logger.debug( - 'Save test cases {}'.format(sub_test)) src_file.write(sub_test + '\n') - self.logger.debug('Save test cases to {}'.format(file_path)) - return file_path - except Exception: - self.logger.exception('Failed to save: {}'.format(file_path)) - return None + self.logger.debug('Save test cases to {}'.format(test_list)) + return test_list + except Exception: + self.logger.exception('Failed to save: {}'.format(test_list)) + return None def run(self): runner = TestRunnerFactory.create(self) @@ -177,18 +168,6 @@ class Testcase(object): # testcase in dovetail testcase_list = {} - @classmethod - def prepared(cls, prepared=None): - if prepared is not None: - cls.validate_testcase_list['prepared'] = prepared - return cls.validate_testcase_list['prepared'] - - @classmethod - def cleaned(cls, cleaned=None): - if cleaned is not None: - cls.validate_testcase_list['cleaned'] = cleaned - return cls.validate_testcase_list['cleaned'] - @staticmethod def pre_condition_cls(validate_type): try: @@ -203,46 +182,31 @@ class Testcase(object): except KeyError: return None - @classmethod - def update_validate_testcase(cls, testcase_name): - if testcase_name not in cls.validate_testcase_list: - cls.validate_testcase_list[testcase_name] = \ - {'retry': 0, 'acquired': False} - cls.validate_testcase_list['prepared'] = False - cls.validate_testcase_list['cleaned'] = False - - @classmethod - def _exceed_max_retry_times(cls, validate_testcase): - retry = cls.validate_testcase_list[validate_testcase]['retry'] - return retry > 1 + def update_validate_testcase(self, testcase_name): + if testcase_name not in self.validate_testcase_list: + self.validate_testcase_list[testcase_name] = {'retry': 0} - @classmethod def _increase_retry(cls, validate_testcase): cls.validate_testcase_list[validate_testcase]['retry'] += 1 return cls.validate_testcase_list[validate_testcase]['retry'] @classmethod - def _result_acquired(cls, testcase, acquired=None): - if acquired is not None: - cls.validate_testcase_list[testcase]['acquired'] = \ - acquired - return cls.validate_testcase_list[testcase]['acquired'] - - @classmethod def load(cls): abs_testcase_path = constants.TESTCASE_PATH - for root, dirs, files in os.walk(abs_testcase_path): + for root, _, files in os.walk(abs_testcase_path): for testcase_file in files: with open(os.path.join(root, testcase_file)) as f: testcase_yaml = yaml.safe_load(f) - case_type = testcase_yaml.values()[0]['validate']['type'] + case_type = \ + list(testcase_yaml.values())[0]['validate']['type'] testcase = TestcaseFactory.create(case_type, testcase_yaml) if testcase is not None: - cls.testcase_list[next(testcase_yaml.iterkeys())] = \ + cls.testcase_list[next(iter(testcase_yaml.keys()))] = \ testcase else: cls.logger.error('Failed to create test case: {}' .format(testcase_file)) + return cls.testcase_list @classmethod def get(cls, testcase_name): @@ -250,8 +214,8 @@ class Testcase(object): return cls.testcase_list[testcase_name] return None - @classmethod - def check_testarea(cls, testarea): + @staticmethod + def check_testarea(testarea): area_no_duplicate = [] area_full = ['full'] @@ -260,8 +224,6 @@ class Testcase(object): return True, area_full for area in testarea: - if area not in dt_cfg.dovetail_config['testarea_supported']: - return False, None if area == 'full': return True, area_full area_no_duplicate.append(area) @@ -298,8 +260,8 @@ class Testcase(object): "test suite {}".format(testsuite['name'])) else: selected_tests += optional - if (not dt_cfg.dovetail_config['mandatory'] and - not dt_cfg.dovetail_config['optional']): + if (not dt_cfg.dovetail_config['mandatory'] + and not dt_cfg.dovetail_config['optional']): if mandatory: selected_tests += mandatory if optional: @@ -311,7 +273,7 @@ class Testcase(object): for area in testarea: if cls.check_testcase_area(value, area): testcase_list.append(value) - if value in mandatory: + if mandatory and value in mandatory: Testcase.testcase_list[value].is_mandatory = True else: Testcase.testcase_list[value].is_mandatory = False @@ -335,8 +297,7 @@ class FunctestTestcase(Testcase): # patch inside the functest container if dt_cfg.dovetail_config['no_api_validation']: patch_cmd = os.path.join( - dt_cfg.dovetail_config['functest']['config']['dir'], - 'patches', + dt_cfg.dovetail_config['functest']['patches_dir'], 'functest', 'disable-api-validation', 'apply.sh') @@ -347,6 +308,15 @@ class FunctestTestcase(Testcase): return True +class FunctestK8sTestcase(Testcase): + + validate_testcase_list = {} + + def __init__(self, testcase_yaml): + super(FunctestK8sTestcase, self).__init__(testcase_yaml) + self.type = 'functest-k8s' + + class YardstickTestcase(Testcase): validate_testcase_list = {} @@ -374,13 +344,22 @@ class ShellTestcase(Testcase): self.type = 'shell' -class VnftestTestcase(Testcase): +class OnapVtpTestcase(Testcase): validate_testcase_list = {} def __init__(self, testcase_yaml): - super(VnftestTestcase, self).__init__(testcase_yaml) - self.type = 'vnftest' + super(OnapVtpTestcase, self).__init__(testcase_yaml) + self.type = 'onap-vtp' + + +class OnapVvpTestcase(Testcase): + + validate_testcase_list = {} + + def __init__(self, testcase_yaml): + super(OnapVvpTestcase, self).__init__(testcase_yaml) + self.type = 'onap-vvp' class TestcaseFactory(object): @@ -389,7 +368,9 @@ class TestcaseFactory(object): 'yardstick': YardstickTestcase, 'bottlenecks': BottlenecksTestcase, 'shell': ShellTestcase, - 'vnftest': VnftestTestcase + 'functest-k8s': FunctestK8sTestcase, + 'onap-vtp': OnapVtpTestcase, + 'onap-vvp': OnapVvpTestcase } @classmethod @@ -427,8 +408,7 @@ class Testsuite(object): with open(os.path.join(root, testsuite_yaml)) as f: testsuite_yaml = yaml.safe_load(f) cls.testsuite_list.update(testsuite_yaml) - - # cls.logger.debug(cls.testsuite_list) + return cls.testsuite_list @classmethod def get(cls, testsuite_name): |