summaryrefslogtreecommitdiffstats
path: root/dovetail/report.py
diff options
context:
space:
mode:
Diffstat (limited to 'dovetail/report.py')
-rw-r--r--dovetail/report.py82
1 files changed, 79 insertions, 3 deletions
diff --git a/dovetail/report.py b/dovetail/report.py
index f11bb242..ce88ed13 100644
--- a/dovetail/report.py
+++ b/dovetail/report.py
@@ -29,7 +29,7 @@ from testcase import Testcase
class Report(object):
results = {'functest': {}, 'yardstick': {}, 'functest-k8s': {},
- 'bottlenecks': {}, 'shell': {}, 'vnftest': {}}
+ 'bottlenecks': {}, 'shell': {}, 'vnftest': {}, 'onap-vtp': {}}
logger = None
@@ -431,6 +431,63 @@ class VnftestCrawler(Crawler):
return json_results
+class OnapVtpCrawler(Crawler):
+
+ logger = None
+
+ def __init__(self):
+ self.type = 'onap-vtp'
+ self.logger.debug('Create crawler: {}'.format(self.type))
+
+ @classmethod
+ def create_log(cls):
+ cls.logger = dt_logger.Logger(__name__ + '.OnapVtpCrawler').getLogger()
+
+ def crawl(self, testcase, file_path):
+ return self.crawl_from_file(testcase, file_path)
+
+ # The pass result looks like
+ # {
+ # "results": [
+ # {"property": "results", "value": "{value=SUCCESS}"},
+ # {"property": "build_tag", "value": "test"},
+ # {"property": "criteria", "value": "PASS"}
+ # ]
+ # }
+ # The fail result looks like
+ # {
+ # "results": [
+ # {"property": "results", "value": "{value=file doesn't exists}"},
+ # {"property": "build_tag", "value": "test"},
+ # {"property": "criteria", "value": "FAILED"}
+ # ]
+ # }
+ def crawl_from_file(self, testcase, file_path):
+ if not os.path.exists(file_path):
+ self.logger.error('Result file not found: {}'.format(file_path))
+ return None
+ criteria = 'FAIL'
+ with open(file_path, 'r') as f:
+ for jsonfile in f:
+ try:
+ data = json.loads(jsonfile)
+ for item in data['results']:
+ if 'criteria' == item['property']:
+ if 'PASS' == item['value']:
+ criteria = 'PASS'
+ break
+ else:
+ self.logger.error('There is no property criteria.')
+ except KeyError as e:
+ self.logger.exception('Pass flag not found {}'.format(e))
+ except ValueError:
+ continue
+ json_results = {'criteria': criteria}
+
+ testcase.set_results(json_results)
+ return json_results
+
+
class CrawlerFactory(object):
CRAWLER_MAP = {'functest': FunctestCrawler,
@@ -438,7 +495,8 @@ class CrawlerFactory(object):
'bottlenecks': BottlenecksCrawler,
'vnftest': VnftestCrawler,
'shell': ShellCrawler,
- 'functest-k8s': FunctestK8sCrawler}
+ 'functest-k8s': FunctestK8sCrawler,
+ 'onap-vtp': OnapVtpCrawler}
@classmethod
def create(cls, type):
@@ -592,6 +650,23 @@ class VnftestChecker(object):
return
+class OnapVtpChecker(object):
+
+ logger = None
+
+ @classmethod
+ def create_log(cls):
+ cls.logger = dt_logger.Logger(__name__ + '.OnapVtpChecker').getLogger()
+
+ @staticmethod
+ def check(testcase, result):
+ if not result:
+ testcase.passed('FAIL')
+ else:
+ testcase.passed(result['criteria'])
+ return
+
+
class CheckerFactory(object):
CHECKER_MAP = {'functest': FunctestChecker,
@@ -599,7 +674,8 @@ class CheckerFactory(object):
'bottlenecks': BottlenecksChecker,
'shell': ShellChecker,
'vnftest': VnftestChecker,
- 'functest-k8s': FunctestK8sChecker}
+ 'functest-k8s': FunctestK8sChecker,
+ 'onap-vtp': OnapVtpChecker}
@classmethod
def create(cls, type):