summaryrefslogtreecommitdiffstats
path: root/dovetail/report.py
diff options
context:
space:
mode:
Diffstat (limited to 'dovetail/report.py')
-rw-r--r--dovetail/report.py81
1 files changed, 50 insertions, 31 deletions
diff --git a/dovetail/report.py b/dovetail/report.py
index 11e3c244..b7b27930 100644
--- a/dovetail/report.py
+++ b/dovetail/report.py
@@ -214,23 +214,44 @@ class FunctestCrawler(object):
def crawl_from_file(self, testcase=None):
dovetail_config = dt_cfg.dovetail_config
- file_path = \
- os.path.join(dovetail_config['result_dir'],
- dovetail_config[self.type]['result']['file_path'])
- if not os.path.exists(file_path):
- self.logger.info('result file not found: %s', file_path)
- return None
-
- try:
+ criteria = 'FAIL'
+ timestart = 0
+ testcase_duration = 0
+ testcase_name = testcase.validate_testcase()
+ json_results = {}
+ if testcase_name in dt_cfg.dovetail_config['functest_testcase']:
+ file_path = \
+ os.path.join(dovetail_config['result_dir'],
+ dovetail_config[self.type]['result']['file_path'])
+ if not os.path.exists(file_path):
+ self.logger.info('result file not found: %s', file_path)
+ return None
+ with open(file_path, 'r') as f:
+ for jsonfile in f:
+ data = json.loads(jsonfile)
+ if testcase_name == data['case_name']:
+ criteria = data['details']['status']
+ timestart = data['details']['timestart']
+ testcase_duration = data['details']['duration']
+
+ json_results = {'criteria': criteria,
+ 'details': {"timestart": timestart,
+ "duration": testcase_duration,
+ "tests": '', "failures": ''}}
+ elif 'tempest' in testcase_name:
+ file_path = \
+ os.path.join(dovetail_config['result_dir'],
+ dovetail_config[self.type]['result']['tp_path'])
+ if not os.path.exists(file_path):
+ self.logger.info('result file not found: %s', file_path)
+ return None
with open(file_path, 'r') as myfile:
output = myfile.read()
- error_logs = ""
- for match in re.findall('(.*?)[. ]*FAILED', output):
- error_logs += match
+ error_logs = " ".join(re.findall('(.*?)[. ]*fail ', output))
+ skipped = " ".join(re.findall('(.*?)[. ]*skip:', output))
- criteria = 'PASS'
- failed_num = int(re.findall(' - Failed: (\d*)', output)[0])
+ failed_num = int(re.findall(' - Failures: (\d*)', output)[0])
if failed_num != 0:
criteria = 'FAIL'
@@ -239,13 +260,11 @@ class FunctestCrawler(object):
json_results = {'criteria': criteria, 'details': {"timestart": '',
"duration": int(dur_sec_int),
"tests": int(num_tests), "failures": failed_num,
- "errors": error_logs}}
- self.logger.debug('Results: %s', str(json_results))
- return json_results
- except Exception as e:
- self.logger.error('Cannot read content from the file: %s, '
- 'exception: %s', file_path, e)
- return None
+ "errors": error_logs,
+ "skipped": skipped}}
+
+ self.logger.debug('Results: %s', str(json_results))
+ return json_results
def crawl_from_url(self, testcase=None):
url = \
@@ -289,17 +308,15 @@ class YardstickCrawler(object):
if not os.path.exists(file_path):
self.logger.info('result file not found: %s', file_path)
return None
- try:
- with open(file_path, 'r') as myfile:
- myfile.read()
- criteria = 'PASS'
- json_results = {'criteria': criteria}
- self.logger.debug('Results: %s', str(json_results))
- return json_results
- except Exception as e:
- self.logger.error('Cannot read content from the file: %s, '
- 'exception: %s', file_path, e)
- return None
+ criteria = 'FAIL'
+ with open(file_path, 'r') as f:
+ for jsonfile in f:
+ data = json.loads(jsonfile)
+ if 1 == data['status']:
+ criteria = 'PASS'
+ json_results = {'criteria': criteria}
+ self.logger.debug('Results: %s', str(json_results))
+ return json_results
def crawl_from_url(self, testcase=None):
return None
@@ -378,6 +395,8 @@ class FunctestChecker(object):
all_passed = True
for sub_testcase in sub_testcase_list:
self.logger.debug('check sub_testcase:%s', sub_testcase)
+ # TO DO: should think the test case when skipped, should think
+ # together with the "dovetail report"
if sub_testcase in db_result['details']['errors']:
testcase.sub_testcase_passed(sub_testcase, False)
all_passed = False