def summarize_patch(codereview_hostname, issue, patch, now): attempts = [ summarize_attempt(raw_attempt, now) for raw_attempt in get_raw_attempts(codereview_hostname, issue, patch) ] attempts.reverse() return { 'success': any(attempt['success'] for attempt in attempts), 'begin': maybe_min(attempt['begin'] for attempt in attempts), 'end': maybe_max(attempt['end'] for attempt in attempts), 'durations': { field: sum(attempt['durations'][field] for attempt in attempts) for field in blank_durations_summary() }, 'job_counts': { state: sum(len(attempt['jobs'][state]) for attempt in attempts) for state in JOB_STATE.itervalues() }, 'flaky_jobs': get_flaky_jobs(attempts), 'attempt_count': len(attempts), 'attempt_fail_count': sum( 1 for attempt in attempts if attempt['success'] == False), 'attempts': attempts, }
def blank_attempt_summary(): return { 'success': None, 'fail_reason': None, 'begin': None, 'end': None, 'durations': blank_durations_summary(), 'jobs': {state: [] for state in JOB_STATE.itervalues()}, }
def blank_attempt_summary(): # pragma: no cover return { "success": None, "fail_reason": None, "begin": None, "end": None, "durations": blank_durations_summary(), "jobs": {state: [] for state in JOB_STATE.itervalues()}, }
def summarize_jobs(self, attempt_ended, last_timestamp): summaries = {state: [] for state in JOB_STATE.itervalues()} for builds in self.jobs.itervalues(): for jobs in builds.itervalues(): for job in jobs.itervalues(): if job['end'] == None: # pragma: no cover if attempt_ended: job['end'] = last_timestamp job['duration'] = last_timestamp - job['begin'] summaries[job['state']].append(job) for jobs in summaries.itervalues(): jobs.sort(key=lambda x: x['begin'], reverse=True) return summaries
def summarize_jobs(self, attempt_ended, last_timestamp): summaries = {state: [] for state in JOB_STATE.itervalues()} for builds in self.jobs.itervalues(): for jobs in builds.itervalues(): for job in jobs.itervalues(): if job["end"] == None: if attempt_ended: job["end"] = last_timestamp job["duration"] = last_timestamp - job["begin"] summaries[job["state"]].append(job) for jobs in summaries.itervalues(): jobs.sort(cmp=lambda x, y: cmp(y["begin"], x["begin"])) return summaries
def summarize_jobs(self, attempt_ended, last_timestamp): summaries = {state: [] for state in JOB_STATE.itervalues()} for builds in self.jobs.itervalues(): for jobs in builds.itervalues(): for job in jobs.itervalues(): if job['end'] == None: if attempt_ended: job['end'] = last_timestamp job['duration'] = last_timestamp - job['begin'] summaries[job['state']].append(job) for jobs in summaries.itervalues(): jobs.sort(cmp=lambda x, y: cmp(y['begin'], x['begin'])) return summaries
def summarize_patch(issue, patch, now): # pragma: no cover attempts = [summarize_attempt(raw_attempt, now) for raw_attempt in get_raw_attempts(issue, patch)][::-1] return { "success": any(attempt["success"] for attempt in attempts), "begin": maybe_min(attempt["begin"] for attempt in attempts), "end": maybe_max(attempt["end"] for attempt in attempts), "durations": { field: sum(attempt["durations"][field] for attempt in attempts) for field in blank_durations_summary() }, "job_counts": { state: sum(len(attempt["jobs"][state]) for attempt in attempts) for state in JOB_STATE.itervalues() }, "flaky_jobs": get_flaky_jobs(attempts), "attempt_count": len(attempts), "attempt_fail_count": sum(1 for attempt in attempts if attempt["success"] == False), "attempts": attempts, }