diff --git a/hack/jenkins/test-flake-chart/flake_chart.js b/hack/jenkins/test-flake-chart/flake_chart.js index 736fc7cd7a..cf471d8a57 100644 --- a/hack/jenkins/test-flake-chart/flake_chart.js +++ b/hack/jenkins/test-flake-chart/flake_chart.js @@ -77,9 +77,13 @@ async function loadTestData() { return testData; } +Array.prototype.sum = function() { + return this.reduce((sum, value) => sum + value, 0); +}; + // Computes the average of an array of numbers. Array.prototype.average = function () { - return this.length === 0 ? 0 : this.reduce((sum, value) => sum + value, 0) / this.length; + return this.length === 0 ? 0 : (this.sum() / this.length); }; // Groups array elements by keys obtained through `keyGetter`. @@ -135,6 +139,8 @@ async function init() { // Filter to only contain unskipped runs of the requested test and requested environment. .filter(test => test.name === desiredTest && test.environment === desiredEnvironment && test.status !== testStatus.SKIPPED) .groupBy(test => test.date.getTime()); + + const hashToLink = (hash, environment) => `https://storage.googleapis.com/minikube-builds/logs/master/${hash.substring(0,7)}/${environment}.html`; data.addRows( groups @@ -149,23 +155,28 @@ async function init() { hash: test.commit, status: test.status, duration: test.duration + })).groupBy(run => run.hash).map(runsWithSameHash => ({ + hash: runsWithSameHash[0].hash, + failures: runsWithSameHash.map(run => run.status === testStatus.FAILED ? 1 : 0).sum(), + runs: runsWithSameHash.length, + duration: runsWithSameHash.map(run => run.duration).average(), })) })) .map(groupData => [ groupData.date, groupData.flakeRate, - `