in src/GitHubStatusDisplay.js [50:87]
function computeConsecutiveFailureCount(data, failure_window = 10) {
const still_unknown_set = new Set();
const consecutive_failure_count = new Map();
data.known_jobs.forEach((job) => {
if (job === "pytorch_doc_push") return;
if (job === "__dr.ci") return;
if (job.includes("nightlies")) return;
still_unknown_set.add(job);
});
for (let i = 0; i < data.builds.length; i++) {
// After some window, don't look anymore; the job may have been
// removed
if (i > failure_window) break;
if (!still_unknown_set.size) break;
const build = data.builds[i];
const sb_map = build.sb_map;
sb_map.forEach((sb, jobName) => {
if (!still_unknown_set.has(jobName)) {
// do nothing
} else if (is_failure(sb.status)) {
let count = consecutive_failure_count.get(jobName) || 0;
count++;
consecutive_failure_count.set(jobName, count);
} else if (is_success(sb.status)) {
still_unknown_set.delete(jobName);
}
});
}
// Prune uninteresting alarms
consecutive_failure_count.forEach((v, k) => {
// Require two consecutive failure to alert
if (v <= 1) {
consecutive_failure_count.delete(k);
}
});
return consecutive_failure_count;
}