Example #1
0
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
Example #2
0
    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
Example #3
0
    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
Example #4
0
    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 = []
Example #5
0
    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