def main(resultsdb_url, frontend_url, timeparam): """ Download results from resultdb for selected time span, return them prettyprinted in string. :param str resultsdb_url: URL of resultsdb instance :param str frontend_url: URL of resultsdb frontend :param str timeparam: two ISO 8601 values separated by commas for time span :return: prettyprinted summary of checks """ api = resultsdb_api.ResultsDBapi(resultsdb_url) results = [] page = 0 r = api.get_results(since=timeparam, page=page) while len(r["data"]) != 0: results.extend(r["data"]) page += 1 r = api.get_results(since=timeparam, page=page) passed = 0 passed_types = {} failed = 0 failed_types = {} together = {} for result in results: test_case = result["testcase"]["name"] if result["outcome"] in OKAYISH: passed += 1 passed_types[test_case] = passed_types.get(test_case, 0) + 1 else: failed += 1 failed_types[test_case] = failed_types.get(test_case, 0) + 1 together[test_case] = together.get(test_case, 0) + 1 output = "libtaskotron results\n====================\n" output += "Generated on: " + socket.gethostname() + "\n" [from_time, to_time] = timeparam.split(",") output += "From: " + from_time + "\n" output += "To: " + to_time + "\n\n" output += "Executed checks:\n----------------\n" for check in sorted(together.keys()): failed_count = failed_types.get(check, 0) failed_percent = int(round((failed_count * 100.0) / together[check])) output += "%s: %d (%d %% failed)\n" % (check, together[check], failed_percent) output += "\nTotal: %d executed, %d failed\n\n" % (passed + failed, failed) output += "Links to failed checks:\n-----------------------\n" for failed_check in sorted(failed_types.keys()): limit = min(failed_types[failed_check], 1000) url = urljoin( frontend_url, "results?outcome=%s&since=%s,%s&testcase_name=%s&limit=%d" % (",".join(FAILISH), from_time, to_time, failed_check, limit)) output += "%s: %s\n" % (failed_check, url) return output
def __init__(self, config): self.rdbapi = None resultsdb_api_url = config.get('plugins.resultsdb.api_url') if resultsdb_api_url is not None: self.rdbapi = resultsdb_api.ResultsDBapi(resultsdb_api_url) self.rdblogs = config.get('plugins.resultsdb.logs_url') self.rdbnote_limit = config.get('plugins.resultsdb.note_size_limit') self.job_id = None self.job_logdir = None
def __init__(self, args): self.rdbapi = None if getattr(args, 'resultsdb_api', None) is not None: self.rdbapi = resultsdb_api.ResultsDBapi(args.resultsdb_api) self.rdblogs = None if getattr(args, 'resultsdb_logs', None) is not None: self.rdblogs = args.resultsdb_logs self.job_id = None self.job_logdir = None
def __init__(self, resultsdb=None): self.resultsdb = resultsdb conf = config.get_config() self.masterurl = conf.checkb_master self.task_stepname = conf.buildbot_task_step self.execdb_server = "%s/jobs" % conf.execdb_server self.artifacts_baseurl = conf.artifacts_baseurl if self.resultsdb is None: self.resultsdb = resultsdb_api.ResultsDBapi(conf.resultsdb_server) self._ensured_testcases = []
def __init__(self, config): self.rdbapi = None if config.get('resultsdb_api', None) is not None: self.rdbapi = resultsdb_api.ResultsDBapi( config.get('resultsdb_api')) self.rdblogs = None if config.get('resultsdb_logs', None) is not None: self.rdblogs = config.get('resultsdb_logs') self.rdbnote_limit = 0 if config.get('resultsdb_note_limit', None) is not None: self.rdbnote_limit = int(config.get('resultsdb_note_limit')) self.job_id = None self.job_logdir = None