in resources/perf.webkit.org/public/v3/models/test-group.js [381:408]
async _createSequentialRetriesForTestGroup(repetitionLimit)
{
const lastItem = (array) => array[array.length - 1];
const commitSets = this.requestedCommitSets();
console.assert(commitSets.every((currentSet, index) =>
!index || lastItem(this.requestsForCommitSet(commitSets[index - 1])).order() < this.requestsForCommitSet(currentSet)[0].order()));
const allTestRequestsHaveFailedForSomeCommitSet = commitSets.some(commitSet =>
this.requestsForCommitSet(commitSet).every(request => !request.isTest() || request.hasFailed()));
if (allTestRequestsHaveFailedForSomeCommitSet)
return {retryCount: 0, stopFutureRetries: true};
for (const commitSet of commitSets) {
if (this.successfulTestCount(commitSet) >= this.initialRepetitionCount())
continue;
const additionalRepetition = this.additionalRepetitionNeededToReachInitialRepetitionCount(commitSet);
const retryCount = Math.min(Math.floor(repetitionLimit - this.repetitionCountForCommitSet(commitSet)), additionalRepetition);
if (retryCount <= 0)
continue;
await this.addMoreBuildRequests(retryCount, commitSet);
return {retryCount, stopFutureRetries: false};
}
return {retryCount: 0, stopFutureRetries: true};
}