diff options
Diffstat (limited to 'dovetail/report.py')
-rw-r--r-- | dovetail/report.py | 82 |
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): |