summaryrefslogtreecommitdiffstats
path: root/dovetail/testcase.py
diff options
context:
space:
mode:
Diffstat (limited to 'dovetail/testcase.py')
-rw-r--r--dovetail/testcase.py140
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):