in src/JobCorrelationHeatmap.js [20:69]
correlateJobs(all_jobs) {
let passes = ["success", "skipped", "pending", "queued"];
const seen_names = {};
const correlationMatrix = {};
const addFailure = (failure1, failure2) => {
seen_names[failure1] = true;
seen_names[failure2] = true;
if (!correlationMatrix[failure1]) {
correlationMatrix[failure1] = [];
}
if (!correlationMatrix[failure1][failure2]) {
correlationMatrix[failure1][failure2] = 0;
}
correlationMatrix[failure1][failure2] += 1;
};
for (const jobs of all_jobs) {
let failures = [];
for (const job_name in jobs.value) {
const job = jobs.value[job_name];
if (job.status && passes.indexOf(job.status) === -1) {
failures.push(job_name);
}
}
for (const failure1 of failures) {
for (const failure2 of failures) {
addFailure(failure1, failure2);
}
}
}
const job_names = Object.keys(seen_names).sort();
const fullMatrix = [];
for (const name1 of job_names) {
const row = [];
for (const name2 of job_names) {
if (correlationMatrix[name1] && correlationMatrix[name1][name2]) {
row.push(correlationMatrix[name1][name2]);
} else {
row.push(0);
}
}
fullMatrix.push(row);
}
return [job_names, fullMatrix];
}