From 698cd3f4246c4e472c306fcad57d8d7b6431333f Mon Sep 17 00:00:00 2001 From: Moshe Date: Sun, 4 Mar 2018 15:42:23 +0200 Subject: Integrate dovetail with ONAP Change-Id: I6a1fa5f27df2f5127eb00156b3135dc79caf5e77 Issue-ID: DOVETAIL-629 Signed-off-by: Moshe --- dovetail/report.py | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 2 deletions(-) (limited to 'dovetail/report.py') diff --git a/dovetail/report.py b/dovetail/report.py index 9d0517b4..dea9e426 100644 --- a/dovetail/report.py +++ b/dovetail/report.py @@ -27,7 +27,8 @@ from testcase import Testcase class Report(object): - results = {'functest': {}, 'yardstick': {}, 'bottlenecks': {}, 'shell': {}} + results = {'functest': {}, 'yardstick': {}, + 'bottlenecks': {}, 'shell': {}, 'vnftest': {}} logger = None @@ -427,11 +428,56 @@ class ShellCrawler(object): return None +class VnftestCrawler(object): + + logger = None + + def __init__(self): + self.type = 'vnftest' + self.logger.debug('Create crawler: {}'.format(self.type)) + + @classmethod + def create_log(cls): + cls.logger = \ + dt_logger.Logger(__name__ + '.VnftestCrawler').getLogger() + + def crawl(self, testcase): + report_dest = dt_cfg.dovetail_config['report_dest'] + if report_dest.lower() == 'file': + return self.crawl_from_file(testcase) + + if report_dest.lower().startswith('http'): + return self.crawl_from_url(testcase) + + def crawl_from_file(self, testcase): + + file_path = os.path.join(dt_cfg.dovetail_config['result_dir'], + testcase.name() + '.out') + 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: + data = json.loads(jsonfile) + try: + criteria = data['result']['criteria'] + except KeyError as e: + self.logger.exception('Pass flag not found {}'.format(e)) + json_results = {'criteria': criteria} + self.logger.debug('Results: {}'.format(str(json_results))) + return json_results + + def crawl_from_url(self, testcase=None): + return None + + class CrawlerFactory(object): CRAWLER_MAP = {'functest': FunctestCrawler, 'yardstick': YardstickCrawler, 'bottlenecks': BottlenecksCrawler, + 'vnftest': VnftestCrawler, 'shell': ShellCrawler} @classmethod @@ -558,12 +604,31 @@ class ShellChecker(object): testcase.passed(False) +class VnftestChecker(object): + + logger = None + + @classmethod + def create_log(cls): + cls.logger = \ + dt_logger.Logger(__name__ + '.VnftestCheckers').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, 'yardstick': YardstickChecker, 'bottlenecks': BottlenecksChecker, - 'shell': ShellChecker} + 'shell': ShellChecker, + 'vnftest': VnftestChecker} @classmethod def create(cls, type): -- cgit 1.2.3-korg