in resources/perf.webkit.org/public/v3/models/build-request.js [91:130]
async findBuildRequestWithSameRoots()
{
if (!this.isBuild())
return null;
let scheduledBuildRequest = null;
let runningBuildRequest = null;
// Set ignoreCache = true as latest status of test groups is expected.
const allTestGroupsInTask = await TestGroup.fetchForTask(this.analysisTaskId(), true);
const rawManifest = await Manifest.fetchRawResponse();
const earliestRootCreatingTimeForReuse = rawManifest.maxRootReuseAgeInDays ?
Date.now() - rawManifest.maxRootReuseAgeInDays * 24 * 3600 * 1000 : 0;
for (const group of allTestGroupsInTask) {
if (group.id() == this.testGroupId())
continue;
if (group.isHidden())
continue;
for (const buildRequest of group.buildRequests()) {
if (!buildRequest.isBuild())
continue;
if (!this.platform().isInSameGroupAs(buildRequest.platform()))
continue;
if (!buildRequest.commitSet().equalsIgnoringRoot(this.commitSet()))
continue;
if (!buildRequest.commitSet().areAllRootsAvailable(earliestRootCreatingTimeForReuse))
continue;
if (buildRequest.hasCompleted())
return buildRequest;
if (buildRequest.isScheduled()
&& (!scheduledBuildRequest || buildRequest.createdAt() < scheduledBuildRequest.createdAt())) {
scheduledBuildRequest = buildRequest;
}
if (buildRequest.status() == 'running'
&& (!runningBuildRequest || buildRequest.createdAt() < runningBuildRequest.createdAt())) {
runningBuildRequest = buildRequest;
}
}
}
return runningBuildRequest || scheduledBuildRequest;
}