<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[213952] trunk/Websites/perf.webkit.org</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/213952">213952</a></dd>
<dt>Author</dt> <dd>rniwa@webkit.org</dd>
<dt>Date</dt> <dd>2017-03-14 16:06:40 -0700 (Tue, 14 Mar 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>Rename RootSet to CommitSet
https://bugs.webkit.org/show_bug.cgi?id=169580
Rubber-stamped by Chris Dumez.
Renamed root_sets to commit_sets and roots to commit_set_relationships in the database schema, and renamed
related classes in public/v3/ and tools accordingly.
RootSet, MeasurementRootSet, and CustomRootSet are respectively renamed to CommitSet, MeasurementCommitSet,
and CustomCommitSet.
In order to migrate the database, run:
```
BEGIN;
ALTER TABLE root_sets RENAME TO commit_sets;
ALTER TABLE commit_sets RENAME COLUMN rootset_id TO commitset_id;
ALTER TABLE roots RENAME TO commit_set_relationships;
ALTER TABLE commit_set_relationships RENAME COLUMN root_set TO commitset_set;
ALTER TABLE commit_set_relationships RENAME COLUMN root_commit TO commitset_commit;
ALTER TABLE build_requests RENAME COLUMN request_root_set TO request_commit_set;
END;
```
* browser-tests/index.html:
* init-database.sql:
* public/api/build-requests.php:
(main):
* public/api/test-groups.php:
(main):
(format_test_group):
* public/include/build-requests-fetcher.php:
(BuildRequestsFetcher::__construct):
(BuildRequestsFetcher::results_internal):
(BuildRequestsFetcher::commit_sets): Renamed from root_sets.
(BuildRequestsFetcher::commits): Renamed from roots.
(BuildRequestsFetcher::fetch_commits_for_set_if_needed): Renamed from fetch_roots_for_set_if_needed.
* public/privileged-api/create-test-group.php:
(main):
(ensure_commit_sets): Renamed from commit_sets_from_root_sets.
* public/v3/components/analysis-results-viewer.js:
(AnalysisResultsViewer.prototype.buildRowGroups):
(AnalysisResultsViewer.prototype._collectCommitSetsInTestGroups): Renamed from _collectRootSetsInTestGroups.
(AnalysisResultsViewer.prototype._buildRowsForPointsAndTestGroups):
(AnalysisResultsViewer.prototype._buildRowsForPointsAndTestGroups):
(AnalysisResultsViewer.CommitSetInTestGroup): Renamed from RootSetInTestGroup.
(AnalysisResultsViewer.CommitSetInTestGroup.prototype.constructor):
(AnalysisResultsViewer.CommitSetInTestGroup.prototype.commitSet): Renamed from rootSet.
(AnalysisResultsViewer.CommitSetInTestGroup.prototype.succeedingCommitSet): Renamed from succeedingRootSet.
(AnalysisResultsViewer.TestGroupStackingBlock.prototype.constructor):
(AnalysisResultsViewer.TestGroupStackingBlock.prototype.addRowIndex):
(AnalysisResultsViewer.TestGroupStackingBlock.prototype.isComplete):
(AnalysisResultsViewer.TestGroupStackingBlock.prototype.startRowIndex):
(AnalysisResultsViewer.TestGroupStackingBlock.prototype.endRowIndex):
(AnalysisResultsViewer.TestGroupStackingBlock.prototype._computeTestGroupStatus):
* public/v3/components/chart-revision-range.js:
(ChartRevisionRange.prototype._revisionForPoint):
(ChartRevisionRange.prototype._computeRevisionList):
* public/v3/components/customizable-test-group-form.js:
(CustomizableTestGroupForm.prototype.constructor):
(CustomizableTestGroupForm.prototype.setCommitSetMap): Renamed from setRootSetMap.
(CustomizableTestGroupForm.prototype._submitted):
(CustomizableTestGroupForm.prototype._computeCommitSetMap): Renamed from _computeRootSetMap.
(CustomizableTestGroupForm.prototype.render): Renamed from render.
(CustomizableTestGroupForm.prototype._constructRevisionRadioButtons):
* public/v3/components/results-table.js:
(ResultsTable.prototype.render):
(ResultsTable.prototype._createRevisionListCells):
(ResultsTable.prototype._computeRepositoryList):
(ResultsTableRow.prototype.constructor):
(ResultsTableRow.prototype.commitSet): Renamed from rootSet.
* public/v3/components/test-group-results-table.js:
(TestGroupResultsTable.prototype.buildRowGroups):
* public/v3/index.html:
* public/v3/models/build-request.js:
(BuildRequest.prototype.constructor):
(BuildRequest.prototype.updateSingleton):
(BuildRequest.prototype.commitSet): Renamed from rootSet.
(BuildRequest.constructBuildRequestsFromData):
* public/v3/models/commit-set.js: Renamed from public/v3/models/root-set.js.
(CommitSet): Renamed from RootSet.
(CommitSet.containsMultipleCommitsForRepository):
(MeasurementCommitSet): Renamed from MeasurementRootSet.
(MeasurementCommitSet.prototype.namedStaticMap):
(MeasurementCommitSet.prototype.ensureNamedStaticMap):
(MeasurementCommitSet.namedStaticMap):
(MeasurementCommitSet.ensureNamedStaticMap):
(MeasurementCommitSet.ensureSingleton):
(CustomCommitSet): Renamed from CustomRootSet.
* public/v3/models/measurement-adaptor.js:
(MeasurementAdaptor.prototype.applyTo):
* public/v3/models/test-group.js:
(TestGroup.prototype.constructor):
(TestGroup.prototype.addBuildRequest):
(TestGroup.prototype.repetitionCount):
(TestGroup.prototype.requestedCommitSets): Renamed from requestedRootSets.
(TestGroup.prototype.requestsForCommitSet): Renamed from requestsForRootSet.
(TestGroup.prototype.labelForCommitSet): Renamed from labelForRootSet.
(TestGroup.prototype.didSetResult):
(TestGroup.prototype.compareTestResults):
(TestGroup.prototype._valuesForCommitSet): Renamed from _valuesForRootSet.
(TestGroup.prototype.createAndRefetchTestGroups):
* public/v3/pages/analysis-task-page.js:
(AnalysisTaskPage.prototype.render):
(AnalysisTaskPage.prototype._retryCurrentTestGroup):
(AnalysisTaskPage.prototype._createNewTestGroupFromChart):
(AnalysisTaskPage.prototype._createNewTestGroupFromViewer):
(AnalysisTaskPage.prototype._createTestGroupAfterVerifyingCommitSetList):
* server-tests/api-build-requests-tests.js:
* server-tests/resources/mock-data.js:
(MockData.resetV3Models):
(MockData.addMockData):
(MockData.addAnotherMockTestGroup):
* tools/detect-changes.js:
(createAnalysisTaskAndNotify):
* tools/js/buildbot-syncer.js:
(BuildbotSyncer.prototype._propertiesForBuildRequest):
(BuildbotSyncer.prototype._revisionSetFromCommitSetWithExclusionList):
* tools/js/database.js:
(tableToPrefixMap):
* tools/js/v3-models.js:
* tools/sync-buildbot.js:
(syncLoop):
* tools/sync-with-buildbot.py: Deleted. No longer used.
* unit-tests/analysis-task-tests.js:
* unit-tests/build-request-tests.js:
(sampleBuildRequestData):
* unit-tests/buildbot-syncer-tests.js:
(sampleCommitSetData):
* unit-tests/measurement-adaptor-tests.js:
* unit-tests/measurement-set-tests.js:
* unit-tests/resources/mock-v3-models.js:
(MockModels.inject):
* unit-tests/test-groups-tests.js:
(sampleTestGroup):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkWebsitesperfwebkitorgChangeLog">trunk/Websites/perf.webkit.org/ChangeLog</a></li>
<li><a href="#trunkWebsitesperfwebkitorgbrowsertestsindexhtml">trunk/Websites/perf.webkit.org/browser-tests/index.html</a></li>
<li><a href="#trunkWebsitesperfwebkitorginitdatabasesql">trunk/Websites/perf.webkit.org/init-database.sql</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicapibuildrequestsphp">trunk/Websites/perf.webkit.org/public/api/build-requests.php</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicapitestgroupsphp">trunk/Websites/perf.webkit.org/public/api/test-groups.php</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicincludebuildrequestsfetcherphp">trunk/Websites/perf.webkit.org/public/include/build-requests-fetcher.php</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicprivilegedapicreatetestgroupphp">trunk/Websites/perf.webkit.org/public/privileged-api/create-test-group.php</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3componentsanalysisresultsviewerjs">trunk/Websites/perf.webkit.org/public/v3/components/analysis-results-viewer.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3componentschartrevisionrangejs">trunk/Websites/perf.webkit.org/public/v3/components/chart-revision-range.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3componentscustomizabletestgroupformjs">trunk/Websites/perf.webkit.org/public/v3/components/customizable-test-group-form.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3componentsresultstablejs">trunk/Websites/perf.webkit.org/public/v3/components/results-table.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3componentstestgroupresultstablejs">trunk/Websites/perf.webkit.org/public/v3/components/test-group-results-table.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3indexhtml">trunk/Websites/perf.webkit.org/public/v3/index.html</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3modelsbuildrequestjs">trunk/Websites/perf.webkit.org/public/v3/models/build-request.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3modelsmeasurementadaptorjs">trunk/Websites/perf.webkit.org/public/v3/models/measurement-adaptor.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3modelstestgroupjs">trunk/Websites/perf.webkit.org/public/v3/models/test-group.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3pagesanalysistaskpagejs">trunk/Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgservertestsapibuildrequeststestsjs">trunk/Websites/perf.webkit.org/server-tests/api-build-requests-tests.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgservertestsresourcesmockdatajs">trunk/Websites/perf.webkit.org/server-tests/resources/mock-data.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgtoolsdetectchangesjs">trunk/Websites/perf.webkit.org/tools/detect-changes.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgtoolsjsbuildbotsyncerjs">trunk/Websites/perf.webkit.org/tools/js/buildbot-syncer.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgtoolsjsdatabasejs">trunk/Websites/perf.webkit.org/tools/js/database.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgtoolsjsv3modelsjs">trunk/Websites/perf.webkit.org/tools/js/v3-models.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgtoolssyncbuildbotjs">trunk/Websites/perf.webkit.org/tools/sync-buildbot.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgunittestsanalysistasktestsjs">trunk/Websites/perf.webkit.org/unit-tests/analysis-task-tests.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgunittestsbuildrequesttestsjs">trunk/Websites/perf.webkit.org/unit-tests/build-request-tests.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgunittestsbuildbotsyncertestsjs">trunk/Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgunittestsmeasurementadaptortestsjs">trunk/Websites/perf.webkit.org/unit-tests/measurement-adaptor-tests.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgunittestsmeasurementsettestsjs">trunk/Websites/perf.webkit.org/unit-tests/measurement-set-tests.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgunittestsresourcesmockv3modelsjs">trunk/Websites/perf.webkit.org/unit-tests/resources/mock-v3-models.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgunitteststestgroupstestsjs">trunk/Websites/perf.webkit.org/unit-tests/test-groups-tests.js</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3modelscommitsetjs">trunk/Websites/perf.webkit.org/public/v3/models/commit-set.js</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3modelsrootsetjs">trunk/Websites/perf.webkit.org/public/v3/models/root-set.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgtoolssyncwithbuildbotpy">trunk/Websites/perf.webkit.org/tools/sync-with-buildbot.py</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkWebsitesperfwebkitorgChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/ChangeLog (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/ChangeLog        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/ChangeLog        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -1,3 +1,140 @@
</span><ins>+2017-03-12 Ryosuke Niwa <rniwa@webkit.org>
+
+ Rename RootSet to CommitSet
+ https://bugs.webkit.org/show_bug.cgi?id=169580
+
+ Rubber-stamped by Chris Dumez.
+
+ Renamed root_sets to commit_sets and roots to commit_set_relationships in the database schema, and renamed
+ related classes in public/v3/ and tools accordingly.
+
+ RootSet, MeasurementRootSet, and CustomRootSet are respectively renamed to CommitSet, MeasurementCommitSet,
+ and CustomCommitSet.
+
+ In order to migrate the database, run:
+ ```
+ BEGIN;
+ ALTER TABLE root_sets RENAME TO commit_sets;
+ ALTER TABLE commit_sets RENAME COLUMN rootset_id TO commitset_id;
+ ALTER TABLE roots RENAME TO commit_set_relationships;
+ ALTER TABLE commit_set_relationships RENAME COLUMN root_set TO commitset_set;
+ ALTER TABLE commit_set_relationships RENAME COLUMN root_commit TO commitset_commit;
+ ALTER TABLE build_requests RENAME COLUMN request_root_set TO request_commit_set;
+ END;
+ ```
+
+ * browser-tests/index.html:
+ * init-database.sql:
+ * public/api/build-requests.php:
+ (main):
+ * public/api/test-groups.php:
+ (main):
+ (format_test_group):
+ * public/include/build-requests-fetcher.php:
+ (BuildRequestsFetcher::__construct):
+ (BuildRequestsFetcher::results_internal):
+ (BuildRequestsFetcher::commit_sets): Renamed from root_sets.
+ (BuildRequestsFetcher::commits): Renamed from roots.
+ (BuildRequestsFetcher::fetch_commits_for_set_if_needed): Renamed from fetch_roots_for_set_if_needed.
+ * public/privileged-api/create-test-group.php:
+ (main):
+ (ensure_commit_sets): Renamed from commit_sets_from_root_sets.
+ * public/v3/components/analysis-results-viewer.js:
+ (AnalysisResultsViewer.prototype.buildRowGroups):
+ (AnalysisResultsViewer.prototype._collectCommitSetsInTestGroups): Renamed from _collectRootSetsInTestGroups.
+ (AnalysisResultsViewer.prototype._buildRowsForPointsAndTestGroups):
+ (AnalysisResultsViewer.prototype._buildRowsForPointsAndTestGroups):
+ (AnalysisResultsViewer.CommitSetInTestGroup): Renamed from RootSetInTestGroup.
+ (AnalysisResultsViewer.CommitSetInTestGroup.prototype.constructor):
+ (AnalysisResultsViewer.CommitSetInTestGroup.prototype.commitSet): Renamed from rootSet.
+ (AnalysisResultsViewer.CommitSetInTestGroup.prototype.succeedingCommitSet): Renamed from succeedingRootSet.
+ (AnalysisResultsViewer.TestGroupStackingBlock.prototype.constructor):
+ (AnalysisResultsViewer.TestGroupStackingBlock.prototype.addRowIndex):
+ (AnalysisResultsViewer.TestGroupStackingBlock.prototype.isComplete):
+ (AnalysisResultsViewer.TestGroupStackingBlock.prototype.startRowIndex):
+ (AnalysisResultsViewer.TestGroupStackingBlock.prototype.endRowIndex):
+ (AnalysisResultsViewer.TestGroupStackingBlock.prototype._computeTestGroupStatus):
+ * public/v3/components/chart-revision-range.js:
+ (ChartRevisionRange.prototype._revisionForPoint):
+ (ChartRevisionRange.prototype._computeRevisionList):
+ * public/v3/components/customizable-test-group-form.js:
+ (CustomizableTestGroupForm.prototype.constructor):
+ (CustomizableTestGroupForm.prototype.setCommitSetMap): Renamed from setRootSetMap.
+ (CustomizableTestGroupForm.prototype._submitted):
+ (CustomizableTestGroupForm.prototype._computeCommitSetMap): Renamed from _computeRootSetMap.
+ (CustomizableTestGroupForm.prototype.render): Renamed from render.
+ (CustomizableTestGroupForm.prototype._constructRevisionRadioButtons):
+ * public/v3/components/results-table.js:
+ (ResultsTable.prototype.render):
+ (ResultsTable.prototype._createRevisionListCells):
+ (ResultsTable.prototype._computeRepositoryList):
+ (ResultsTableRow.prototype.constructor):
+ (ResultsTableRow.prototype.commitSet): Renamed from rootSet.
+ * public/v3/components/test-group-results-table.js:
+ (TestGroupResultsTable.prototype.buildRowGroups):
+ * public/v3/index.html:
+ * public/v3/models/build-request.js:
+ (BuildRequest.prototype.constructor):
+ (BuildRequest.prototype.updateSingleton):
+ (BuildRequest.prototype.commitSet): Renamed from rootSet.
+ (BuildRequest.constructBuildRequestsFromData):
+ * public/v3/models/commit-set.js: Renamed from public/v3/models/root-set.js.
+ (CommitSet): Renamed from RootSet.
+ (CommitSet.containsMultipleCommitsForRepository):
+ (MeasurementCommitSet): Renamed from MeasurementRootSet.
+ (MeasurementCommitSet.prototype.namedStaticMap):
+ (MeasurementCommitSet.prototype.ensureNamedStaticMap):
+ (MeasurementCommitSet.namedStaticMap):
+ (MeasurementCommitSet.ensureNamedStaticMap):
+ (MeasurementCommitSet.ensureSingleton):
+ (CustomCommitSet): Renamed from CustomRootSet.
+ * public/v3/models/measurement-adaptor.js:
+ (MeasurementAdaptor.prototype.applyTo):
+ * public/v3/models/test-group.js:
+ (TestGroup.prototype.constructor):
+ (TestGroup.prototype.addBuildRequest):
+ (TestGroup.prototype.repetitionCount):
+ (TestGroup.prototype.requestedCommitSets): Renamed from requestedRootSets.
+ (TestGroup.prototype.requestsForCommitSet): Renamed from requestsForRootSet.
+ (TestGroup.prototype.labelForCommitSet): Renamed from labelForRootSet.
+ (TestGroup.prototype.didSetResult):
+ (TestGroup.prototype.compareTestResults):
+ (TestGroup.prototype._valuesForCommitSet): Renamed from _valuesForRootSet.
+ (TestGroup.prototype.createAndRefetchTestGroups):
+ * public/v3/pages/analysis-task-page.js:
+ (AnalysisTaskPage.prototype.render):
+ (AnalysisTaskPage.prototype._retryCurrentTestGroup):
+ (AnalysisTaskPage.prototype._createNewTestGroupFromChart):
+ (AnalysisTaskPage.prototype._createNewTestGroupFromViewer):
+ (AnalysisTaskPage.prototype._createTestGroupAfterVerifyingCommitSetList):
+ * server-tests/api-build-requests-tests.js:
+ * server-tests/resources/mock-data.js:
+ (MockData.resetV3Models):
+ (MockData.addMockData):
+ (MockData.addAnotherMockTestGroup):
+ * tools/detect-changes.js:
+ (createAnalysisTaskAndNotify):
+ * tools/js/buildbot-syncer.js:
+ (BuildbotSyncer.prototype._propertiesForBuildRequest):
+ (BuildbotSyncer.prototype._revisionSetFromCommitSetWithExclusionList):
+ * tools/js/database.js:
+ (tableToPrefixMap):
+ * tools/js/v3-models.js:
+ * tools/sync-buildbot.js:
+ (syncLoop):
+ * tools/sync-with-buildbot.py: Deleted. No longer used.
+ * unit-tests/analysis-task-tests.js:
+ * unit-tests/build-request-tests.js:
+ (sampleBuildRequestData):
+ * unit-tests/buildbot-syncer-tests.js:
+ (sampleCommitSetData):
+ * unit-tests/measurement-adaptor-tests.js:
+ * unit-tests/measurement-set-tests.js:
+ * unit-tests/resources/mock-v3-models.js:
+ (MockModels.inject):
+ * unit-tests/test-groups-tests.js:
+ (sampleTestGroup):
+
</ins><span class="cx"> 2017-03-13 Ryosuke Niwa <rniwa@webkit.org>
</span><span class="cx">
</span><span class="cx"> Database's query functions should support querying for a row with NULL value
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgbrowsertestsindexhtml"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/browser-tests/index.html (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/browser-tests/index.html        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/browser-tests/index.html        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -211,7 +211,7 @@
</span><span class="cx"> 'models/platform.js',
</span><span class="cx"> 'models/test.js',
</span><span class="cx"> 'models/metric.js',
</span><del>- 'models/root-set.js',
</del><ins>+ 'models/commit-set.js',
</ins><span class="cx"> 'models/commit-log.js',
</span><span class="cx"> 'components/base.js',
</span><span class="cx"> 'components/time-series-chart.js',
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorginitdatabasesql"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/init-database.sql (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/init-database.sql        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/init-database.sql        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -26,8 +26,8 @@
</span><span class="cx"> DROP TABLE IF EXISTS triggerable_repositories CASCADE;
</span><span class="cx"> DROP TABLE IF EXISTS bugs CASCADE;
</span><span class="cx"> DROP TABLE IF EXISTS analysis_test_groups CASCADE;
</span><del>-DROP TABLE IF EXISTS root_sets CASCADE;
-DROP TABLE IF EXISTS roots CASCADE;
</del><ins>+DROP TABLE IF EXISTS commit_sets CASCADE;
+DROP TABLE IF EXISTS commit_set_relationships CASCADE;
</ins><span class="cx"> DROP TABLE IF EXISTS build_requests CASCADE;
</span><span class="cx"> DROP TYPE IF EXISTS build_request_status_type CASCADE;
</span><span class="cx">
</span><span class="lines">@@ -251,12 +251,12 @@
</span><span class="cx"> CONSTRAINT testgroup_name_must_be_unique_for_each_task UNIQUE(testgroup_task, testgroup_name));
</span><span class="cx"> CREATE INDEX testgroup_task_index ON analysis_test_groups(testgroup_task);
</span><span class="cx">
</span><del>-CREATE TABLE root_sets (
- rootset_id serial PRIMARY KEY);
</del><ins>+CREATE TABLE commit_sets (
+ commitset_id serial PRIMARY KEY);
</ins><span class="cx">
</span><del>-CREATE TABLE roots (
- root_set integer REFERENCES root_sets NOT NULL,
- root_commit integer REFERENCES commits NOT NULL);
</del><ins>+CREATE TABLE commit_set_relationships (
+ commitset_set integer REFERENCES commit_sets NOT NULL,
+ commitset_commit integer REFERENCES commits NOT NULL);
</ins><span class="cx">
</span><span class="cx"> CREATE TYPE build_request_status_type as ENUM ('pending', 'scheduled', 'running', 'failed', 'completed', 'canceled');
</span><span class="cx"> CREATE TABLE build_requests (
</span><span class="lines">@@ -266,7 +266,7 @@
</span><span class="cx"> request_test integer REFERENCES tests NOT NULL,
</span><span class="cx"> request_group integer REFERENCES analysis_test_groups NOT NULL,
</span><span class="cx"> request_order integer NOT NULL,
</span><del>- request_root_set integer REFERENCES root_sets NOT NULL,
</del><ins>+ request_commit_set integer REFERENCES commit_sets NOT NULL,
</ins><span class="cx"> request_status build_request_status_type NOT NULL DEFAULT 'pending',
</span><span class="cx"> request_url varchar(1024),
</span><span class="cx"> request_build integer REFERENCES builds,
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicapibuildrequestsphp"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/api/build-requests.php (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/api/build-requests.php        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/api/build-requests.php        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -33,8 +33,8 @@
</span><span class="cx"> $resolve_id = array_get($_GET, 'useLegacyIdResolution');
</span><span class="cx"> exit_with_success(array(
</span><span class="cx"> 'buildRequests' => $resolve_id ? $requests_fetcher->results_with_resolved_ids() : $requests_fetcher->results(),
</span><del>- 'rootSets' => $requests_fetcher->root_sets(),
- 'roots' => $requests_fetcher->roots(),
</del><ins>+ 'commitSets' => $requests_fetcher->commit_sets(),
+ 'commits' => $requests_fetcher->commits(),
</ins><span class="cx"> ));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicapitestgroupsphp"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/api/test-groups.php (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/api/test-groups.php        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/api/test-groups.php        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -49,13 +49,13 @@
</span><span class="cx"> foreach ($build_requests as $request) {
</span><span class="cx"> $request_group = &$group_by_id[$request['testGroup']];
</span><span class="cx"> array_push($request_group['buildRequests'], $request['id']);
</span><del>- array_push($request_group['rootSets'], $request['rootSet']);
</del><ins>+ array_push($request_group['commitSets'], $request['commitSet']);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> exit_with_success(array('testGroups' => $test_groups,
</span><span class="cx"> 'buildRequests' => $build_requests,
</span><del>- 'rootSets' => $build_requests_fetcher->root_sets(),
- 'roots' => $build_requests_fetcher->roots()));
</del><ins>+ 'commitSets' => $build_requests_fetcher->commit_sets(),
+ 'commits' => $build_requests_fetcher->commits()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function format_test_group($group_row) {
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx"> 'createdAt' => strtotime($group_row['testgroup_created_at']) * 1000,
</span><span class="cx"> 'hidden' => Database::is_true($group_row['testgroup_hidden']),
</span><span class="cx"> 'buildRequests' => array(),
</span><del>- 'rootSets' => array(),
</del><ins>+ 'commitSets' => array(),
</ins><span class="cx"> );
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicincludebuildrequestsfetcherphp"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/include/build-requests-fetcher.php (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/include/build-requests-fetcher.php        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/include/build-requests-fetcher.php        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -6,10 +6,10 @@
</span><span class="cx"> function __construct($db) {
</span><span class="cx"> $this->db = $db;
</span><span class="cx"> $this->rows = null;
</span><del>- $this->root_sets = array();
- $this->roots_by_id = array();
- $this->roots = array();
- $this->root_sets_by_id = array();
</del><ins>+ $this->commit_sets = array();
+ $this->commits_by_id = array();
+ $this->commits = array();
+ $this->commit_sets_by_id = array();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> function fetch_for_task($task_id) {
</span><span class="lines">@@ -60,9 +60,9 @@
</span><span class="cx"> foreach ($this->rows as $row) {
</span><span class="cx"> $test_id = $row['request_test'];
</span><span class="cx"> $platform_id = $row['request_platform'];
</span><del>- $root_set_id = $row['request_root_set'];
</del><ins>+ $commit_set_id = $row['request_commit_set'];
</ins><span class="cx">
</span><del>- $this->fetch_roots_for_set_if_needed($root_set_id, $resolve_ids);
</del><ins>+ $this->fetch_commits_for_set_if_needed($commit_set_id, $resolve_ids);
</ins><span class="cx">
</span><span class="cx"> array_push($requests, array(
</span><span class="cx"> 'id' => $row['request_id'],
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx"> 'platform' => $resolve_ids ? $id_to_platform_name[$platform_id] : $platform_id,
</span><span class="cx"> 'testGroup' => $row['request_group'],
</span><span class="cx"> 'order' => $row['request_order'],
</span><del>- 'rootSet' => $root_set_id,
</del><ins>+ 'commitSet' => $commit_set_id,
</ins><span class="cx"> 'status' => $row['request_status'],
</span><span class="cx"> 'url' => $row['request_url'],
</span><span class="cx"> 'build' => $row['request_build'],
</span><span class="lines">@@ -82,45 +82,45 @@
</span><span class="cx"> return $requests;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- function root_sets() {
- return $this->root_sets;
</del><ins>+ function commit_sets() {
+ return $this->commit_sets;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- function roots() {
- return $this->roots;
</del><ins>+ function commits() {
+ return $this->commits;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- private function fetch_roots_for_set_if_needed($root_set_id, $resolve_ids) {
- if (array_key_exists($root_set_id, $this->root_sets_by_id))
</del><ins>+ private function fetch_commits_for_set_if_needed($commit_set_id, $resolve_ids) {
+ if (array_key_exists($commit_set_id, $this->commit_sets_by_id))
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- $root_rows = $this->db->query_and_fetch_all('SELECT *
- FROM roots, commits LEFT OUTER JOIN repositories ON commit_repository = repository_id
- WHERE root_commit = commit_id AND root_set = $1', array($root_set_id));
</del><ins>+ $commit_rows = $this->db->query_and_fetch_all('SELECT *
+ FROM commit_set_relationships, commits LEFT OUTER JOIN repositories ON commit_repository = repository_id
+ WHERE commitset_commit = commit_id AND commitset_set = $1', array($commit_set_id));
</ins><span class="cx">
</span><del>- $root_ids = array();
- foreach ($root_rows as $row) {
</del><ins>+ $commit_ids = array();
+ foreach ($commit_rows as $row) {
</ins><span class="cx"> $repository_id = $resolve_ids ? $row['repository_name'] : $row['repository_id'];
</span><span class="cx"> $revision = $row['commit_revision'];
</span><span class="cx"> $commit_time = $row['commit_time'];
</span><del>- array_push($root_ids, $row['commit_id']);
</del><ins>+ array_push($commit_ids, $row['commit_id']);
</ins><span class="cx">
</span><del>- $root_id = $row['commit_id'];
- if (array_key_exists($root_id, $this->roots_by_id))
</del><ins>+ $commit_id = $row['commit_id'];
+ if (array_key_exists($commit_id, $this->commits_by_id))
</ins><span class="cx"> continue;
</span><span class="cx">
</span><del>- array_push($this->roots, array(
- 'id' => $root_id,
</del><ins>+ array_push($this->commits, array(
+ 'id' => $commit_id,
</ins><span class="cx"> 'repository' => $repository_id,
</span><span class="cx"> 'revision' => $revision,
</span><span class="cx"> 'time' => Database::to_js_time($commit_time)));
</span><span class="cx">
</span><del>- $this->roots_by_id[$root_id] = TRUE;
</del><ins>+ $this->commits_by_id[$commit_id] = TRUE;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- $this->root_sets_by_id[$root_set_id] = TRUE;
</del><ins>+ $this->commit_sets_by_id[$commit_set_id] = TRUE;
</ins><span class="cx">
</span><del>- array_push($this->root_sets, array('id' => $root_set_id, 'roots' => $root_ids));
</del><ins>+ array_push($this->commit_sets, array('id' => $commit_set_id, 'commits' => $commit_ids));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicprivilegedapicreatetestgroupphp"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/privileged-api/create-test-group.php (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/privileged-api/create-test-group.php        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/privileged-api/create-test-group.php        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -9,13 +9,13 @@
</span><span class="cx">
</span><span class="cx"> $task_id = array_get($data, 'task');
</span><span class="cx"> $name = array_get($data, 'name');
</span><del>- $root_sets = array_get($data, 'rootSets');
</del><ins>+ $commit_sets_info = array_get($data, 'commitSets');
</ins><span class="cx"> $repetition_count = intval(array_get($data, 'repetitionCount', 1));
</span><span class="cx">
</span><span class="cx"> if (!$name)
</span><span class="cx"> exit_with_error('MissingName');
</span><del>- if (!$root_sets)
- exit_with_error('MissingRootSets');
</del><ins>+ if (!$commit_sets_info)
+ exit_with_error('MissingCommitSets');
</ins><span class="cx"> if ($repetition_count < 1)
</span><span class="cx"> exit_with_error('InvalidRepetitionCount', array('repetitionCount' => $repetition_count));
</span><span class="cx">
</span><span class="lines">@@ -26,16 +26,16 @@
</span><span class="cx"> if (!$triggerable)
</span><span class="cx"> exit_with_error('TriggerableNotFoundForTask', array('task' => $task_id));
</span><span class="cx">
</span><del>- $commit_sets = commit_sets_from_root_sets($db, $root_sets);
</del><ins>+ $commit_sets = ensure_commit_sets($db, $commit_sets_info);
</ins><span class="cx">
</span><span class="cx"> $db->begin_transaction();
</span><span class="cx">
</span><del>- $root_set_id_list = array();
</del><ins>+ $commit_set_id_list = array();
</ins><span class="cx"> foreach ($commit_sets as $commit_list) {
</span><del>- $root_set_id = $db->insert_row('root_sets', 'rootset', array());
</del><ins>+ $commit_set_id = $db->insert_row('commit_sets', 'commitset', array());
</ins><span class="cx"> foreach ($commit_list as $commit)
</span><del>- $db->insert_row('roots', 'root', array('set' => $root_set_id, 'commit' => $commit), 'commit');
- array_push($root_set_id_list, $root_set_id);
</del><ins>+ $db->insert_row('commit_set_relationships', 'commitset', array('set' => $commit_set_id, 'commit' => $commit), 'commit');
+ array_push($commit_set_id_list, $commit_set_id);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> $group_id = $db->insert_row('analysis_test_groups', 'testgroup',
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx">
</span><span class="cx"> $order = 0;
</span><span class="cx"> for ($i = 0; $i < $repetition_count; $i++) {
</span><del>- foreach ($root_set_id_list as $root_set_id) {
</del><ins>+ foreach ($commit_set_id_list as $commit_set_id) {
</ins><span class="cx"> $db->insert_row('build_requests', 'request', array(
</span><span class="cx"> 'triggerable' => $triggerable['id'],
</span><span class="cx"> 'platform' => $triggerable['platform'],
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> 'test' => $triggerable['test'],
</span><span class="cx"> 'group' => $group_id,
</span><span class="cx"> 'order' => $order,
</span><del>- 'root_set' => $root_set_id));
</del><ins>+ 'commit_set' => $commit_set_id));
</ins><span class="cx"> $order++;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -60,13 +60,13 @@
</span><span class="cx"> exit_with_success(array('testGroupId' => $group_id));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-function commit_sets_from_root_sets($db, $root_sets) {
</del><ins>+function ensure_commit_sets($db, $commit_sets_info) {
</ins><span class="cx"> $repository_name_to_id = array();
</span><span class="cx"> foreach ($db->fetch_table('repositories') as $row)
</span><span class="cx"> $repository_name_to_id[$row['repository_name']] = $row['repository_id'];
</span><span class="cx">
</span><span class="cx"> $commit_sets = array();
</span><del>- foreach ($root_sets as $repository_name => $revisions) {
</del><ins>+ foreach ($commit_sets_info as $repository_name => $revisions) {
</ins><span class="cx"> $repository_id = array_get($repository_name_to_id, $repository_name);
</span><span class="cx"> if (!$repository_id)
</span><span class="cx"> exit_with_error('RepositoryNotFound', array('name' => $repository_name));
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> $commit_count_per_set = count($commit_sets[0]);
</span><span class="cx"> foreach ($commit_sets as $commits) {
</span><span class="cx"> if ($commit_count_per_set != count($commits))
</span><del>- exit_with_error('InvalidRootSets', array('rootSets' => $root_sets));
</del><ins>+ exit_with_error('InvalidCommitSets', array('commitSets' => $commit_sets));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return $commit_sets;
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3componentsanalysisresultsviewerjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/components/analysis-results-viewer.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/components/analysis-results-viewer.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/components/analysis-results-viewer.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -85,21 +85,21 @@
</span><span class="cx"> Instrumentation.startMeasuringTime('AnalysisResultsViewer', 'buildRowGroups');
</span><span class="cx">
</span><span class="cx"> var testGroups = this._testGroups || [];
</span><del>- var rootSetsInTestGroups = this._collectRootSetsInTestGroups(testGroups);
</del><ins>+ var commitSetsInTestGroups = this._collectCommitSetsInTestGroups(testGroups);
</ins><span class="cx">
</span><del>- var rowToMatchingRootSets = new Map;
- var rowList = this._buildRowsForPointsAndTestGroups(rootSetsInTestGroups, rowToMatchingRootSets);
</del><ins>+ var rowToMatchingCommitSets = new Map;
+ var rowList = this._buildRowsForPointsAndTestGroups(commitSetsInTestGroups, rowToMatchingCommitSets);
</ins><span class="cx">
</span><span class="cx"> var testGroupLayoutMap = new Map;
</span><span class="cx"> var self = this;
</span><span class="cx"> rowList.forEach(function (row, rowIndex) {
</span><del>- var matchingRootSets = rowToMatchingRootSets.get(row);
- if (!matchingRootSets) {
</del><ins>+ var matchingCommitSets = rowToMatchingCommitSets.get(row);
+ if (!matchingCommitSets) {
</ins><span class="cx"> console.assert(row instanceof AnalysisResultsViewer.ExpandableRow);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- for (var entry of matchingRootSets) {
</del><ins>+ for (var entry of matchingCommitSets) {
</ins><span class="cx"> var testGroup = entry.testGroup();
</span><span class="cx">
</span><span class="cx"> var block = testGroupLayoutMap.get(testGroup);
</span><span class="lines">@@ -130,44 +130,44 @@
</span><span class="cx"> return [{rows: rowList}];
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _collectRootSetsInTestGroups(testGroups)
</del><ins>+ _collectCommitSetsInTestGroups(testGroups)
</ins><span class="cx"> {
</span><span class="cx"> if (!this._testGroups)
</span><span class="cx"> return [];
</span><span class="cx">
</span><del>- var rootSetsInTestGroups = [];
</del><ins>+ var commitSetsInTestGroups = [];
</ins><span class="cx"> for (var group of this._testGroups) {
</span><del>- var sortedSets = group.requestedRootSets();
</del><ins>+ var sortedSets = group.requestedCommitSets();
</ins><span class="cx"> for (var i = 0; i < sortedSets.length; i++)
</span><del>- rootSetsInTestGroups.push(new AnalysisResultsViewer.RootSetInTestGroup(group, sortedSets[i], sortedSets[i + 1]));
</del><ins>+ commitSetsInTestGroups.push(new AnalysisResultsViewer.CommitSetInTestGroup(group, sortedSets[i], sortedSets[i + 1]));
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- return rootSetsInTestGroups;
</del><ins>+ return commitSetsInTestGroups;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- _buildRowsForPointsAndTestGroups(rootSetsInTestGroups, rowToMatchingRootSets)
</del><ins>+ _buildRowsForPointsAndTestGroups(commitSetsInTestGroups, rowToMatchingCommitSets)
</ins><span class="cx"> {
</span><span class="cx"> console.assert(this._startPoint.series == this._endPoint.series);
</span><span class="cx"> var rowList = [];
</span><span class="cx"> var pointAfterEnd = this._endPoint.series.nextPoint(this._endPoint);
</span><del>- var rootSetsWithPoints = new Set;
</del><ins>+ var commitSetsWithPoints = new Set;
</ins><span class="cx"> var pointIndex = 0;
</span><span class="cx"> var previousPoint;
</span><span class="cx"> for (var point = this._startPoint; point && point != pointAfterEnd; point = point.series.nextPoint(point), pointIndex++) {
</span><del>- var rootSetInPoint = point.rootSet();
- var matchingRootSets = [];
- for (var entry of rootSetsInTestGroups) {
- if (rootSetInPoint.equals(entry.rootSet()) && !rootSetsWithPoints.has(entry)) {
- matchingRootSets.push(entry);
- rootSetsWithPoints.add(entry);
</del><ins>+ const commitSetInPoint = point.commitSet();
+ const matchingCommitSets = [];
+ for (var entry of commitSetsInTestGroups) {
+ if (commitSetInPoint.equals(entry.commitSet()) && !commitSetsWithPoints.has(entry)) {
+ matchingCommitSets.push(entry);
+ commitSetsWithPoints.add(entry);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- var hasMatchingTestGroup = !!matchingRootSets.length;
</del><ins>+ const hasMatchingTestGroup = !!matchingCommitSets.length;
</ins><span class="cx"> if (!hasMatchingTestGroup && !this._expandedPoints.has(point))
</span><span class="cx"> continue;
</span><span class="cx">
</span><del>- var row = new ResultsTableRow(pointIndex.toString(), rootSetInPoint);
</del><ins>+ const row = new ResultsTableRow(pointIndex.toString(), commitSetInPoint);
</ins><span class="cx"> row.setResult(point);
</span><span class="cx">
</span><span class="cx"> if (previousPoint && previousPoint.series.nextPoint(previousPoint) != point)
</span><span class="lines">@@ -174,36 +174,36 @@
</span><span class="cx"> rowList.push(new AnalysisResultsViewer.ExpandableRow(this._expandBetween.bind(this, previousPoint, point)));
</span><span class="cx"> previousPoint = point;
</span><span class="cx">
</span><del>- rowToMatchingRootSets.set(row, matchingRootSets);
</del><ins>+ rowToMatchingCommitSets.set(row, matchingCommitSets);
</ins><span class="cx"> rowList.push(row);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- rootSetsInTestGroups.forEach(function (entry) {
- if (rootSetsWithPoints.has(entry))
</del><ins>+ commitSetsInTestGroups.forEach(function (entry) {
+ if (commitSetsWithPoints.has(entry))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> for (var i = 0; i < rowList.length; i++) {
</span><span class="cx"> var row = rowList[i];
</span><del>- if (!(row instanceof AnalysisResultsViewer.ExpandableRow) && row.rootSet().equals(entry.rootSet())) {
- rowToMatchingRootSets.get(row).push(entry);
</del><ins>+ if (!(row instanceof AnalysisResultsViewer.ExpandableRow) && row.commitSet().equals(entry.commitSet())) {
+ rowToMatchingCommitSets.get(row).push(entry);
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- var groupTime = entry.rootSet().latestCommitTime();
- var newRow = new ResultsTableRow(null, entry.rootSet());
- rowToMatchingRootSets.set(newRow, [entry]);
</del><ins>+ var groupTime = entry.commitSet().latestCommitTime();
+ var newRow = new ResultsTableRow(null, entry.commitSet());
+ rowToMatchingCommitSets.set(newRow, [entry]);
</ins><span class="cx">
</span><span class="cx"> for (var i = 0; i < rowList.length; i++) {
</span><span class="cx"> if (rowList[i] instanceof AnalysisResultsViewer.ExpandableRow)
</span><span class="cx"> continue;
</span><span class="cx">
</span><del>- if (entry.succeedingRootSet() && rowList[i].rootSet().equals(entry.succeedingRootSet())) {
</del><ins>+ if (entry.succeedingCommitSet() && rowList[i].commitSet().equals(entry.succeedingCommitSet())) {
</ins><span class="cx"> rowList.splice(i, 0, newRow);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- var rowTime = rowList[i].rootSet().latestCommitTime();
</del><ins>+ var rowTime = rowList[i].commitSet().latestCommitTime();
</ins><span class="cx"> if (rowTime > groupTime) {
</span><span class="cx"> rowList.splice(i, 0, newRow);
</span><span class="cx"> return;
</span><span class="lines">@@ -211,13 +211,13 @@
</span><span class="cx">
</span><span class="cx"> if (rowTime == groupTime) {
</span><span class="cx"> // Missing some commits. Do as best as we can to avoid going backwards in time.
</span><del>- var repositoriesInNewRow = entry.rootSet().repositories();
</del><ins>+ var repositoriesInNewRow = entry.commitSet().repositories();
</ins><span class="cx"> for (var j = i; j < rowList.length; j++) {
</span><span class="cx"> if (rowList[j] instanceof AnalysisResultsViewer.ExpandableRow)
</span><span class="cx"> continue;
</span><span class="cx"> for (var repository of repositoriesInNewRow) {
</span><del>- var newCommit = entry.rootSet().commitForRepository(repository);
- var rowCommit = rowList[j].rootSet().commitForRepository(repository);
</del><ins>+ var newCommit = entry.commitSet().commitForRepository(repository);
+ var rowCommit = rowList[j].commitSet().commitForRepository(repository);
</ins><span class="cx"> if (!rowCommit || newCommit.time() < rowCommit.time()) {
</span><span class="cx"> rowList.splice(j, 0, newRow);
</span><span class="cx"> return;
</span><span class="lines">@@ -227,8 +227,8 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- var newRow = new ResultsTableRow(null, entry.rootSet());
- rowToMatchingRootSets.set(newRow, [entry]);
</del><ins>+ var newRow = new ResultsTableRow(null, entry.commitSet());
+ rowToMatchingCommitSets.set(newRow, [entry]);
</ins><span class="cx"> rowList.push(newRow);
</span><span class="cx"> });
</span><span class="cx">
</span><span class="lines">@@ -355,19 +355,19 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-AnalysisResultsViewer.RootSetInTestGroup = class {
- constructor(testGroup, rootSet, succeedingRootSet)
</del><ins>+AnalysisResultsViewer.CommitSetInTestGroup = class {
+ constructor(testGroup, commitSet, succeedingCommitSet)
</ins><span class="cx"> {
</span><span class="cx"> console.assert(testGroup instanceof TestGroup);
</span><del>- console.assert(rootSet instanceof RootSet);
</del><ins>+ console.assert(commitSet instanceof CommitSet);
</ins><span class="cx"> this._testGroup = testGroup;
</span><del>- this._rootSet = rootSet;
- this._succeedingRootSet = succeedingRootSet;
</del><ins>+ this._commitSet = commitSet;
+ this._succeedingCommitSet = succeedingCommitSet;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> testGroup() { return this._testGroup; }
</span><del>- rootSet() { return this._rootSet; }
- succeedingRootSet() { return this._succeedingRootSet; }
</del><ins>+ commitSet() { return this._commitSet; }
+ succeedingCommitSet() { return this._succeedingCommitSet; }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> AnalysisResultsViewer.TestGroupStackingBlock = class {
</span><span class="lines">@@ -374,7 +374,7 @@
</span><span class="cx"> constructor(testGroup, className, callback)
</span><span class="cx"> {
</span><span class="cx"> this._testGroup = testGroup;
</span><del>- this._rootSetIndexRowIndexMap = [];
</del><ins>+ this._commitSetIndexRowIndexMap = [];
</ins><span class="cx"> this._className = className;
</span><span class="cx"> this._label = null;
</span><span class="cx"> this._title = null;
</span><span class="lines">@@ -382,10 +382,10 @@
</span><span class="cx"> this._callback = callback;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- addRowIndex(rootSetInTestGroup, rowIndex)
</del><ins>+ addRowIndex(commitSetInTestGroup, rowIndex)
</ins><span class="cx"> {
</span><del>- console.assert(rootSetInTestGroup instanceof AnalysisResultsViewer.RootSetInTestGroup);
- this._rootSetIndexRowIndexMap.push({rootSet: rootSetInTestGroup.rootSet(), rowIndex: rowIndex});
</del><ins>+ console.assert(commitSetInTestGroup instanceof AnalysisResultsViewer.CommitSetInTestGroup);
+ this._commitSetIndexRowIndexMap.push({commitSet: commitSetInTestGroup.commitSet(), rowIndex: rowIndex});
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> testGroup() { return this._testGroup; }
</span><span class="lines">@@ -402,10 +402,10 @@
</span><span class="cx"> }, ComponentBase.createLink(this._label, this._title, this._callback));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- isComplete() { return this._rootSetIndexRowIndexMap.length >= 2; }
</del><ins>+ isComplete() { return this._commitSetIndexRowIndexMap.length >= 2; }
</ins><span class="cx">
</span><del>- startRowIndex() { return this._rootSetIndexRowIndexMap[0].rowIndex; }
- endRowIndex() { return this._rootSetIndexRowIndexMap[this._rootSetIndexRowIndexMap.length - 1].rowIndex; }
</del><ins>+ startRowIndex() { return this._commitSetIndexRowIndexMap[0].rowIndex; }
+ endRowIndex() { return this._commitSetIndexRowIndexMap[this._commitSetIndexRowIndexMap.length - 1].rowIndex; }
</ins><span class="cx"> isThin()
</span><span class="cx"> {
</span><span class="cx"> this._computeTestGroupStatus();
</span><span class="lines">@@ -417,10 +417,10 @@
</span><span class="cx"> if (this._status || !this.isComplete())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- console.assert(this._rootSetIndexRowIndexMap.length <= 2); // FIXME: Support having more root sets.
</del><ins>+ console.assert(this._commitSetIndexRowIndexMap.length <= 2); // FIXME: Support having more root sets.
</ins><span class="cx">
</span><span class="cx"> var result = this._testGroup.compareTestResults(
</span><del>- this._rootSetIndexRowIndexMap[0].rootSet, this._rootSetIndexRowIndexMap[1].rootSet);
</del><ins>+ this._commitSetIndexRowIndexMap[0].commitSet, this._commitSetIndexRowIndexMap[1].commitSet);
</ins><span class="cx">
</span><span class="cx"> this._label = result.label;
</span><span class="cx"> this._title = result.fullLabel;
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3componentschartrevisionrangejs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/components/chart-revision-range.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/components/chart-revision-range.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/components/chart-revision-range.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -38,10 +38,10 @@
</span><span class="cx"> {
</span><span class="cx"> if (!point || !repository)
</span><span class="cx"> return null;
</span><del>- const rootSet = point.rootSet();
- if (!rootSet)
</del><ins>+ const commitSet = point.commitSet();
+ if (!commitSet)
</ins><span class="cx"> return null;
</span><del>- const commit = rootSet.commitForRepository(repository);
</del><ins>+ const commit = commitSet.commitForRepository(repository);
</ins><span class="cx"> if (!commit)
</span><span class="cx"> return null;
</span><span class="cx"> return commit.revision();
</span><span class="lines">@@ -52,14 +52,14 @@
</span><span class="cx"> if (!currentPoint)
</span><span class="cx"> return null;
</span><span class="cx">
</span><del>- const currentRootSet = currentPoint.rootSet();
- const previousRootSet = previousPoint ? previousPoint.rootSet() : null;
</del><ins>+ const currentCommitSet = currentPoint.commitSet();
+ const previousCommitSet = previousPoint ? previousPoint.commitSet() : null;
</ins><span class="cx">
</span><del>- const repositoriesInCurrentRootSet = Repository.sortByNamePreferringOnesWithURL(currentRootSet.repositories());
</del><ins>+ const repositoriesInCurrentCommitSet = Repository.sortByNamePreferringOnesWithURL(currentCommitSet.repositories());
</ins><span class="cx"> const revisionList = [];
</span><del>- for (let repository of repositoriesInCurrentRootSet) {
- let currentCommit = currentRootSet.commitForRepository(repository);
- let previousCommit = previousRootSet ? previousRootSet.commitForRepository(repository) : null;
</del><ins>+ for (let repository of repositoriesInCurrentCommitSet) {
+ let currentCommit = currentCommitSet.commitForRepository(repository);
+ let previousCommit = previousCommitSet ? previousCommitSet.commitForRepository(repository) : null;
</ins><span class="cx"> revisionList.push(currentCommit.diff(previousCommit));
</span><span class="cx"> }
</span><span class="cx"> return revisionList;
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3componentscustomizabletestgroupformjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/components/customizable-test-group-form.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/components/customizable-test-group-form.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/components/customizable-test-group-form.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx"> constructor()
</span><span class="cx"> {
</span><span class="cx"> super('customizable-test-group-form');
</span><del>- this._rootSetMap = null;
</del><ins>+ this._commitSetMap = null;
</ins><span class="cx"> this._renderedRepositorylist = null;
</span><span class="cx"> this._customized = false;
</span><span class="cx"> this._nameControl = this.content().querySelector('.name');
</span><span class="lines">@@ -12,9 +12,9 @@
</span><span class="cx"> this.content().querySelector('a').onclick = this._customize.bind(this);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- setRootSetMap(map)
</del><ins>+ setCommitSetMap(map)
</ins><span class="cx"> {
</span><del>- this._rootSetMap = map;
</del><ins>+ this._commitSetMap = map;
</ins><span class="cx"> this._customized = false;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -21,7 +21,7 @@
</span><span class="cx"> _submitted()
</span><span class="cx"> {
</span><span class="cx"> if (this._startCallback)
</span><del>- this._startCallback(this._nameControl.value, this._repetitionCount, this._computeRootSetMap());
</del><ins>+ this._startCallback(this._nameControl.value, this._repetitionCount, this._computeCommitSetMap());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> _customize(event)
</span><span class="lines">@@ -31,24 +31,24 @@
</span><span class="cx"> this.enqueueToRender();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _computeRootSetMap()
</del><ins>+ _computeCommitSetMap()
</ins><span class="cx"> {
</span><del>- console.assert(this._rootSetMap);
</del><ins>+ console.assert(this._commitSetMap);
</ins><span class="cx"> if (!this._customized)
</span><del>- return this._rootSetMap;
</del><ins>+ return this._commitSetMap;
</ins><span class="cx">
</span><span class="cx"> console.assert(this._renderedRepositorylist);
</span><span class="cx"> var map = {};
</span><del>- for (var label in this._rootSetMap) {
- var customRootSet = new CustomRootSet;
</del><ins>+ for (var label in this._commitSetMap) {
+ var customCommitSet = new CustomCommitSet;
</ins><span class="cx"> for (var repository of this._renderedRepositorylist) {
</span><span class="cx"> var className = CustomizableTestGroupForm._classForLabelAndRepository(label, repository);
</span><span class="cx"> var revision = this.content().querySelector('.' + className).value;
</span><span class="cx"> console.assert(revision);
</span><span class="cx"> if (revision)
</span><del>- customRootSet.setRevisionForRepository(repository, revision);
</del><ins>+ customCommitSet.setRevisionForRepository(repository, revision);
</ins><span class="cx"> }
</span><del>- map[label] = customRootSet;
</del><ins>+ map[label] = customCommitSet;
</ins><span class="cx"> }
</span><span class="cx"> return map;
</span><span class="cx"> }
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> render()
</span><span class="cx"> {
</span><span class="cx"> super.render();
</span><del>- var map = this._rootSetMap;
</del><ins>+ var map = this._commitSetMap;
</ins><span class="cx">
</span><span class="cx"> this.content().querySelector('button').disabled = !(map && this._nameControl.value);
</span><span class="cx"> this.content().querySelector('.customize-link').style.display = !map ? 'none' : null;
</span><span class="lines">@@ -68,11 +68,11 @@
</span><span class="cx"> console.assert(map);
</span><span class="cx">
</span><span class="cx"> var repositorySet = new Set;
</span><del>- var rootSetLabels = [];
</del><ins>+ var commitSetLabels = [];
</ins><span class="cx"> for (var label in map) {
</span><span class="cx"> for (var repository of map[label].repositories())
</span><span class="cx"> repositorySet.add(repository);
</span><del>- rootSetLabels.push(label);
</del><ins>+ commitSetLabels.push(label);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> this._renderedRepositorylist = Repository.sortByNamePreferringOnesWithURL(Array.from(repositorySet.values()));
</span><span class="lines">@@ -82,8 +82,8 @@
</span><span class="cx"> element('table', {class: 'custom-table'}, [
</span><span class="cx"> element('thead',
</span><span class="cx"> element('tr',
</span><del>- [element('td', 'Repository'), rootSetLabels.map(function (label) {
- return element('td', {colspan: rootSetLabels.length + 1}, label);
</del><ins>+ [element('td', 'Repository'), commitSetLabels.map(function (label) {
+ return element('td', {colspan: commitSetLabels.length + 1}, label);
</ins><span class="cx"> })])),
</span><span class="cx"> element('tbody',
</span><span class="cx"> this._renderedRepositorylist.map(function (repository) {
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">
</span><span class="cx"> static _classForLabelAndRepository(label, repository) { return label + '-' + repository.id(); }
</span><span class="cx">
</span><del>- static _constructRevisionRadioButtons(rootSetMap, repository, rowLabel)
</del><ins>+ static _constructRevisionRadioButtons(commitSetMap, repository, rowLabel)
</ins><span class="cx"> {
</span><span class="cx"> var className = this._classForLabelAndRepository(rowLabel, repository);
</span><span class="cx"> var groupName = className + '-group';
</span><span class="lines">@@ -103,11 +103,11 @@
</span><span class="cx"> var element = ComponentBase.createElement;
</span><span class="cx"> var revisionEditor = element('input', {class: className});
</span><span class="cx">
</span><del>- var nodes = [];
- for (var labelToChoose in rootSetMap) {
- var commit = rootSetMap[labelToChoose].commitForRepository(repository);
- var checked = labelToChoose == rowLabel;
- var radioButton = this._createRadioButton(groupName, revisionEditor, commit, checked);
</del><ins>+ const nodes = [];
+ for (let labelToChoose in commitSetMap) {
+ const commit = commitSetMap[labelToChoose].commitForRepository(repository);
+ const checked = labelToChoose == rowLabel;
+ const radioButton = this._createRadioButton(groupName, revisionEditor, commit, checked);
</ins><span class="cx"> if (checked)
</span><span class="cx"> revisionEditor.value = commit ? commit.revision() : '';
</span><span class="cx"> nodes.push(element('td', element('label', [radioButton, labelToChoose])));
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3componentsresultstablejs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/components/results-table.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/components/results-table.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/components/results-table.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> if (self._rangeSelectorLabels) {
</span><span class="cx"> for (var label of self._rangeSelectorLabels) {
</span><span class="cx"> var content = '';
</span><del>- if (row.rootSet()) {
</del><ins>+ if (row.commitSet()) {
</ins><span class="cx"> content = element('input',
</span><span class="cx"> {type: 'radio', name: label, onchange: self._rangeSelectorClicked.bind(self, label, row)});
</span><span class="cx"> }
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx"> cells.push(element('td', {class: 'whole-row-label', colspan: repositoryList.length + 1}, row.labelForWholeRow()));
</span><span class="cx"> else {
</span><span class="cx"> cells.push(element('td', row.resultContent(barGraphGroup)));
</span><del>- cells.push(self._createRevisionListCells(repositoryList, revisionSupressionCount, group, row.rootSet(), rowIndex));
</del><ins>+ cells.push(self._createRevisionListCells(repositoryList, revisionSupressionCount, group, row.commitSet(), rowIndex));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return element('tr', [cells, row.additionalColumns()]);
</span><span class="lines">@@ -92,13 +92,13 @@
</span><span class="cx"> Instrumentation.endMeasuringTime('ResultsTable', 'render');
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _createRevisionListCells(repositoryList, revisionSupressionCount, testGroup, rootSet, rowIndex)
</del><ins>+ _createRevisionListCells(repositoryList, revisionSupressionCount, testGroup, commitSet, rowIndex)
</ins><span class="cx"> {
</span><span class="cx"> var element = ComponentBase.createElement;
</span><span class="cx"> var link = ComponentBase.createLink;
</span><span class="cx"> var cells = [];
</span><span class="cx"> for (var repository of repositoryList) {
</span><del>- var commit = rootSet ? rootSet.commitForRepository(repository) : null;
</del><ins>+ var commit = commitSet ? commitSet.commitForRepository(repository) : null;
</ins><span class="cx">
</span><span class="cx"> if (revisionSupressionCount[repository.id()]) {
</span><span class="cx"> revisionSupressionCount[repository.id()]--;
</span><span class="lines">@@ -105,10 +105,10 @@
</span><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- var succeedingRowIndex = rowIndex + 1;
</del><ins>+ let succeedingRowIndex = rowIndex + 1;
</ins><span class="cx"> while (succeedingRowIndex < testGroup.rows.length) {
</span><del>- var succeedingRootSet = testGroup.rows[succeedingRowIndex].rootSet();
- if (succeedingRootSet && commit != succeedingRootSet.commitForRepository(repository))
</del><ins>+ const succeedingCommitSet = testGroup.rows[succeedingRowIndex].commitSet();
+ if (succeedingCommitSet && commit != succeedingCommitSet.commitForRepository(repository))
</ins><span class="cx"> break;
</span><span class="cx"> succeedingRowIndex++;
</span><span class="cx"> }
</span><span class="lines">@@ -148,21 +148,21 @@
</span><span class="cx"> }
</span><span class="cx"> return a.hasUrlForRevision() ? -1 /* a < b */ : 1; // a > b
</span><span class="cx"> });
</span><del>- var rootSets = [];
- for (var group of rowGroups) {
- for (var row of group.rows) {
- var rootSet = row.rootSet();
- if (rootSet)
- rootSets.push(rootSet);
</del><ins>+ const commitSets = [];
+ for (let group of rowGroups) {
+ for (let row of group.rows) {
+ const commitSet = row.commitSet();
+ if (commitSet)
+ commitSets.push(commitSet);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><del>- if (!rootSets.length)
</del><ins>+ if (!commitSets.length)
</ins><span class="cx"> return [];
</span><span class="cx">
</span><del>- var repositoryPresenceMap = {};
- for (var repository of allRepositories) {
- var someCommit = rootSets[0].commitForRepository(repository);
- if (RootSet.containsMultipleCommitsForRepository(rootSets, repository))
</del><ins>+ const repositoryPresenceMap = {};
+ for (let repository of allRepositories) {
+ const someCommit = commitSets[0].commitForRepository(repository);
+ if (CommitSet.containsMultipleCommitsForRepository(commitSets, repository))
</ins><span class="cx"> repositoryPresenceMap[repository.id()] = true;
</span><span class="cx"> else if (someCommit)
</span><span class="cx"> extraRepositories.push(someCommit);
</span><span class="lines">@@ -271,19 +271,19 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> class ResultsTableRow {
</span><del>- constructor(heading, rootSet)
</del><ins>+ constructor(heading, commitSet)
</ins><span class="cx"> {
</span><span class="cx"> this._heading = heading;
</span><span class="cx"> this._result = null;
</span><span class="cx"> this._link = null;
</span><span class="cx"> this._label = '-';
</span><del>- this._rootSet = rootSet;
</del><ins>+ this._commitSet = commitSet;
</ins><span class="cx"> this._additionalColumns = [];
</span><span class="cx"> this._labelForWholeRow = null;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> heading() { return this._heading; }
</span><del>- rootSet() { return this._rootSet; }
</del><ins>+ commitSet() { return this._commitSet; }
</ins><span class="cx"> setResult(result) { this._result = result; }
</span><span class="cx"> setLink(link, label)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3componentstestgroupresultstablejs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/components/test-group-results-table.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/components/test-group-results-table.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/components/test-group-results-table.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -29,19 +29,19 @@
</span><span class="cx">
</span><span class="cx"> buildRowGroups()
</span><span class="cx"> {
</span><del>- var testGroup = this._testGroup;
</del><ins>+ const testGroup = this._testGroup;
</ins><span class="cx"> if (!testGroup)
</span><span class="cx"> return [];
</span><span class="cx">
</span><del>- var rootSets = this._testGroup.requestedRootSets();
- var groups = rootSets.map(function (rootSet) {
- var rows = [new ResultsTableRow('Mean', rootSet)];
</del><ins>+ const commitSets = this._testGroup.requestedCommitSets();
+ const groups = commitSets.map(function (commitSet) {
+ const rows = [new ResultsTableRow('Mean', commitSet)];
</ins><span class="cx"> var results = [];
</span><span class="cx">
</span><del>- for (var request of testGroup.requestsForRootSet(rootSet)) {
</del><ins>+ for (var request of testGroup.requestsForCommitSet(commitSet)) {
</ins><span class="cx"> var result = request.result();
</span><del>- // Call result.rootSet() for each result since the set of revisions used in testing maybe different from requested ones.
- var row = new ResultsTableRow(1 + +request.order(), result ? result.rootSet() : null);
</del><ins>+ // Call result.commitSet() for each result since the set of revisions used in testing maybe different from requested ones.
+ var row = new ResultsTableRow(1 + +request.order(), result ? result.commitSet() : null);
</ins><span class="cx"> rows.push(row);
</span><span class="cx"> if (result) {
</span><span class="cx"> row.setLink(result.build().url(), result.build().label());
</span><span class="lines">@@ -55,16 +55,16 @@
</span><span class="cx"> if (!isNaN(aggregatedResult.value))
</span><span class="cx"> rows[0].setResult(aggregatedResult);
</span><span class="cx">
</span><del>- return {heading: testGroup.labelForRootSet(rootSet), rows:rows};
</del><ins>+ return {heading: testGroup.labelForCommitSet(commitSet), rows};
</ins><span class="cx"> });
</span><span class="cx">
</span><del>- var comparisonRows = [];
- for (var i = 0; i < rootSets.length; i++) {
- for (var j = i + 1; j < rootSets.length; j++) {
- var startConfig = testGroup.labelForRootSet(rootSets[i]);
- var endConfig = testGroup.labelForRootSet(rootSets[j]);
</del><ins>+ const comparisonRows = [];
+ for (let i = 0; i < commitSets.length; i++) {
+ for (let j = i + 1; j < commitSets.length; j++) {
+ const startConfig = testGroup.labelForCommitSet(commitSets[i]);
+ const endConfig = testGroup.labelForCommitSet(commitSets[j]);
</ins><span class="cx">
</span><del>- var result = this._testGroup.compareTestResults(rootSets[i], rootSets[j]);
</del><ins>+ const result = this._testGroup.compareTestResults(commitSets[i], commitSets[j]);
</ins><span class="cx"> if (result.changeType == null)
</span><span class="cx"> continue;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3indexhtml"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/index.html (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/index.html        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/index.html        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> <script src="models/analysis-task.js"></script>
</span><span class="cx"> <script src="models/test-group.js"></script>
</span><span class="cx"> <script src="models/build-request.js"></script>
</span><del>- <script src="models/root-set.js"></script>
</del><ins>+ <script src="models/commit-set.js"></script>
</ins><span class="cx"> <script src="models/triggerable.js"></script>
</span><span class="cx"> <script src="models/manifest.js"></script>
</span><span class="cx">
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3modelsbuildrequestjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/models/build-request.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/models/build-request.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/models/build-request.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -17,8 +17,8 @@
</span><span class="cx"> console.assert(object.test instanceof Test);
</span><span class="cx"> this._test = object.test;
</span><span class="cx"> this._order = object.order;
</span><del>- console.assert(object.rootSet instanceof RootSet);
- this._rootSet = object.rootSet;
</del><ins>+ console.assert(object.commitSet instanceof CommitSet);
+ this._commitSet = object.commitSet;
</ins><span class="cx"> this._status = object.status;
</span><span class="cx"> this._statusUrl = object.url;
</span><span class="cx"> this._buildId = object.build;
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> {
</span><span class="cx"> console.assert(this._testGroup == object.testGroup);
</span><span class="cx"> console.assert(this._order == object.order);
</span><del>- console.assert(this._rootSet == object.rootSet);
</del><ins>+ console.assert(this._commitSet == object.commitSet);
</ins><span class="cx"> this._status = object.status;
</span><span class="cx"> this._statusUrl = object.url;
</span><span class="cx"> this._buildId = object.build;
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> platform() { return this._platform; }
</span><span class="cx"> test() { return this._test; }
</span><span class="cx"> order() { return +this._order; }
</span><del>- rootSet() { return this._rootSet; }
</del><ins>+ commitSet() { return this._commitSet; }
</ins><span class="cx">
</span><span class="cx"> status() { return this._status; }
</span><span class="cx"> hasFinished() { return this._status == 'failed' || this._status == 'completed' || this._status == 'canceled'; }
</span><span class="lines">@@ -139,15 +139,15 @@
</span><span class="cx">
</span><span class="cx"> static constructBuildRequestsFromData(data)
</span><span class="cx"> {
</span><del>- var rootIdMap = {};
- for (var root of data['roots']) {
- rootIdMap[root.id] = root;
- root.repository = Repository.findById(root.repository);
</del><ins>+ const commitIdMap = {};
+ for (let commit of data['commits']) {
+ commitIdMap[commit.id] = commit;
+ commit.repository = Repository.findById(commit.repository);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- var rootSets = data['rootSets'].map(function (row) {
- row.roots = row.roots.map(function (rootId) { return rootIdMap[rootId]; });
- return RootSet.ensureSingleton(row.id, row);
</del><ins>+ const commitSets = data['commitSets'].map((row) => {
+ row.commits = row.commits.map((commitId) => commitIdMap[commitId]);
+ return CommitSet.ensureSingleton(row.id, row);
</ins><span class="cx"> });
</span><span class="cx">
</span><span class="cx"> return data['buildRequests'].map(function (rawData) {
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> rawData.test = Test.findById(rawData.test);
</span><span class="cx"> rawData.testGroupId = rawData.testGroup;
</span><span class="cx"> rawData.testGroup = TestGroup.findById(rawData.testGroup);
</span><del>- rawData.rootSet = RootSet.findById(rawData.rootSet);
</del><ins>+ rawData.commitSet = CommitSet.findById(rawData.commitSet);
</ins><span class="cx"> return BuildRequest.ensureSingleton(rawData.id, rawData);
</span><span class="cx"> });
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3modelscommitsetjsfromrev213951trunkWebsitesperfwebkitorgpublicv3modelsrootsetjs"></a>
<div class="copfile"><h4>Copied: trunk/Websites/perf.webkit.org/public/v3/models/commit-set.js (from rev 213951, trunk/Websites/perf.webkit.org/public/v3/models/root-set.js) (0 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/models/commit-set.js         (rev 0)
+++ trunk/Websites/perf.webkit.org/public/v3/models/commit-set.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -0,0 +1,126 @@
</span><ins>+'use strict';
+
+class CommitSet extends DataModelObject {
+
+ constructor(id, object)
+ {
+ super(id);
+ this._repositories = [];
+ this._repositoryToCommitMap = {};
+ this._latestCommitTime = null;
+
+ if (!object)
+ return;
+
+ for (let row of object.commits) {
+ const repositoryId = row.repository.id();
+ console.assert(!this._repositoryToCommitMap[repositoryId]);
+ this._repositoryToCommitMap[repositoryId] = CommitLog.ensureSingleton(row.id, row);
+ this._repositories.push(row.repository);
+ }
+ }
+
+ repositories() { return this._repositories; }
+ commitForRepository(repository) { return this._repositoryToCommitMap[repository.id()]; }
+
+ revisionForRepository(repository)
+ {
+ var commit = this._repositoryToCommitMap[repository.id()];
+ return commit ? commit.revision() : null;
+ }
+
+ // FIXME: This should return a Date object.
+ latestCommitTime()
+ {
+ if (this._latestCommitTime == null) {
+ var maxTime = 0;
+ for (var repositoryId in this._repositoryToCommitMap)
+ maxTime = Math.max(maxTime, +this._repositoryToCommitMap[repositoryId].time());
+ this._latestCommitTime = maxTime;
+ }
+ return this._latestCommitTime;
+ }
+
+ equals(other)
+ {
+ if (this._repositories.length != other._repositories.length)
+ return false;
+ for (var repositoryId in this._repositoryToCommitMap) {
+ if (this._repositoryToCommitMap[repositoryId] != other._repositoryToCommitMap[repositoryId])
+ return false;
+ }
+ return true;
+ }
+
+ static containsMultipleCommitsForRepository(commitSets, repository)
+ {
+ console.assert(repository instanceof Repository);
+ if (commitSets.length < 2)
+ return false;
+ const firstCommit = commitSets[0].commitForRepository(repository);
+ for (let set of commitSets) {
+ const anotherCommit = set.commitForRepository(repository);
+ if (!firstCommit != !anotherCommit || (firstCommit && firstCommit.revision() != anotherCommit.revision()))
+ return true;
+ }
+ return false;
+ }
+}
+
+class MeasurementCommitSet extends CommitSet {
+
+ constructor(id, revisionList)
+ {
+ super(id, null);
+ for (var values of revisionList) {
+ // [<commit-id>, <repository-id>, <revision>, <time>]
+ var commitId = values[0];
+ var repositoryId = values[1];
+ var revision = values[2];
+ var time = values[3];
+ var repository = Repository.findById(repositoryId);
+ if (!repository)
+ continue;
+
+ this._repositoryToCommitMap[repositoryId] = CommitLog.ensureSingleton(commitId, {repository: repository, revision: revision, time: time});
+ this._repositories.push(repository);
+ }
+ }
+
+ // Use CommitSet's static maps because MeasurementCommitSet and CommitSet are logically of the same type.
+ // FIXME: Idaelly, DataModel should take care of this but traversing prototype chain is expensive.
+ namedStaticMap(name) { return CommitSet.namedStaticMap(name); }
+ ensureNamedStaticMap(name) { return CommitSet.ensureNamedStaticMap(name); }
+ static namedStaticMap(name) { return CommitSet.namedStaticMap(name); }
+ static ensureNamedStaticMap(name) { return CommitSet.ensureNamedStaticMap(name); }
+
+ static ensureSingleton(measurementId, revisionList)
+ {
+ const commitSetId = measurementId + '-commitset';
+ return CommitSet.findById(commitSetId) || (new MeasurementCommitSet(commitSetId, revisionList));
+ }
+}
+
+class CustomCommitSet {
+
+ constructor()
+ {
+ this._revisionListByRepository = new Map;
+ }
+
+ setRevisionForRepository(repository, revision)
+ {
+ console.assert(repository instanceof Repository);
+ this._revisionListByRepository.set(repository, revision);
+ }
+
+ repositories() { return Array.from(this._revisionListByRepository.keys()); }
+ revisionForRepository(repository) { return this._revisionListByRepository.get(repository); }
+
+}
+
+if (typeof module != 'undefined') {
+ module.exports.CommitSet = CommitSet;
+ module.exports.MeasurementCommitSet = MeasurementCommitSet;
+ module.exports.CustomCommitSet = CustomCommitSet;
+}
</ins></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3modelsmeasurementadaptorjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/models/measurement-adaptor.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/models/measurement-adaptor.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/models/measurement-adaptor.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> buildId: buildId,
</span><span class="cx"> metricId: null,
</span><span class="cx"> configType: null,
</span><del>- rootSet: function () { return MeasurementRootSet.ensureSingleton(id, row[self._revisionsIndex]); },
</del><ins>+ commitSet: function () { return MeasurementCommitSet.ensureSingleton(id, row[self._revisionsIndex]); },
</ins><span class="cx"> build: function () {
</span><span class="cx"> if (cachedBuild == null && builderId)
</span><span class="cx"> cachedBuild = new Build(buildId, Builder.findById(builderId), row[self._buildNumberIndex], row[self._buildTimeIndex]);
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3modelsrootsetjs"></a>
<div class="delfile"><h4>Deleted: trunk/Websites/perf.webkit.org/public/v3/models/root-set.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/models/root-set.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/models/root-set.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -1,126 +0,0 @@
</span><del>-'use strict';
-
-class RootSet extends DataModelObject {
-
- constructor(id, object)
- {
- super(id);
- this._repositories = [];
- this._repositoryToCommitMap = {};
- this._latestCommitTime = null;
-
- if (!object)
- return;
-
- for (var row of object.roots) {
- var repositoryId = row.repository.id();
- console.assert(!this._repositoryToCommitMap[repositoryId]);
- this._repositoryToCommitMap[repositoryId] = CommitLog.ensureSingleton(row.id, row);
- this._repositories.push(row.repository);
- }
- }
-
- repositories() { return this._repositories; }
- commitForRepository(repository) { return this._repositoryToCommitMap[repository.id()]; }
-
- revisionForRepository(repository)
- {
- var commit = this._repositoryToCommitMap[repository.id()];
- return commit ? commit.revision() : null;
- }
-
- // FIXME: This should return a Date object.
- latestCommitTime()
- {
- if (this._latestCommitTime == null) {
- var maxTime = 0;
- for (var repositoryId in this._repositoryToCommitMap)
- maxTime = Math.max(maxTime, +this._repositoryToCommitMap[repositoryId].time());
- this._latestCommitTime = maxTime;
- }
- return this._latestCommitTime;
- }
-
- equals(other)
- {
- if (this._repositories.length != other._repositories.length)
- return false;
- for (var repositoryId in this._repositoryToCommitMap) {
- if (this._repositoryToCommitMap[repositoryId] != other._repositoryToCommitMap[repositoryId])
- return false;
- }
- return true;
- }
-
- static containsMultipleCommitsForRepository(rootSets, repository)
- {
- console.assert(repository instanceof Repository);
- if (rootSets.length < 2)
- return false;
- var firstCommit = rootSets[0].commitForRepository(repository);
- for (var set of rootSets) {
- var anotherCommit = set.commitForRepository(repository);
- if (!firstCommit != !anotherCommit || (firstCommit && firstCommit.revision() != anotherCommit.revision()))
- return true;
- }
- return false;
- }
-}
-
-class MeasurementRootSet extends RootSet {
-
- constructor(id, revisionList)
- {
- super(id, null);
- for (var values of revisionList) {
- // [<commit-id>, <repository-id>, <revision>, <time>]
- var commitId = values[0];
- var repositoryId = values[1];
- var revision = values[2];
- var time = values[3];
- var repository = Repository.findById(repositoryId);
- if (!repository)
- continue;
-
- this._repositoryToCommitMap[repositoryId] = CommitLog.ensureSingleton(commitId, {repository: repository, revision: revision, time: time});
- this._repositories.push(repository);
- }
- }
-
- // Use RootSet's static maps because MeasurementRootSet and RootSet are logically of the same type.
- // FIXME: Idaelly, DataModel should take care of this but traversing prototype chain is expensive.
- namedStaticMap(name) { return RootSet.namedStaticMap(name); }
- ensureNamedStaticMap(name) { return RootSet.ensureNamedStaticMap(name); }
- static namedStaticMap(name) { return RootSet.namedStaticMap(name); }
- static ensureNamedStaticMap(name) { return RootSet.ensureNamedStaticMap(name); }
-
- static ensureSingleton(measurementId, revisionList)
- {
- var rootSetId = measurementId + '-rootset';
- return RootSet.findById(rootSetId) || (new MeasurementRootSet(rootSetId, revisionList));
- }
-}
-
-class CustomRootSet {
-
- constructor()
- {
- this._revisionListByRepository = new Map;
- }
-
- setRevisionForRepository(repository, revision)
- {
- console.assert(repository instanceof Repository);
- this._revisionListByRepository.set(repository, revision);
- }
-
- repositories() { return Array.from(this._revisionListByRepository.keys()); }
- revisionForRepository(repository) { return this._revisionListByRepository.get(repository); }
-
-}
-
-if (typeof module != 'undefined') {
- module.exports.RootSet = RootSet;
- module.exports.MeasurementRootSet = MeasurementRootSet;
- module.exports.CustomRootSet = CustomRootSet;
-}
</del></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3modelstestgroupjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/models/test-group.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/models/test-group.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/models/test-group.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -12,9 +12,9 @@
</span><span class="cx"> this._buildRequests = [];
</span><span class="cx"> this._requestsAreInOrder = false;
</span><span class="cx"> this._repositories = null;
</span><del>- this._requestedRootSets = null;
- this._rootSetToLabel = new Map;
- this._allRootSets = null;
</del><ins>+ this._requestedCommitSets = null;
+ this._commitSetToLabel = new Map;
+ this._allCommitSets = null;
</ins><span class="cx"> console.assert(!object.platform || object.platform instanceof Platform);
</span><span class="cx"> this._platform = object.platform;
</span><span class="cx"> }
</span><span class="lines">@@ -37,8 +37,8 @@
</span><span class="cx"> {
</span><span class="cx"> this._buildRequests.push(request);
</span><span class="cx"> this._requestsAreInOrder = false;
</span><del>- this._requestedRootSets = null;
- this._rootSetToLabel.clear();
</del><ins>+ this._requestedCommitSets = null;
+ this._commitSetToLabel.clear();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> repetitionCount()
</span><span class="lines">@@ -45,46 +45,46 @@
</span><span class="cx"> {
</span><span class="cx"> if (!this._buildRequests.length)
</span><span class="cx"> return 0;
</span><del>- var rootSet = this._buildRequests[0].rootSet();
</del><ins>+ var commitSet = this._buildRequests[0].commitSet();
</ins><span class="cx"> var count = 0;
</span><span class="cx"> for (var request of this._buildRequests) {
</span><del>- if (request.rootSet() == rootSet)
</del><ins>+ if (request.commitSet() == commitSet)
</ins><span class="cx"> count++;
</span><span class="cx"> }
</span><span class="cx"> return count;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- requestedRootSets()
</del><ins>+ requestedCommitSets()
</ins><span class="cx"> {
</span><del>- if (!this._requestedRootSets) {
</del><ins>+ if (!this._requestedCommitSets) {
</ins><span class="cx"> this._orderBuildRequests();
</span><del>- this._requestedRootSets = [];
</del><ins>+ this._requestedCommitSets = [];
</ins><span class="cx"> for (var request of this._buildRequests) {
</span><del>- var set = request.rootSet();
- if (!this._requestedRootSets.includes(set))
- this._requestedRootSets.push(set);
</del><ins>+ var set = request.commitSet();
+ if (!this._requestedCommitSets.includes(set))
+ this._requestedCommitSets.push(set);
</ins><span class="cx"> }
</span><del>- this._requestedRootSets.sort(function (a, b) { return a.latestCommitTime() - b.latestCommitTime(); });
</del><ins>+ this._requestedCommitSets.sort(function (a, b) { return a.latestCommitTime() - b.latestCommitTime(); });
</ins><span class="cx"> var setIndex = 0;
</span><del>- for (var set of this._requestedRootSets) {
- this._rootSetToLabel.set(set, String.fromCharCode('A'.charCodeAt(0) + setIndex));
</del><ins>+ for (var set of this._requestedCommitSets) {
+ this._commitSetToLabel.set(set, String.fromCharCode('A'.charCodeAt(0) + setIndex));
</ins><span class="cx"> setIndex++;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> }
</span><del>- return this._requestedRootSets;
</del><ins>+ return this._requestedCommitSets;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- requestsForRootSet(rootSet)
</del><ins>+ requestsForCommitSet(commitSet)
</ins><span class="cx"> {
</span><span class="cx"> this._orderBuildRequests();
</span><del>- return this._buildRequests.filter(function (request) { return request.rootSet() == rootSet; });
</del><ins>+ return this._buildRequests.filter(function (request) { return request.commitSet() == commitSet; });
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- labelForRootSet(rootSet)
</del><ins>+ labelForCommitSet(commitSet)
</ins><span class="cx"> {
</span><del>- console.assert(this._requestedRootSets);
- return this._rootSetToLabel.get(rootSet);
</del><ins>+ console.assert(this._requestedCommitSets);
+ return this._commitSetToLabel.get(commitSet);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> _orderBuildRequests()
</span><span class="lines">@@ -97,7 +97,7 @@
</span><span class="cx">
</span><span class="cx"> didSetResult(request)
</span><span class="cx"> {
</span><del>- this._allRootSets = null;
</del><ins>+ this._allCommitSets = null;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> hasFinished()
</span><span class="lines">@@ -115,12 +115,12 @@
</span><span class="cx"> return this._buildRequests.some(function (request) { return request.isPending(); });
</span><span class="cx"> }
</span><span class="cx">
</span><del>- compareTestResults(rootSetA, rootSetB)
</del><ins>+ compareTestResults(commitSetA, commitSetB)
</ins><span class="cx"> {
</span><del>- var beforeValues = this._valuesForRootSet(rootSetA);
- var afterValues = this._valuesForRootSet(rootSetB);
- var beforeMean = Statistics.sum(beforeValues) / beforeValues.length;
- var afterMean = Statistics.sum(afterValues) / afterValues.length;
</del><ins>+ const beforeValues = this._valuesForCommitSet(commitSetA);
+ const afterValues = this._valuesForCommitSet(commitSetB);
+ const beforeMean = Statistics.sum(beforeValues) / beforeValues.length;
+ const afterMean = Statistics.sum(afterValues) / afterValues.length;
</ins><span class="cx">
</span><span class="cx"> var metric = AnalysisTask.findById(this._taskId).metric();
</span><span class="cx"> console.assert(metric);
</span><span class="lines">@@ -160,11 +160,11 @@
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _valuesForRootSet(rootSet)
</del><ins>+ _valuesForCommitSet(commitSet)
</ins><span class="cx"> {
</span><del>- var requests = this.requestsForRootSet(rootSet);
- var values = [];
- for (var request of requests) {
</del><ins>+ const requests = this.requestsForCommitSet(commitSet);
+ const values = [];
+ for (let request of requests) {
</ins><span class="cx"> if (request.result())
</span><span class="cx"> values.push(request.result().value);
</span><span class="cx"> }
</span><span class="lines">@@ -197,16 +197,15 @@
</span><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span><del>- static createAndRefetchTestGroups(task, name, repetitionCount, rootSets)
</del><ins>+ static createAndRefetchTestGroups(task, name, repetitionCount, commitSets)
</ins><span class="cx"> {
</span><del>- var self = this;
</del><span class="cx"> return PrivilegedAPI.sendRequest('create-test-group', {
</span><span class="cx"> task: task.id(),
</span><span class="cx"> name: name,
</span><span class="cx"> repetitionCount: repetitionCount,
</span><del>- rootSets: rootSets,
- }).then(function (data) {
- return self.cachedFetch('../api/test-groups', {task: task.id()}, true).then(self._createModelsFromFetchedTestGroups.bind(self));
</del><ins>+ commitSets: commitSets,
+ }).then((data) => {
+ return this.cachedFetch('../api/test-groups', {task: task.id()}, true).then((data) => this._createModelsFromFetchedTestGroups(data));
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3pagesanalysistaskpagejs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -249,8 +249,8 @@
</span><span class="cx">
</span><span class="cx"> var repositoryList;
</span><span class="cx"> if (this._startPoint) {
</span><del>- var rootSet = this._startPoint.rootSet();
- repositoryList = Repository.sortByNamePreferringOnesWithURL(rootSet.repositories());
</del><ins>+ var commitSet = this._startPoint.commitSet();
+ repositoryList = Repository.sortByNamePreferringOnesWithURL(commitSet.repositories());
</ins><span class="cx"> } else
</span><span class="cx"> repositoryList = Repository.sortByNamePreferringOnesWithURL(Repository.all());
</span><span class="cx">
</span><span class="lines">@@ -285,7 +285,7 @@
</span><span class="cx"> var selectedRange = this._analysisResultsViewer.selectedRange();
</span><span class="cx"> var a = selectedRange['A'];
</span><span class="cx"> var b = selectedRange['B'];
</span><del>- this._newTestGroupFormForViewer.setRootSetMap(a && b ? {'A': a.rootSet(), 'B': b.rootSet()} : null);
</del><ins>+ this._newTestGroupFormForViewer.setCommitSetMap(a && b ? {'A': a.commitSet(), 'B': b.commitSet()} : null);
</ins><span class="cx"> this._newTestGroupFormForViewer.enqueueToRender();
</span><span class="cx"> this._newTestGroupFormForViewer.element().style.display = this._triggerable ? null : 'none';
</span><span class="cx">
</span><span class="lines">@@ -296,8 +296,8 @@
</span><span class="cx"> this._chartPane.setMainSelection([this._startPoint.time, this._endPoint.time]);
</span><span class="cx">
</span><span class="cx"> var points = this._chartPane.selectedPoints();
</span><del>- this._newTestGroupFormForChart.setRootSetMap(points && points.length() >= 2 ?
- {'A': points.firstPoint().rootSet(), 'B': points.lastPoint().rootSet()} : null);
</del><ins>+ this._newTestGroupFormForChart.setCommitSetMap(points && points.length() >= 2 ?
+ {'A': points.firstPoint().commitSet(), 'B': points.lastPoint().commitSet()} : null);
</ins><span class="cx"> this._newTestGroupFormForChart.enqueueToRender();
</span><span class="cx"> this._newTestGroupFormForChart.element().style.display = this._triggerable ? null : 'none';
</span><span class="cx">
</span><span class="lines">@@ -377,9 +377,9 @@
</span><span class="cx">
</span><span class="cx"> this._chartPane.setMainSelection(null);
</span><span class="cx"> if (this._currentTestGroup) {
</span><del>- var rootSetsInTestGroup = this._currentTestGroup.requestedRootSets();
- var startTime = rootSetsInTestGroup[0].latestCommitTime();
- var endTime = rootSetsInTestGroup[rootSetsInTestGroup.length - 1].latestCommitTime();
</del><ins>+ const commitSetsInTestGroup = this._currentTestGroup.requestedCommitSets();
+ const startTime = commitSetsInTestGroup[0].latestCommitTime();
+ const endTime = commitSetsInTestGroup[commitSetsInTestGroup.length - 1].latestCommitTime();
</ins><span class="cx"> if (startTime != endTime)
</span><span class="cx"> this._chartPane.setMainSelection([startTime, endTime]);
</span><span class="cx"> }
</span><span class="lines">@@ -512,15 +512,15 @@
</span><span class="cx"> _retryCurrentTestGroup(repetitionCount)
</span><span class="cx"> {
</span><span class="cx"> console.assert(this._currentTestGroup);
</span><del>- var testGroup = this._currentTestGroup;
- var newName = this._createRetryNameForTestGroup(testGroup.name());
- var rootSetList = testGroup.requestedRootSets();
</del><ins>+ const testGroup = this._currentTestGroup;
+ const newName = this._createRetryNameForTestGroup(testGroup.name());
+ const commitSetList = testGroup.requestedCommitSets();
</ins><span class="cx">
</span><del>- var rootSetMap = {};
- for (var rootSet of rootSetList)
- rootSetMap[testGroup.labelForRootSet(rootSet)] = rootSet;
</del><ins>+ const commitSetMap = {};
+ for (let commitSet of commitSetList)
+ commitSetMap[testGroup.labelForCommitSet(commitSet)] = commitSet;
</ins><span class="cx">
</span><del>- return this._createTestGroupAfterVerifyingRootSetList(newName, repetitionCount, rootSetMap);
</del><ins>+ return this._createTestGroupAfterVerifyingCommitSetList(newName, repetitionCount, commitSetMap);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> _chartSelectionDidChange()
</span><span class="lines">@@ -529,9 +529,9 @@
</span><span class="cx"> this.enqueueToRender();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _createNewTestGroupFromChart(name, repetitionCount, rootSetMap)
</del><ins>+ _createNewTestGroupFromChart(name, repetitionCount, commitSetMap)
</ins><span class="cx"> {
</span><del>- return this._createTestGroupAfterVerifyingRootSetList(name, repetitionCount, rootSetMap);
</del><ins>+ return this._createTestGroupAfterVerifyingCommitSetList(name, repetitionCount, commitSetMap);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> _selectedRowInAnalysisResultsViewer()
</span><span class="lines">@@ -539,39 +539,39 @@
</span><span class="cx"> this.enqueueToRender();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _createNewTestGroupFromViewer(name, repetitionCount, rootSetMap)
</del><ins>+ _createNewTestGroupFromViewer(name, repetitionCount, commitSetMap)
</ins><span class="cx"> {
</span><del>- return this._createTestGroupAfterVerifyingRootSetList(name, repetitionCount, rootSetMap);
</del><ins>+ return this._createTestGroupAfterVerifyingCommitSetList(name, repetitionCount, commitSetMap);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- _createTestGroupAfterVerifyingRootSetList(testGroupName, repetitionCount, rootSetMap)
</del><ins>+ _createTestGroupAfterVerifyingCommitSetList(testGroupName, repetitionCount, commitSetMap)
</ins><span class="cx"> {
</span><span class="cx"> if (this._hasDuplicateTestGroupName(testGroupName))
</span><span class="cx"> alert(`There is already a test group named "${testGroupName}"`);
</span><span class="cx">
</span><del>- var rootSetsByName = {};
- var firstLabel;
- for (firstLabel in rootSetMap) {
- var rootSet = rootSetMap[firstLabel];
- for (var repository of rootSet.repositories())
- rootSetsByName[repository.name()] = [];
</del><ins>+ const commitSetsByName = {};
+ let firstLabel;
+ for (firstLabel in commitSetMap) {
+ const commitSet = commitSetMap[firstLabel];
+ for (let repository of commitSet.repositories())
+ commitSetsByName[repository.name()] = [];
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- var setIndex = 0;
- for (var label in rootSetMap) {
- var rootSet = rootSetMap[label];
- for (var repository of rootSet.repositories()) {
- var list = rootSetsByName[repository.name()];
</del><ins>+ let setIndex = 0;
+ for (let label in commitSetMap) {
+ const commitSet = commitSetMap[label];
+ for (let repository of commitSet.repositories()) {
+ const list = commitSetsByName[repository.name()];
</ins><span class="cx"> if (!list) {
</span><span class="cx"> alert(`Set ${label} specifies ${repository.label()} but set ${firstLabel} does not.`);
</span><span class="cx"> return null;
</span><span class="cx"> }
</span><del>- list.push(rootSet.revisionForRepository(repository));
</del><ins>+ list.push(commitSet.revisionForRepository(repository));
</ins><span class="cx"> }
</span><span class="cx"> setIndex++;
</span><del>- for (var name in rootSetsByName) {
- var list = rootSetsByName[name];
</del><ins>+ for (let name in commitSetsByName) {
+ const list = commitSetsByName[name];
</ins><span class="cx"> if (list.length < setIndex) {
</span><span class="cx"> alert(`Set ${firstLabel} specifies ${name} but set ${label} does not.`);
</span><span class="cx"> return null;
</span><span class="lines">@@ -579,7 +579,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- TestGroup.createAndRefetchTestGroups(this._task, testGroupName, repetitionCount, rootSetsByName)
</del><ins>+ TestGroup.createAndRefetchTestGroups(this._task, testGroupName, repetitionCount, commitSetsByName)
</ins><span class="cx"> .then(this._didFetchTestGroups.bind(this), function (error) {
</span><span class="cx"> alert('Failed to create a new test group: ' + error);
</span><span class="cx"> });
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgservertestsapibuildrequeststestsjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/server-tests/api-build-requests-tests.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/server-tests/api-build-requests-tests.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/server-tests/api-build-requests-tests.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -28,14 +28,14 @@
</span><span class="cx"> }).then(function (content) {
</span><span class="cx"> assert.equal(content['status'], 'OK');
</span><span class="cx"> assert.deepEqual(content['buildRequests'], []);
</span><del>- assert.deepEqual(content['rootSets'], []);
- assert.deepEqual(content['roots'], []);
- assert.deepEqual(Object.keys(content).sort(), ['buildRequests', 'rootSets', 'roots', 'status']);
</del><ins>+ assert.deepEqual(content['commitSets'], []);
+ assert.deepEqual(content['commits'], []);
+ assert.deepEqual(Object.keys(content).sort(), ['buildRequests', 'commitSets', 'commits', 'status']);
</ins><span class="cx"> done();
</span><span class="cx"> }).catch(done);
</span><span class="cx"> });
</span><span class="cx">
</span><del>- it('should return build requets associated with a given triggerable with appropriate roots and rootSets', function (done) {
</del><ins>+ it('should return build requets associated with a given triggerable with appropriate commits and commitSets', function (done) {
</ins><span class="cx"> let db = TestServer.database();
</span><span class="cx"> db.connect().then(function () {
</span><span class="cx"> return MockData.addMockData(db);
</span><span class="lines">@@ -42,30 +42,30 @@
</span><span class="cx"> }).then(function () {
</span><span class="cx"> return TestServer.remoteAPI().getJSONWithStatus('/api/build-requests/build-webkit');
</span><span class="cx"> }).then(function (content) {
</span><del>- assert.deepEqual(Object.keys(content).sort(), ['buildRequests', 'rootSets', 'roots', 'status']);
</del><ins>+ assert.deepEqual(Object.keys(content).sort(), ['buildRequests', 'commitSets', 'commits', 'status']);
</ins><span class="cx">
</span><del>- assert.equal(content['rootSets'].length, 2);
- assert.equal(content['rootSets'][0].id, 401);
- assert.deepEqual(content['rootSets'][0].roots, ['87832', '93116']);
- assert.equal(content['rootSets'][1].id, 402);
- assert.deepEqual(content['rootSets'][1].roots, ['87832', '96336']);
</del><ins>+ assert.equal(content['commitSets'].length, 2);
+ assert.equal(content['commitSets'][0].id, 401);
+ assert.deepEqual(content['commitSets'][0].commits, ['87832', '93116']);
+ assert.equal(content['commitSets'][1].id, 402);
+ assert.deepEqual(content['commitSets'][1].commits, ['87832', '96336']);
</ins><span class="cx">
</span><del>- assert.equal(content['roots'].length, 3);
- assert.equal(content['roots'][0].id, 87832);
- assert.equal(content['roots'][0].repository, '9');
- assert.equal(content['roots'][0].revision, '10.11 15A284');
- assert.equal(content['roots'][1].id, 93116);
- assert.equal(content['roots'][1].repository, '11');
- assert.equal(content['roots'][1].revision, '191622');
- assert.equal(content['roots'][2].id, 96336);
- assert.equal(content['roots'][2].repository, '11');
- assert.equal(content['roots'][2].revision, '192736');
</del><ins>+ assert.equal(content['commits'].length, 3);
+ assert.equal(content['commits'][0].id, 87832);
+ assert.equal(content['commits'][0].repository, '9');
+ assert.equal(content['commits'][0].revision, '10.11 15A284');
+ assert.equal(content['commits'][1].id, 93116);
+ assert.equal(content['commits'][1].repository, '11');
+ assert.equal(content['commits'][1].revision, '191622');
+ assert.equal(content['commits'][2].id, 96336);
+ assert.equal(content['commits'][2].repository, '11');
+ assert.equal(content['commits'][2].revision, '192736');
</ins><span class="cx">
</span><span class="cx"> assert.equal(content['buildRequests'].length, 4);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][0].id, 700);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][0].order, 0);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][0].platform, '65');
</span><del>- assert.deepEqual(content['buildRequests'][0].rootSet, 401);
</del><ins>+ assert.deepEqual(content['buildRequests'][0].commitSet, 401);
</ins><span class="cx"> assert.deepEqual(content['buildRequests'][0].status, 'pending');
</span><span class="cx"> assert.deepEqual(content['buildRequests'][0].test, '200');
</span><span class="cx">
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx"> assert.deepEqual(content['buildRequests'][1].id, 701);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][1].order, 1);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][1].platform, '65');
</span><del>- assert.deepEqual(content['buildRequests'][1].rootSet, 402);
</del><ins>+ assert.deepEqual(content['buildRequests'][1].commitSet, 402);
</ins><span class="cx"> assert.deepEqual(content['buildRequests'][1].status, 'pending');
</span><span class="cx"> assert.deepEqual(content['buildRequests'][1].test, '200');
</span><span class="cx">
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> assert.deepEqual(content['buildRequests'][2].id, 702);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][2].order, 2);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][2].platform, '65');
</span><del>- assert.deepEqual(content['buildRequests'][2].rootSet, 401);
</del><ins>+ assert.deepEqual(content['buildRequests'][2].commitSet, 401);
</ins><span class="cx"> assert.deepEqual(content['buildRequests'][2].status, 'pending');
</span><span class="cx"> assert.deepEqual(content['buildRequests'][2].test, '200');
</span><span class="cx">
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx"> assert.deepEqual(content['buildRequests'][3].id, 703);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][3].order, 3);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][3].platform, '65');
</span><del>- assert.deepEqual(content['buildRequests'][3].rootSet, 402);
</del><ins>+ assert.deepEqual(content['buildRequests'][3].commitSet, 402);
</ins><span class="cx"> assert.deepEqual(content['buildRequests'][3].status, 'pending');
</span><span class="cx"> assert.deepEqual(content['buildRequests'][3].test, '200');
</span><span class="cx"> done();
</span><span class="lines">@@ -100,30 +100,30 @@
</span><span class="cx"> }).then(function () {
</span><span class="cx"> return TestServer.remoteAPI().getJSONWithStatus('/api/build-requests/build-webkit?useLegacyIdResolution=true');
</span><span class="cx"> }).then(function (content) {
</span><del>- assert.deepEqual(Object.keys(content).sort(), ['buildRequests', 'rootSets', 'roots', 'status']);
</del><ins>+ assert.deepEqual(Object.keys(content).sort(), ['buildRequests', 'commitSets', 'commits', 'status']);
</ins><span class="cx">
</span><del>- assert.equal(content['rootSets'].length, 2);
- assert.equal(content['rootSets'][0].id, 401);
- assert.deepEqual(content['rootSets'][0].roots, ['87832', '93116']);
- assert.equal(content['rootSets'][1].id, 402);
- assert.deepEqual(content['rootSets'][1].roots, ['87832', '96336']);
</del><ins>+ assert.equal(content['commitSets'].length, 2);
+ assert.equal(content['commitSets'][0].id, 401);
+ assert.deepEqual(content['commitSets'][0].commits, ['87832', '93116']);
+ assert.equal(content['commitSets'][1].id, 402);
+ assert.deepEqual(content['commitSets'][1].commits, ['87832', '96336']);
</ins><span class="cx">
</span><del>- assert.equal(content['roots'].length, 3);
- assert.equal(content['roots'][0].id, 87832);
- assert.equal(content['roots'][0].repository, 'OS X');
- assert.equal(content['roots'][0].revision, '10.11 15A284');
- assert.equal(content['roots'][1].id, 93116);
- assert.equal(content['roots'][1].repository, 'WebKit');
- assert.equal(content['roots'][1].revision, '191622');
- assert.equal(content['roots'][2].id, 96336);
- assert.equal(content['roots'][2].repository, 'WebKit');
- assert.equal(content['roots'][2].revision, '192736');
</del><ins>+ assert.equal(content['commits'].length, 3);
+ assert.equal(content['commits'][0].id, 87832);
+ assert.equal(content['commits'][0].repository, 'OS X');
+ assert.equal(content['commits'][0].revision, '10.11 15A284');
+ assert.equal(content['commits'][1].id, 93116);
+ assert.equal(content['commits'][1].repository, 'WebKit');
+ assert.equal(content['commits'][1].revision, '191622');
+ assert.equal(content['commits'][2].id, 96336);
+ assert.equal(content['commits'][2].repository, 'WebKit');
+ assert.equal(content['commits'][2].revision, '192736');
</ins><span class="cx">
</span><span class="cx"> assert.equal(content['buildRequests'].length, 4);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][0].id, 700);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][0].order, 0);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][0].platform, 'some platform');
</span><del>- assert.deepEqual(content['buildRequests'][0].rootSet, 401);
</del><ins>+ assert.deepEqual(content['buildRequests'][0].commitSet, 401);
</ins><span class="cx"> assert.deepEqual(content['buildRequests'][0].status, 'pending');
</span><span class="cx"> assert.deepEqual(content['buildRequests'][0].test, ['some test']);
</span><span class="cx">
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx"> assert.deepEqual(content['buildRequests'][1].id, 701);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][1].order, 1);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][1].platform, 'some platform');
</span><del>- assert.deepEqual(content['buildRequests'][1].rootSet, 402);
</del><ins>+ assert.deepEqual(content['buildRequests'][1].commitSet, 402);
</ins><span class="cx"> assert.deepEqual(content['buildRequests'][1].status, 'pending');
</span><span class="cx"> assert.deepEqual(content['buildRequests'][1].test, ['some test']);
</span><span class="cx">
</span><span class="lines">@@ -137,7 +137,7 @@
</span><span class="cx"> assert.deepEqual(content['buildRequests'][2].id, 702);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][2].order, 2);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][2].platform, 'some platform');
</span><del>- assert.deepEqual(content['buildRequests'][2].rootSet, 401);
</del><ins>+ assert.deepEqual(content['buildRequests'][2].commitSet, 401);
</ins><span class="cx"> assert.deepEqual(content['buildRequests'][2].status, 'pending');
</span><span class="cx"> assert.deepEqual(content['buildRequests'][2].test, ['some test']);
</span><span class="cx">
</span><span class="lines">@@ -144,7 +144,7 @@
</span><span class="cx"> assert.deepEqual(content['buildRequests'][3].id, 703);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][3].order, 3);
</span><span class="cx"> assert.deepEqual(content['buildRequests'][3].platform, 'some platform');
</span><del>- assert.deepEqual(content['buildRequests'][3].rootSet, 402);
</del><ins>+ assert.deepEqual(content['buildRequests'][3].commitSet, 402);
</ins><span class="cx"> assert.deepEqual(content['buildRequests'][3].status, 'pending');
</span><span class="cx"> assert.deepEqual(content['buildRequests'][3].test, ['some test']);
</span><span class="cx"> done();
</span><span class="lines">@@ -173,7 +173,7 @@
</span><span class="cx"> assert.equal(buildRequests[0].test(), test);
</span><span class="cx"> assert.equal(buildRequests[0].platform(), platform);
</span><span class="cx"> assert.equal(buildRequests[0].order(), 0);
</span><del>- assert.ok(buildRequests[0].rootSet() instanceof RootSet);
</del><ins>+ assert.ok(buildRequests[0].commitSet() instanceof CommitSet);
</ins><span class="cx"> assert.ok(!buildRequests[0].hasFinished());
</span><span class="cx"> assert.ok(!buildRequests[0].hasStarted());
</span><span class="cx"> assert.ok(buildRequests[0].isPending());
</span><span class="lines">@@ -184,7 +184,7 @@
</span><span class="cx"> assert.equal(buildRequests[1].test(), test);
</span><span class="cx"> assert.equal(buildRequests[1].platform(), platform);
</span><span class="cx"> assert.equal(buildRequests[1].order(), 1);
</span><del>- assert.ok(buildRequests[1].rootSet() instanceof RootSet);
</del><ins>+ assert.ok(buildRequests[1].commitSet() instanceof CommitSet);
</ins><span class="cx"> assert.ok(!buildRequests[1].hasFinished());
</span><span class="cx"> assert.ok(!buildRequests[1].hasStarted());
</span><span class="cx"> assert.ok(buildRequests[1].isPending());
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx"> assert.equal(buildRequests[2].test(), test);
</span><span class="cx"> assert.equal(buildRequests[2].platform(), platform);
</span><span class="cx"> assert.equal(buildRequests[2].order(), 2);
</span><del>- assert.ok(buildRequests[2].rootSet() instanceof RootSet);
</del><ins>+ assert.ok(buildRequests[2].commitSet() instanceof CommitSet);
</ins><span class="cx"> assert.ok(!buildRequests[2].hasFinished());
</span><span class="cx"> assert.ok(!buildRequests[2].hasStarted());
</span><span class="cx"> assert.ok(buildRequests[2].isPending());
</span><span class="lines">@@ -206,7 +206,7 @@
</span><span class="cx"> assert.equal(buildRequests[3].test(), test);
</span><span class="cx"> assert.equal(buildRequests[3].platform(), platform);
</span><span class="cx"> assert.equal(buildRequests[3].order(), 3);
</span><del>- assert.ok(buildRequests[3].rootSet() instanceof RootSet);
</del><ins>+ assert.ok(buildRequests[3].commitSet() instanceof CommitSet);
</ins><span class="cx"> assert.ok(!buildRequests[3].hasFinished());
</span><span class="cx"> assert.ok(!buildRequests[3].hasStarted());
</span><span class="cx"> assert.ok(buildRequests[3].isPending());
</span><span class="lines">@@ -218,27 +218,27 @@
</span><span class="cx"> let webkit = Repository.findById(11);
</span><span class="cx"> assert.equal(webkit.name(), 'WebKit');
</span><span class="cx">
</span><del>- let firstRootSet = buildRequests[0].rootSet();
- assert.equal(buildRequests[2].rootSet(), firstRootSet);
</del><ins>+ let firstCommitSet = buildRequests[0].commitSet();
+ assert.equal(buildRequests[2].commitSet(), firstCommitSet);
</ins><span class="cx">
</span><del>- let secondRootSet = buildRequests[1].rootSet();
- assert.equal(buildRequests[3].rootSet(), secondRootSet);
</del><ins>+ let secondCommitSet = buildRequests[1].commitSet();
+ assert.equal(buildRequests[3].commitSet(), secondCommitSet);
</ins><span class="cx">
</span><del>- assert.equal(firstRootSet.revisionForRepository(osx), '10.11 15A284');
- assert.equal(firstRootSet.revisionForRepository(webkit), '191622');
</del><ins>+ assert.equal(firstCommitSet.revisionForRepository(osx), '10.11 15A284');
+ assert.equal(firstCommitSet.revisionForRepository(webkit), '191622');
</ins><span class="cx">
</span><del>- assert.equal(secondRootSet.revisionForRepository(osx), '10.11 15A284');
- assert.equal(secondRootSet.revisionForRepository(webkit), '192736');
</del><ins>+ assert.equal(secondCommitSet.revisionForRepository(osx), '10.11 15A284');
+ assert.equal(secondCommitSet.revisionForRepository(webkit), '192736');
</ins><span class="cx">
</span><del>- let osxCommit = firstRootSet.commitForRepository(osx);
</del><ins>+ let osxCommit = firstCommitSet.commitForRepository(osx);
</ins><span class="cx"> assert.equal(osxCommit.revision(), '10.11 15A284');
</span><del>- assert.equal(osxCommit, secondRootSet.commitForRepository(osx));
</del><ins>+ assert.equal(osxCommit, secondCommitSet.commitForRepository(osx));
</ins><span class="cx">
</span><del>- let firstWebKitCommit = firstRootSet.commitForRepository(webkit);
</del><ins>+ let firstWebKitCommit = firstCommitSet.commitForRepository(webkit);
</ins><span class="cx"> assert.equal(firstWebKitCommit.revision(), '191622');
</span><span class="cx"> assert.equal(+firstWebKitCommit.time(), 1445945816878);
</span><span class="cx">
</span><del>- let secondWebKitCommit = secondRootSet.commitForRepository(webkit);
</del><ins>+ let secondWebKitCommit = secondCommitSet.commitForRepository(webkit);
</ins><span class="cx"> assert.equal(secondWebKitCommit.revision(), '192736');
</span><span class="cx"> assert.equal(+secondWebKitCommit.time(), 1448225325650);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgservertestsresourcesmockdatajs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/server-tests/resources/mock-data.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/server-tests/resources/mock-data.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/server-tests/resources/mock-data.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -12,7 +12,7 @@
</span><span class="cx"> Metric.clearStaticMap();
</span><span class="cx"> Platform.clearStaticMap();
</span><span class="cx"> Repository.clearStaticMap();
</span><del>- RootSet.clearStaticMap();
</del><ins>+ CommitSet.clearStaticMap();
</ins><span class="cx"> Test.clearStaticMap();
</span><span class="cx"> TestGroup.clearStaticMap();
</span><span class="cx"> Triggerable.clearStaticMap();
</span><span class="lines">@@ -35,18 +35,18 @@
</span><span class="cx"> db.insert('tests', {id: MockData.someTestId(), name: 'some test'}),
</span><span class="cx"> db.insert('test_metrics', {id: 300, test: 200, name: 'some metric'}),
</span><span class="cx"> db.insert('test_configurations', {id: 301, metric: 300, platform: 65, type: 'current'}),
</span><del>- db.insert('root_sets', {id: 401}),
- db.insert('roots', {set: 401, commit: 87832}),
- db.insert('roots', {set: 401, commit: 93116}),
- db.insert('root_sets', {id: 402}),
- db.insert('roots', {set: 402, commit: 87832}),
- db.insert('roots', {set: 402, commit: 96336}),
</del><ins>+ db.insert('commit_sets', {id: 401}),
+ db.insert('commit_set_relationships', {set: 401, commit: 87832}),
+ db.insert('commit_set_relationships', {set: 401, commit: 93116}),
+ db.insert('commit_sets', {id: 402}),
+ db.insert('commit_set_relationships', {set: 402, commit: 87832}),
+ db.insert('commit_set_relationships', {set: 402, commit: 96336}),
</ins><span class="cx"> db.insert('analysis_tasks', {id: 500, platform: 65, metric: 300, name: 'some task'}),
</span><span class="cx"> db.insert('analysis_test_groups', {id: 600, task: 500, name: 'some test group'}),
</span><del>- db.insert('build_requests', {id: 700, status: statusList[0], triggerable: 1, platform: 65, test: 200, group: 600, order: 0, root_set: 401}),
- db.insert('build_requests', {id: 701, status: statusList[1], triggerable: 1, platform: 65, test: 200, group: 600, order: 1, root_set: 402}),
- db.insert('build_requests', {id: 702, status: statusList[2], triggerable: 1, platform: 65, test: 200, group: 600, order: 2, root_set: 401}),
- db.insert('build_requests', {id: 703, status: statusList[3], triggerable: 1, platform: 65, test: 200, group: 600, order: 3, root_set: 402}),
</del><ins>+ db.insert('build_requests', {id: 700, status: statusList[0], triggerable: 1, platform: 65, test: 200, group: 600, order: 0, commit_set: 401}),
+ db.insert('build_requests', {id: 701, status: statusList[1], triggerable: 1, platform: 65, test: 200, group: 600, order: 1, commit_set: 402}),
+ db.insert('build_requests', {id: 702, status: statusList[2], triggerable: 1, platform: 65, test: 200, group: 600, order: 2, commit_set: 401}),
+ db.insert('build_requests', {id: 703, status: statusList[3], triggerable: 1, platform: 65, test: 200, group: 600, order: 3, commit_set: 402}),
</ins><span class="cx"> ]);
</span><span class="cx"> },
</span><span class="cx"> addAnotherMockTestGroup: function (db, statusList, author)
</span><span class="lines">@@ -55,10 +55,10 @@
</span><span class="cx"> statusList = ['pending', 'pending', 'pending', 'pending'];
</span><span class="cx"> return Promise.all([
</span><span class="cx"> db.insert('analysis_test_groups', {id: 601, task: 500, name: 'another test group', author: author}),
</span><del>- db.insert('build_requests', {id: 713, status: statusList[3], triggerable: 1, platform: 65, test: 200, group: 601, order: 3, root_set: 402}),
- db.insert('build_requests', {id: 710, status: statusList[0], triggerable: 1, platform: 65, test: 200, group: 601, order: 0, root_set: 401}),
- db.insert('build_requests', {id: 712, status: statusList[2], triggerable: 1, platform: 65, test: 200, group: 601, order: 2, root_set: 401}),
- db.insert('build_requests', {id: 711, status: statusList[1], triggerable: 1, platform: 65, test: 200, group: 601, order: 1, root_set: 402}),
</del><ins>+ db.insert('build_requests', {id: 713, status: statusList[3], triggerable: 1, platform: 65, test: 200, group: 601, order: 3, commit_set: 402}),
+ db.insert('build_requests', {id: 710, status: statusList[0], triggerable: 1, platform: 65, test: 200, group: 601, order: 0, commit_set: 401}),
+ db.insert('build_requests', {id: 712, status: statusList[2], triggerable: 1, platform: 65, test: 200, group: 601, order: 2, commit_set: 401}),
+ db.insert('build_requests', {id: 711, status: statusList[1], triggerable: 1, platform: 65, test: 200, group: 601, order: 1, commit_set: 402}),
</ins><span class="cx"> ]);
</span><span class="cx"> },
</span><span class="cx"> mockTestSyncConfigWithSingleBuilder: function ()
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgtoolsdetectchangesjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/tools/detect-changes.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/tools/detect-changes.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/tools/detect-changes.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -252,19 +252,19 @@
</span><span class="cx"> throw response;
</span><span class="cx">
</span><span class="cx"> var triggerable = response['triggerables'][0];
</span><del>- var rootSets = {};
</del><ins>+ var commitSets = {};
</ins><span class="cx"> for (var repositoryId of triggerable['acceptedRepositories']) {
</span><span class="cx"> var startRevision = range.startMeasurement.revisionForRepository(repositoryId);
</span><span class="cx"> var endRevision = range.endMeasurement.revisionForRepository(repositoryId);
</span><span class="cx"> if (startRevision == null || endRevision == null)
</span><span class="cx"> continue;
</span><del>- rootSets[config.repositories[repositoryId].name] = [startRevision, endRevision];
</del><ins>+ commitSets[config.repositories[repositoryId].name] = [startRevision, endRevision];
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> var testData = {
</span><span class="cx"> task: analysisTaskId,
</span><span class="cx"> name: 'Confirming the ' + changeType,
</span><del>- rootSets: rootSets,
</del><ins>+ commitSets: commitSets,
</ins><span class="cx"> repetitionCount: Math.max(2, Math.min(8, Math.floor((range.endIndex - range.startIndex) / 4))),
</span><span class="cx">
</span><span class="cx"> slaveName: settings.slave.name,
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgtoolsjsbuildbotsyncerjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/tools/js/buildbot-syncer.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/tools/js/buildbot-syncer.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/tools/js/buildbot-syncer.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -200,11 +200,11 @@
</span><span class="cx"> {
</span><span class="cx"> assert(buildRequest instanceof BuildRequest);
</span><span class="cx">
</span><del>- let rootSet = buildRequest.rootSet();
- assert(rootSet instanceof RootSet);
</del><ins>+ const commitSet = buildRequest.commitSet();
+ assert(commitSet instanceof CommitSet);
</ins><span class="cx">
</span><del>- let repositoryByName = {};
- for (let repository of rootSet.repositories())
</del><ins>+ const repositoryByName = {};
+ for (let repository of commitSet.repositories())
</ins><span class="cx"> repositoryByName[repository.name()] = repository;
</span><span class="cx">
</span><span class="cx"> let propertiesTemplate = null;
</span><span class="lines">@@ -223,14 +223,14 @@
</span><span class="cx"> let repositoryName = value['root'];
</span><span class="cx"> let repository = repositoryByName[repositoryName];
</span><span class="cx"> assert(repository, `"${repositoryName}" must be specified`);
</span><del>- properties[key] = rootSet.revisionForRepository(repository);
</del><ins>+ properties[key] = commitSet.revisionForRepository(repository);
</ins><span class="cx"> } else if ('rootOptions' in value) {
</span><span class="cx"> const filteredOptions = value['rootOptions'].filter((option) => option in repositoryByName);
</span><span class="cx"> assert.equal(filteredOptions.length, 1, `There should be exactly one valid root among "${value['rootOptions']}".`);
</span><del>- properties[key] = rootSet.revisionForRepository(repositoryByName[filteredOptions[0]]);
</del><ins>+ properties[key] = commitSet.revisionForRepository(repositoryByName[filteredOptions[0]]);
</ins><span class="cx"> }
</span><span class="cx"> else if ('rootsExcluding' in value) {
</span><del>- let revisionSet = this._revisionSetFromRootSetWithExclusionList(rootSet, value['rootsExcluding']);
</del><ins>+ let revisionSet = this._revisionSetFromCommitSetWithExclusionList(commitSet, value['rootsExcluding']);
</ins><span class="cx"> properties[key] = JSON.stringify(revisionSet);
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -240,13 +240,13 @@
</span><span class="cx"> return properties;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _revisionSetFromRootSetWithExclusionList(rootSet, exclusionList)
</del><ins>+ _revisionSetFromCommitSetWithExclusionList(commitSet, exclusionList)
</ins><span class="cx"> {
</span><del>- let revisionSet = {};
- for (let repository of rootSet.repositories()) {
</del><ins>+ const revisionSet = {};
+ for (let repository of commitSet.repositories()) {
</ins><span class="cx"> if (exclusionList.indexOf(repository.name()) >= 0)
</span><span class="cx"> continue;
</span><del>- let commit = rootSet.commitForRepository(repository);
</del><ins>+ const commit = commitSet.commitForRepository(repository);
</ins><span class="cx"> revisionSet[repository.name()] = {
</span><span class="cx"> id: commit.id(),
</span><span class="cx"> time: +commit.time(),
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgtoolsjsdatabasejs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/tools/js/database.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/tools/js/database.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/tools/js/database.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -148,8 +148,8 @@
</span><span class="cx"> 'platforms': 'platform',
</span><span class="cx"> 'reports': 'report',
</span><span class="cx"> 'repositories': 'repository',
</span><del>- 'root_sets': 'rootset',
- 'roots': 'root',
</del><ins>+ 'commit_sets': 'commitset',
+ 'commit_set_relationships': 'commitset',
</ins><span class="cx"> 'run_iterations': 'iteration',
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgtoolsjsv3modelsjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/tools/js/v3-models.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/tools/js/v3-models.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/tools/js/v3-models.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -22,8 +22,8 @@
</span><span class="cx"> importFromV3('models/metric.js', 'Metric');
</span><span class="cx"> importFromV3('models/platform.js', 'Platform');
</span><span class="cx"> importFromV3('models/repository.js', 'Repository');
</span><del>-importFromV3('models/root-set.js', 'MeasurementRootSet');
-importFromV3('models/root-set.js', 'RootSet');
</del><ins>+importFromV3('models/commit-set.js', 'MeasurementCommitSet');
+importFromV3('models/commit-set.js', 'CommitSet');
</ins><span class="cx"> importFromV3('models/test.js', 'Test');
</span><span class="cx"> importFromV3('models/test-group.js', 'TestGroup');
</span><span class="cx"> importFromV3('models/time-series.js', 'TimeSeries');
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgtoolssyncbuildbotjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/tools/sync-buildbot.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/tools/sync-buildbot.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/tools/sync-buildbot.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> global.Metric.clearStaticMap();
</span><span class="cx"> global.Platform.clearStaticMap();
</span><span class="cx"> global.Repository.clearStaticMap();
</span><del>- global.RootSet.clearStaticMap();
</del><ins>+ global.CommitSet.clearStaticMap();
</ins><span class="cx"> global.Test.clearStaticMap();
</span><span class="cx"> global.TestGroup.clearStaticMap();
</span><span class="cx"> global.Triggerable.clearStaticMap();
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgtoolssyncwithbuildbotpy"></a>
<div class="delfile"><h4>Deleted: trunk/Websites/perf.webkit.org/tools/sync-with-buildbot.py (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/tools/sync-with-buildbot.py        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/tools/sync-with-buildbot.py        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -1,244 +0,0 @@
</span><del>-#!/usr/bin/python
-
-import argparse
-import base64
-import copy
-import json
-import sys
-import time
-import urllib
-import urllib2
-
-from util import load_server_config
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('--triggerable', required=True, help='The name of the triggerable to process. e.g. build-webkit')
- parser.add_argument('--buildbot-url', required=True, help='URL for a buildbot builder; e.g. "https://build.webkit.org/"')
- parser.add_argument('--builder-config-json', required=True, help='The path to a JSON file that specifies which test and platform will be posted to which builder. '
- 'The JSON should contain an array of dictionaries with keys "platform", "test", and "builder" '
- 'with the platform name (e.g. mountainlion), the test path (e.g. ["Parser", "html5-full-render"]), and the builder name (e.g. Apple MountainLion Release (Perf)) as values.')
- parser.add_argument('--server-config-json', required=True, help='The path to a JSON file that specifies the perf dashboard.')
-
- parser.add_argument('--lookback-count', type=int, default=10, help='The number of builds to look back when finding in-progress builds on the buildbot')
- parser.add_argument('--seconds-to-sleep', type=float, default=120, help='The seconds to sleep between iterations')
- args = parser.parse_args()
-
- configurations = load_config(args.builder_config_json, args.buildbot_url.strip('/'))
-
- request_updates = {}
- while True:
- server_config = load_server_config(args.server_config_json)
- request_updates.update(find_request_updates(configurations, args.lookback_count))
- if request_updates:
- print 'Updating the build requests %s...' % ', '.join(map(str, request_updates.keys()))
- else:
- print 'No updates...'
-
- payload = {
- 'buildRequestUpdates': request_updates,
- 'slaveName': server_config['slave']['name'],
- 'slavePassword': server_config['slave']['password']}
-
- build_requests_url = server_config['server']['url'] + '/api/build-requests/' + args.triggerable + '?useLegacyIdResolution=true'
- response = update_and_fetch_build_requests(build_requests_url, payload)
- open_requests = response.get('buildRequests', [])
-
- root_sets = organize_root_sets_by_id_and_repository_names(response.get('rootSets', {}), response.get('roots', []))
-
- for request in filter(lambda request: request['status'] == 'pending', open_requests):
- config = config_for_request(configurations, request)
- if not config:
- print >> sys.stderr, "Failed to find the configuration for request %s: %s" % (str(request['id']), json.dumps(request))
- continue
- if config and len(config['scheduledRequests']) < 1:
- print "Scheduling the build request %s..." % str(request['id'])
- schedule_request(config, request, root_sets)
-
- request_updates = find_stale_request_updates(configurations, open_requests, request_updates.keys())
- if request_updates:
- print "Found stale build requests %s..." % ', '.join(map(str, request_updates.keys()))
-
- time.sleep(args.seconds_to_sleep)
-
-
-def load_config(config_json_path, buildbot_url):
- with open(config_json_path) as config_json:
- options = json.load(config_json)
-
- shared_config = options['shared']
- type_config = options['types']
- builder_config = options['builders']
-
- def merge(config, config_to_merge):
- for key, value in config_to_merge.iteritems():
- if isinstance(value, dict):
- config.setdefault(key, {})
- config[key].update(value)
- else:
- config[key] = value
-
- scheduled_requests_by_builder = {}
-
- configurations = options['configurations']
- for config in configurations:
-
- merge(config, shared_config)
- merge(config, type_config[config.pop('type')])
- merge(config, builder_config[config.pop('builder')])
-
- escaped_builder_name = urllib.quote(config['builder'])
- config['url'] = '%s/builders/%s/' % (buildbot_url, escaped_builder_name)
- config['jsonURL'] = '%s/json/builders/%s/' % (buildbot_url, escaped_builder_name)
-
- scheduled_requests_by_builder.setdefault(config['builder'], set())
- config['scheduledRequests'] = scheduled_requests_by_builder[config['builder']]
-
- return configurations
-
-
-def find_request_updates(configurations, lookback_count):
- request_updates = {}
-
- for config in configurations:
- config['scheduledRequests'].clear()
-
- for config in configurations:
- try:
- pending_builds = fetch_json(config['jsonURL'] + 'pendingBuilds')
- scheduled_requests = filter(None, [request_id_from_build(config, build) for build in pending_builds])
- for request_id in scheduled_requests:
- request_updates[request_id] = {'status': 'scheduled', 'url': config['url']}
- config['scheduledRequests'].add(request_id)
- except (IOError, ValueError) as error:
- print >> sys.stderr, "Failed to fetch pending builds for %s: %s" % (config['builder'], str(error))
-
- for config in configurations:
- for i in range(1, lookback_count + 1):
- build_error = None
- build_index = -i
- try:
- build = fetch_json(config['jsonURL'] + 'builds/%d' % build_index)
- request_id = request_id_from_build(config, build)
- if not request_id:
- continue
-
- in_progress = build.get('currentStep')
- if in_progress:
- request_updates[request_id] = {'status': 'running', 'url': config['url']}
- config['scheduledRequests'].discard(request_id)
- else:
- url = config['url'] + 'builds/' + str(build['number'])
- request_updates[request_id] = {'status': 'failedIfNotCompleted', 'url': url}
- except urllib2.HTTPError as error:
- if error.code == 404:
- break
- else:
- build_error = error
- except ValueError as error:
- build_error = error
- if build_error:
- print >> sys.stderr, "Failed to fetch build %d for %s: %s" % (build_index, config['builder'], str(build_error))
-
- return request_updates
-
-
-def update_and_fetch_build_requests(build_requests_url, payload):
- try:
- response = fetch_json(build_requests_url, payload=json.dumps(payload))
- if response['status'] != 'OK':
- raise ValueError(response['status'])
- return response
- except (IOError, ValueError) as error:
- print >> sys.stderr, 'Failed to update or fetch build requests at %s: %s' % (build_requests_url, str(error))
- return {}
-
-
-def find_stale_request_updates(configurations, open_requests, requests_on_buildbot):
- request_updates = {}
- for request in open_requests:
- request_id = int(request['id'])
- should_be_on_buildbot = request['status'] in ('scheduled', 'running')
- if should_be_on_buildbot and request_id not in requests_on_buildbot:
- config = config_for_request(configurations, request)
- if config:
- request_updates[request_id] = {'status': 'failed', 'url': config['url']}
- return request_updates
-
-
-def organize_root_sets_by_id_and_repository_names(root_sets, roots):
- result = {}
- root_by_id = {}
- for root in roots:
- root_by_id[root['id']] = root
-
- for root_set in root_sets:
- roots_by_repository = {}
- for root_id in root_set['roots']:
- root = root_by_id[root_id]
- roots_by_repository[root['repository']] = root
- result[root_set['id']] = roots_by_repository
-
- return result
-
-
-def schedule_request(config, request, root_sets):
- roots = root_sets[request['rootSet']]
- payload = {}
- for property_name, property_value in config['arguments'].iteritems():
- if not isinstance(property_value, dict):
- payload[property_name] = property_value
- elif 'root' in property_value:
- repository_name = property_value['root']
- if repository_name in roots:
- payload[property_name] = roots[repository_name]['revision']
- elif 'rootsExcluding' in property_value:
- excluded_roots = property_value['rootsExcluding']
- filtered_roots = {}
- for root_name in roots:
- if root_name not in excluded_roots:
- filtered_roots[root_name] = roots[root_name]
- payload[property_name] = json.dumps(filtered_roots)
- else:
- print >> sys.stderr, "Failed to process an argument %s: %s" % (property_name, property_value)
- return
- payload[config['buildRequestArgument']] = request['id']
-
- try:
- urllib2.urlopen(urllib2.Request(config['url'] + 'force'), urllib.urlencode(payload))
- config['scheduledRequests'].add(request['id'])
- except (IOError, ValueError) as error:
- print >> sys.stderr, "Failed to fetch pending builds for %s: %s" % (config['builder'], str(error))
-
-
-def config_for_request(configurations, request):
- for config in configurations:
- if config['platform'] == request['platform'] and config['test'] == request['test']:
- return config
- return None
-
-
-def fetch_json(url, payload=None):
- request = urllib2.Request(url)
- response = urllib2.urlopen(request, payload).read()
- try:
- return json.loads(response)
- except ValueError as error:
- raise ValueError(str(error) + '\n' + response)
-
-
-def property_value_from_build(build, name):
- for prop in build.get('properties', []):
- if prop[0] == name:
- return prop[1]
- return None
-
-
-def request_id_from_build(config, build):
- job_id = property_value_from_build(build, config['buildRequestArgument'])
- return int(job_id) if job_id and job_id.isdigit() else None
-
-
-if __name__ == "__main__":
- main()
</del></span></pre></div>
<a id="trunkWebsitesperfwebkitorgunittestsanalysistasktestsjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/unit-tests/analysis-task-tests.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/unit-tests/analysis-task-tests.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/unit-tests/analysis-task-tests.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -207,7 +207,7 @@
</span><span class="cx"> var adaptor = new MeasurementAdaptor(measurementCluster().formatMap);
</span><span class="cx"> var adaptedMeasurement = adaptor.applyTo(measurementCluster().configurations.current[0]);
</span><span class="cx"> assert.equal(adaptedMeasurement.id, 37188161);
</span><del>- assert.equal(adaptedMeasurement.rootSet().commitForRepository(MockModels.webkit).revision(), '196051');
</del><ins>+ assert.equal(adaptedMeasurement.commitSet().commitForRepository(MockModels.webkit).revision(), '196051');
</ins><span class="cx">
</span><span class="cx"> var promise = AnalysisTask.fetchAll();
</span><span class="cx"> requests[0].resolve(sampleAnalysisTask());
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgunittestsbuildrequesttestsjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/unit-tests/build-request-tests.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/unit-tests/build-request-tests.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/unit-tests/build-request-tests.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -15,20 +15,20 @@
</span><span class="cx"> "platform": "31",
</span><span class="cx"> "testGroup": "2128",
</span><span class="cx"> "order": "0",
</span><del>- "rootSet": "4255",
</del><ins>+ "commitSet": "4255",
</ins><span class="cx"> "status": "pending",
</span><span class="cx"> "url": null,
</span><span class="cx"> "build": null,
</span><span class="cx"> "createdAt": 1458688514000
</span><span class="cx"> }],
</span><del>- "rootSets": [{
</del><ins>+ "commitSets": [{
</ins><span class="cx"> "id": "4255",
</span><del>- "roots": ["87832", "93116"]
</del><ins>+ "commits": ["87832", "93116"]
</ins><span class="cx"> }, {
</span><span class="cx"> "id": "4256",
</span><del>- "roots": ["87832", "96336"]
</del><ins>+ "commits": ["87832", "96336"]
</ins><span class="cx"> }],
</span><del>- "roots": [{
</del><ins>+ "commits": [{
</ins><span class="cx"> "id": "87832",
</span><span class="cx"> "repository": "9",
</span><span class="cx"> "revision": "10.11 15A284",
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgunittestsbuildbotsyncertestsjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-let sampleRootSetData = {
</del><ins>+let sampleCommitSetData = {
</ins><span class="cx"> 'WebKit': {
</span><span class="cx"> 'id': '111127',
</span><span class="cx"> 'time': 1456955807334,
</span><span class="lines">@@ -207,7 +207,7 @@
</span><span class="cx"> assert(platform instanceof Platform);
</span><span class="cx"> assert(test instanceof Test);
</span><span class="cx">
</span><del>- let rootSet = RootSet.ensureSingleton('4197', {roots: [
</del><ins>+ let commitSet = CommitSet.ensureSingleton('4197', {commits: [
</ins><span class="cx"> {'id': '111127', 'time': 1456955807334, 'repository': MockModels.webkit, 'revision': '197463'},
</span><span class="cx"> {'id': '111237', 'time': 1456931874000, 'repository': MockModels.sharedRepository, 'revision': '80229'},
</span><span class="cx"> {'id': '111239', 'time': 1456931874000, 'repository': MockModels.webkitGit, 'revision': '9abcdef'},
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx"> {'id': '88930', 'time': 0, 'repository': MockModels.ios, 'revision': '13A452'},
</span><span class="cx"> ]});
</span><span class="cx">
</span><del>- let request = BuildRequest.ensureSingleton('16733-' + platform.id(), {'rootSet': rootSet, 'status': 'pending', 'platform': platform, 'test': test});
</del><ins>+ let request = BuildRequest.ensureSingleton('16733-' + platform.id(), {'commitSet': commitSet, 'status': 'pending', 'platform': platform, 'test': test});
</ins><span class="cx"> return request;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -231,7 +231,7 @@
</span><span class="cx"> ['reason', 'force build','Force Build Form'],
</span><span class="cx"> [
</span><span class="cx"> 'roots_dict',
</span><del>- JSON.stringify(sampleRootSetData),
</del><ins>+ JSON.stringify(sampleCommitSetData),
</ins><span class="cx"> 'Force Build Form'
</span><span class="cx"> ],
</span><span class="cx"> ['slavename', slaveName, ''],
</span><span class="lines">@@ -280,7 +280,7 @@
</span><span class="cx"> ['desired_image', '13A452', 'Force Build Form'],
</span><span class="cx"> ['owner', '<unknown>', 'Force Build Form'],
</span><span class="cx"> ['reason', 'force build', 'Force Build Form'],
</span><del>- ['roots_dict', JSON.stringify(sampleRootSetData), 'Force Build Form'],
</del><ins>+ ['roots_dict', JSON.stringify(sampleCommitSetData), 'Force Build Form'],
</ins><span class="cx"> ['scheduler', 'ABTest-iPad-RunBenchmark-Tests-ForceScheduler', 'Scheduler'],
</span><span class="cx"> ['slavename', slaveName || 'ABTest-iPad-0', 'BuildSlave'],
</span><span class="cx"> ],
</span><span class="lines">@@ -356,7 +356,7 @@
</span><span class="cx"> ['desired_image', '13A452', 'Force Build Form'],
</span><span class="cx"> ['owner', '<unknown>', 'Force Build Form'],
</span><span class="cx"> ['reason', 'force build', 'Force Build Form'],
</span><del>- ['roots_dict', JSON.stringify(sampleRootSetData), 'Force Build Form'],
</del><ins>+ ['roots_dict', JSON.stringify(sampleCommitSetData), 'Force Build Form'],
</ins><span class="cx"> ['scheduler', 'ABTest-iPad-RunBenchmark-Tests-ForceScheduler', 'Scheduler'],
</span><span class="cx"> ['slavename', slaveName || 'ABTest-iPad-0', 'BuildSlave'],
</span><span class="cx"> ],
</span><span class="lines">@@ -594,13 +594,13 @@
</span><span class="cx"> it('should resolve "rootOptions"', function () {
</span><span class="cx"> let syncers = BuildbotSyncer._loadConfig(RemoteAPI, sampleiOSConfig());
</span><span class="cx"> let properties = syncers[0]._propertiesForBuildRequest(createSampleBuildRequest(MockModels.iphone, MockModels.speedometer));
</span><del>- assert.equal(properties['roots_dict'], JSON.stringify(sampleRootSetData));
</del><ins>+ assert.equal(properties['roots_dict'], JSON.stringify(sampleCommitSetData));
</ins><span class="cx"> });
</span><span class="cx">
</span><span class="cx"> it('should resolve "rootsExcluding"', function () {
</span><span class="cx"> let syncers = BuildbotSyncer._loadConfig(RemoteAPI, sampleiOSConfig());
</span><span class="cx"> let properties = syncers[0]._propertiesForBuildRequest(createSampleBuildRequest(MockModels.iphone, MockModels.speedometer));
</span><del>- assert.equal(properties['roots_dict'], JSON.stringify(sampleRootSetData));
</del><ins>+ assert.equal(properties['roots_dict'], JSON.stringify(sampleCommitSetData));
</ins><span class="cx"> });
</span><span class="cx">
</span><span class="cx"> it('should set the property for the build request id', function () {
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgunittestsmeasurementadaptortestsjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/unit-tests/measurement-adaptor-tests.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/unit-tests/measurement-adaptor-tests.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/unit-tests/measurement-adaptor-tests.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -66,23 +66,23 @@
</span><span class="cx"> assert.equal(adaptor.applyTo(sampleCustomBaselineData).build(), null);
</span><span class="cx"> });
</span><span class="cx">
</span><del>- it('should adapt revision information as a RootSet object', function () {
</del><ins>+ it('should adapt revision information as a CommitSet object', function () {
</ins><span class="cx"> var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
</span><del>- var rootSet = adaptor.applyTo(sampleData).rootSet();
- assert.ok(rootSet instanceof RootSet);
- assert.equal(rootSet.latestCommitTime(), 1447707055576);
</del><ins>+ var commitSet = adaptor.applyTo(sampleData).commitSet();
+ assert.ok(commitSet instanceof CommitSet);
+ assert.equal(commitSet.latestCommitTime(), 1447707055576);
</ins><span class="cx"> });
</span><span class="cx">
</span><span class="cx"> it('should adapt OS X version as a CommitLog object', function () {
</span><span class="cx"> var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
</span><del>- var rootSet = adaptor.applyTo(sampleData).rootSet();
- assert.ok(rootSet instanceof RootSet);
- assert.equal(rootSet.latestCommitTime(), 1447707055576);
</del><ins>+ var commitSet = adaptor.applyTo(sampleData).commitSet();
+ assert.ok(commitSet instanceof CommitSet);
+ assert.equal(commitSet.latestCommitTime(), 1447707055576);
</ins><span class="cx">
</span><del>- assert.ok(rootSet.repositories().indexOf(MockModels.osx) >= 0);
- assert.equal(rootSet.revisionForRepository(MockModels.osx), '10.11 15D21');
</del><ins>+ assert.ok(commitSet.repositories().indexOf(MockModels.osx) >= 0);
+ assert.equal(commitSet.revisionForRepository(MockModels.osx), '10.11 15D21');
</ins><span class="cx">
</span><del>- var commit = rootSet.commitForRepository(MockModels.osx);
</del><ins>+ var commit = commitSet.commitForRepository(MockModels.osx);
</ins><span class="cx"> assert.ok(commit instanceof CommitLog);
</span><span class="cx"> assert.equal(commit.repository(), MockModels.osx);
</span><span class="cx"> assert.ok(commit.time() instanceof Date);
</span><span class="lines">@@ -95,12 +95,12 @@
</span><span class="cx">
</span><span class="cx"> it('should adapt WebKit revision as a CommitLog object', function () {
</span><span class="cx"> var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
</span><del>- var rootSet = adaptor.applyTo(sampleData).rootSet();
</del><ins>+ var commitSet = adaptor.applyTo(sampleData).commitSet();
</ins><span class="cx">
</span><del>- assert.ok(rootSet.repositories().indexOf(MockModels.webkit) >= 0);
- assert.equal(rootSet.revisionForRepository(MockModels.webkit), '192483');
</del><ins>+ assert.ok(commitSet.repositories().indexOf(MockModels.webkit) >= 0);
+ assert.equal(commitSet.revisionForRepository(MockModels.webkit), '192483');
</ins><span class="cx">
</span><del>- var commit = rootSet.commitForRepository(MockModels.webkit);
</del><ins>+ var commit = commitSet.commitForRepository(MockModels.webkit);
</ins><span class="cx"> assert.ok(commit instanceof CommitLog);
</span><span class="cx"> assert.equal(commit.repository(), MockModels.webkit);
</span><span class="cx"> assert.ok(commit.time() instanceof Date);
</span><span class="lines">@@ -114,11 +114,11 @@
</span><span class="cx">
</span><span class="cx"> it('should not create separate CommitLog object for the same revision', function () {
</span><span class="cx"> var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
</span><del>- assert.equal(adaptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.webkit),
- adaptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.webkit));
</del><ins>+ assert.equal(adaptor.applyTo(sampleData).commitSet().commitForRepository(MockModels.webkit),
+ adaptor.applyTo(sampleData).commitSet().commitForRepository(MockModels.webkit));
</ins><span class="cx">
</span><del>- assert.equal(adaptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.osx),
- adaptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.osx));
</del><ins>+ assert.equal(adaptor.applyTo(sampleData).commitSet().commitForRepository(MockModels.osx),
+ adaptor.applyTo(sampleData).commitSet().commitForRepository(MockModels.osx));
</ins><span class="cx"> });
</span><span class="cx">
</span><span class="cx"> });
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgunittestsmeasurementsettestsjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/unit-tests/measurement-set-tests.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/unit-tests/measurement-set-tests.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/unit-tests/measurement-set-tests.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -802,11 +802,11 @@
</span><span class="cx"> assert.equal(point.id, 26530031);
</span><span class="cx">
</span><span class="cx"> const commitTime = 1482398562950;
</span><del>- const rootSet = point.rootSet();
- assert.equal(point.rootSet(), rootSet);
- assert.deepEqual(rootSet.repositories(), [webkit]);
- assert.equal(rootSet.revisionForRepository(webkit), '210096');
- const commit = rootSet.commitForRepository(webkit);
</del><ins>+ const commitSet = point.commitSet();
+ assert.equal(point.commitSet(), commitSet);
+ assert.deepEqual(commitSet.repositories(), [webkit]);
+ assert.equal(commitSet.revisionForRepository(webkit), '210096');
+ const commit = commitSet.commitForRepository(webkit);
</ins><span class="cx"> assert.equal(commit.repository(), webkit);
</span><span class="cx"> assert.equal(+commit.time(), commitTime);
</span><span class="cx"> assert.equal(commit.author(), null);
</span><span class="lines">@@ -815,7 +815,7 @@
</span><span class="cx"> assert.equal(commit.url(), 'http://trac.webkit.org/changeset/210096');
</span><span class="cx"> assert.equal(commit.label(), 'r210096');
</span><span class="cx"> assert.equal(commit.title(), 'WebKit at r210096');
</span><del>- assert.equal(rootSet.latestCommitTime(), commitTime);
</del><ins>+ assert.equal(commitSet.latestCommitTime(), commitTime);
</ins><span class="cx">
</span><span class="cx"> const build = point.build();
</span><span class="cx"> assert.equal(point.build(), build);
</span><span class="lines">@@ -836,12 +836,12 @@
</span><span class="cx"> assert.equal(point.id, 26530779);
</span><span class="cx">
</span><span class="cx"> const commitTime = 1482424870729;
</span><del>- const rootSet = point.rootSet();
- assert.equal(rootSet.revisionForRepository(webkit), '210097');
- const commit = rootSet.commitForRepository(webkit);
</del><ins>+ const commitSet = point.commitSet();
+ assert.equal(commitSet.revisionForRepository(webkit), '210097');
+ const commit = commitSet.commitForRepository(webkit);
</ins><span class="cx"> assert.equal(+commit.time(), commitTime);
</span><span class="cx"> assert.equal(commit.revision(), '210097');
</span><del>- assert.equal(rootSet.latestCommitTime(), commitTime);
</del><ins>+ assert.equal(commitSet.latestCommitTime(), commitTime);
</ins><span class="cx">
</span><span class="cx"> const build = point.build();
</span><span class="cx"> assert.equal(build.builder(), builder);
</span><span class="lines">@@ -856,7 +856,7 @@
</span><span class="cx"> assert.equal(point.markedOutlier, true);
</span><span class="cx"> }).then(() => {
</span><span class="cx"> assert.equal(points[2].id, 26532275);
</span><del>- assert.equal(points[2].rootSet().revisionForRepository(webkit), '210102');
</del><ins>+ assert.equal(points[2].commitSet().revisionForRepository(webkit), '210102');
</ins><span class="cx"> assert.equal(+points[2].build().buildTime(), 1482436041865);
</span><span class="cx"> assert.equal(points[2].build().buildNumber(), 10879);
</span><span class="cx"> assert.equal(points[2].time, 1482431464371);
</span><span class="lines">@@ -863,7 +863,7 @@
</span><span class="cx"> assert.equal(points[2].value, 134.2725);
</span><span class="cx">
</span><span class="cx"> assert.equal(points[3].id, 26547226);
</span><del>- assert.equal(points[3].rootSet().revisionForRepository(webkit), '210168');
</del><ins>+ assert.equal(points[3].commitSet().revisionForRepository(webkit), '210168');
</ins><span class="cx"> assert.equal(+points[3].build().buildTime(), 1482852452143);
</span><span class="cx"> assert.equal(points[3].build().buildNumber(), 10902);
</span><span class="cx"> assert.equal(points[3].time, 1482852412735);
</span><span class="lines">@@ -870,7 +870,7 @@
</span><span class="cx"> assert.equal(points[3].value, 150.9625);
</span><span class="cx">
</span><span class="cx"> assert.equal(points[4].id, 26559915);
</span><del>- assert.equal(points[4].rootSet().revisionForRepository(webkit), '210222');
</del><ins>+ assert.equal(points[4].commitSet().revisionForRepository(webkit), '210222');
</ins><span class="cx"> assert.equal(+points[4].build().buildTime(), 1483347926429);
</span><span class="cx"> assert.equal(points[4].build().buildNumber(), 10924);
</span><span class="cx"> assert.equal(points[4].time, 1483347732051);
</span><span class="lines">@@ -877,7 +877,7 @@
</span><span class="cx"> assert.equal(points[4].value, 141.72);
</span><span class="cx">
</span><span class="cx"> assert.equal(points[5].id, 26564388);
</span><del>- assert.equal(points[5].rootSet().revisionForRepository(webkit), '210231');
</del><ins>+ assert.equal(points[5].commitSet().revisionForRepository(webkit), '210231');
</ins><span class="cx"> assert.equal(+points[5].build().buildTime(), 1483415426049);
</span><span class="cx"> assert.equal(points[5].build().buildNumber(), 10930);
</span><span class="cx"> assert.equal(points[5].time, 1483412171531);
</span><span class="lines">@@ -884,7 +884,7 @@
</span><span class="cx"> assert.equal(points[5].value, 138.13125);
</span><span class="cx">
</span><span class="cx"> assert.equal(points[6].id, 26568867);
</span><del>- assert.equal(points[6].rootSet().revisionForRepository(webkit), '210240');
</del><ins>+ assert.equal(points[6].commitSet().revisionForRepository(webkit), '210240');
</ins><span class="cx"> assert.equal(+points[6].build().buildTime(), 1483469642993);
</span><span class="cx"> assert.equal(points[6].build().buildNumber(), 10935);
</span><span class="cx"> assert.equal(points[6].time, 1483469584347);
</span><span class="lines">@@ -904,7 +904,7 @@
</span><span class="cx"> points[i] = fullSeries.findPointByIndex(i);
</span><span class="cx">
</span><span class="cx"> assert.equal(points[0].id, 26530031);
</span><del>- assert.equal(points[0].rootSet().revisionForRepository(webkit), '210096');
</del><ins>+ assert.equal(points[0].commitSet().revisionForRepository(webkit), '210096');
</ins><span class="cx"> assert.equal(+points[0].build().buildTime(), 1482413222311);
</span><span class="cx"> assert.equal(points[0].build().buildNumber(), 10877);
</span><span class="cx"> assert.equal(points[0].time, 1482398562950);
</span><span class="lines">@@ -911,7 +911,7 @@
</span><span class="cx"> assert.equal(points[0].value, 135.26375);
</span><span class="cx">
</span><span class="cx"> assert.equal(points[1].id, 26532275);
</span><del>- assert.equal(points[1].rootSet().revisionForRepository(webkit), '210102');
</del><ins>+ assert.equal(points[1].commitSet().revisionForRepository(webkit), '210102');
</ins><span class="cx"> assert.equal(+points[1].build().buildTime(), 1482436041865);
</span><span class="cx"> assert.equal(points[1].build().buildNumber(), 10879);
</span><span class="cx"> assert.equal(points[1].time, 1482431464371);
</span><span class="lines">@@ -918,7 +918,7 @@
</span><span class="cx"> assert.equal(points[1].value, 134.2725);
</span><span class="cx">
</span><span class="cx"> assert.equal(points[2].id, 26547226);
</span><del>- assert.equal(points[2].rootSet().revisionForRepository(webkit), '210168');
</del><ins>+ assert.equal(points[2].commitSet().revisionForRepository(webkit), '210168');
</ins><span class="cx"> assert.equal(+points[2].build().buildTime(), 1482852452143);
</span><span class="cx"> assert.equal(points[2].build().buildNumber(), 10902);
</span><span class="cx"> assert.equal(points[2].time, 1482852412735);
</span><span class="lines">@@ -925,7 +925,7 @@
</span><span class="cx"> assert.equal(points[2].value, 150.9625);
</span><span class="cx">
</span><span class="cx"> assert.equal(points[3].id, 26559915);
</span><del>- assert.equal(points[3].rootSet().revisionForRepository(webkit), '210222');
</del><ins>+ assert.equal(points[3].commitSet().revisionForRepository(webkit), '210222');
</ins><span class="cx"> assert.equal(+points[3].build().buildTime(), 1483347926429);
</span><span class="cx"> assert.equal(points[3].build().buildNumber(), 10924);
</span><span class="cx"> assert.equal(points[3].time, 1483347732051);
</span><span class="lines">@@ -932,7 +932,7 @@
</span><span class="cx"> assert.equal(points[3].value, 141.72);
</span><span class="cx">
</span><span class="cx"> assert.equal(points[4].id, 26564388);
</span><del>- assert.equal(points[4].rootSet().revisionForRepository(webkit), '210231');
</del><ins>+ assert.equal(points[4].commitSet().revisionForRepository(webkit), '210231');
</ins><span class="cx"> assert.equal(+points[4].build().buildTime(), 1483415426049);
</span><span class="cx"> assert.equal(points[4].build().buildNumber(), 10930);
</span><span class="cx"> assert.equal(points[4].time, 1483412171531);
</span><span class="lines">@@ -939,7 +939,7 @@
</span><span class="cx"> assert.equal(points[4].value, 138.13125);
</span><span class="cx">
</span><span class="cx"> assert.equal(points[5].id, 26568867);
</span><del>- assert.equal(points[5].rootSet().revisionForRepository(webkit), '210240');
</del><ins>+ assert.equal(points[5].commitSet().revisionForRepository(webkit), '210240');
</ins><span class="cx"> assert.equal(+points[5].build().buildTime(), 1483469642993);
</span><span class="cx"> assert.equal(points[5].build().buildNumber(), 10935);
</span><span class="cx"> assert.equal(points[5].time, 1483469584347);
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgunittestsresourcesmockv3modelsjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/unit-tests/resources/mock-v3-models.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/unit-tests/resources/mock-v3-models.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/unit-tests/resources/mock-v3-models.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -9,7 +9,7 @@
</span><span class="cx"> Metric.clearStaticMap();
</span><span class="cx"> Platform.clearStaticMap();
</span><span class="cx"> Repository.clearStaticMap();
</span><del>- RootSet.clearStaticMap();
</del><ins>+ CommitSet.clearStaticMap();
</ins><span class="cx"> Test.clearStaticMap();
</span><span class="cx"> TestGroup.clearStaticMap();
</span><span class="cx"> BuildRequest.clearStaticMap();
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgunitteststestgroupstestsjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/unit-tests/test-groups-tests.js (213951 => 213952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/unit-tests/test-groups-tests.js        2017-03-14 23:03:47 UTC (rev 213951)
+++ trunk/Websites/perf.webkit.org/unit-tests/test-groups-tests.js        2017-03-14 23:06:40 UTC (rev 213952)
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx"> "createdAt": 1458688514000,
</span><span class="cx"> "hidden": false,
</span><span class="cx"> "buildRequests": ["16985", "16986", "16987", "16988", "16989", "16990", "16991", "16992"],
</span><del>- "rootSets": ["4255", "4256", "4255", "4256", "4255", "4256", "4255", "4256"]
</del><ins>+ "commitSets": ["4255", "4256", "4255", "4256", "4255", "4256", "4255", "4256"]
</ins><span class="cx"> }
</span><span class="cx"> ],
</span><span class="cx"> "buildRequests": [{
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> "platform": "31",
</span><span class="cx"> "testGroup": "2128",
</span><span class="cx"> "order": "0",
</span><del>- "rootSet": "4255",
</del><ins>+ "commitSet": "4255",
</ins><span class="cx"> "status": "pending",
</span><span class="cx"> "url": null,
</span><span class="cx"> "build": null,
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> "platform": "31",
</span><span class="cx"> "testGroup": "2128",
</span><span class="cx"> "order": "1",
</span><del>- "rootSet": "4256",
</del><ins>+ "commitSet": "4256",
</ins><span class="cx"> "status": "pending",
</span><span class="cx"> "url": null,
</span><span class="cx"> "build": null,
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> "platform": "31",
</span><span class="cx"> "testGroup": "2128",
</span><span class="cx"> "order": "2",
</span><del>- "rootSet": "4255",
</del><ins>+ "commitSet": "4255",
</ins><span class="cx"> "status": "pending",
</span><span class="cx"> "url": null,
</span><span class="cx"> "build": null,
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> "platform": "31",
</span><span class="cx"> "testGroup": "2128",
</span><span class="cx"> "order": "3",
</span><del>- "rootSet": "4256",
</del><ins>+ "commitSet": "4256",
</ins><span class="cx"> "status": "pending",
</span><span class="cx"> "url": null,
</span><span class="cx"> "build": null,
</span><span class="lines">@@ -69,15 +69,15 @@
</span><span class="cx"> "createdAt": 1458688514000
</span><span class="cx"> }
</span><span class="cx"> ],
</span><del>- "rootSets": [{
</del><ins>+ "commitSets": [{
</ins><span class="cx"> "id": "4255",
</span><del>- "roots": ["87832", "93116"]
</del><ins>+ "commits": ["87832", "93116"]
</ins><span class="cx"> }, {
</span><span class="cx"> "id": "4256",
</span><del>- "roots": ["87832", "96336"]
</del><ins>+ "commits": ["87832", "96336"]
</ins><span class="cx"> }
</span><span class="cx"> ],
</span><del>- "roots": [{
</del><ins>+ "commits": [{
</ins><span class="cx"> "id": "87832",
</span><span class="cx"> "repository": "9",
</span><span class="cx"> "revision": "10.11 15A284",
</span><span class="lines">@@ -157,18 +157,18 @@
</span><span class="cx"> it('should create root sets for each group', function () {
</span><span class="cx"> var buildRequests = TestGroup._createModelsFromFetchedTestGroups(sampleTestGroup())[0].buildRequests();
</span><span class="cx">
</span><del>- var firstSet = buildRequests[0].rootSet();
- assert.ok(firstSet instanceof RootSet);
- assert.equal(firstSet, buildRequests[2].rootSet());
</del><ins>+ var firstSet = buildRequests[0].commitSet();
+ assert.ok(firstSet instanceof CommitSet);
+ assert.equal(firstSet, buildRequests[2].commitSet());
</ins><span class="cx">
</span><del>- var secondSet = buildRequests[1].rootSet();
- assert.ok(secondSet instanceof RootSet);
- assert.equal(secondSet, buildRequests[3].rootSet());
</del><ins>+ var secondSet = buildRequests[1].commitSet();
+ assert.ok(secondSet instanceof CommitSet);
+ assert.equal(secondSet, buildRequests[3].commitSet());
</ins><span class="cx">
</span><span class="cx"> assert.equal(firstSet.revisionForRepository(MockModels.webkit), '191622');
</span><span class="cx"> var firstWebKitCommit = firstSet.commitForRepository(MockModels.webkit);
</span><span class="cx"> assert.ok(firstWebKitCommit instanceof CommitLog);
</span><del>- assert.ok(firstWebKitCommit, buildRequests[2].rootSet().commitForRepository(MockModels.webkit));
</del><ins>+ assert.ok(firstWebKitCommit, buildRequests[2].commitSet().commitForRepository(MockModels.webkit));
</ins><span class="cx"> assert.ok(firstWebKitCommit.repository(), MockModels.webkit);
</span><span class="cx"> assert.ok(firstWebKitCommit.revision(), '191622');
</span><span class="cx"> assert.ok(firstWebKitCommit.time() instanceof Date);
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx"> assert.equal(secondSet.revisionForRepository(MockModels.webkit), '192736');
</span><span class="cx"> var secondWebKitCommit = secondSet.commitForRepository(MockModels.webkit);
</span><span class="cx"> assert.ok(secondWebKitCommit instanceof CommitLog);
</span><del>- assert.ok(secondWebKitCommit, buildRequests[3].rootSet().commitForRepository(MockModels.webkit));
</del><ins>+ assert.ok(secondWebKitCommit, buildRequests[3].commitSet().commitForRepository(MockModels.webkit));
</ins><span class="cx"> assert.ok(secondWebKitCommit.repository(), MockModels.webkit);
</span><span class="cx"> assert.ok(secondWebKitCommit.revision(), '192736');
</span><span class="cx"> assert.ok(secondWebKitCommit.time() instanceof Date);
</span><span class="lines">@@ -186,9 +186,9 @@
</span><span class="cx"> assert.equal(firstSet.revisionForRepository(MockModels.osx), '10.11 15A284');
</span><span class="cx"> var osxCommit = firstSet.commitForRepository(MockModels.osx);
</span><span class="cx"> assert.ok(osxCommit instanceof CommitLog);
</span><del>- assert.equal(osxCommit, buildRequests[1].rootSet().commitForRepository(MockModels.osx));
- assert.equal(osxCommit, buildRequests[2].rootSet().commitForRepository(MockModels.osx));
- assert.equal(osxCommit, buildRequests[3].rootSet().commitForRepository(MockModels.osx));
</del><ins>+ assert.equal(osxCommit, buildRequests[1].commitSet().commitForRepository(MockModels.osx));
+ assert.equal(osxCommit, buildRequests[2].commitSet().commitForRepository(MockModels.osx));
+ assert.equal(osxCommit, buildRequests[3].commitSet().commitForRepository(MockModels.osx));
</ins><span class="cx"> assert.ok(osxCommit.repository(), MockModels.osx);
</span><span class="cx"> assert.ok(osxCommit.revision(), '10.11 15A284');
</span><span class="cx"> });
</span></span></pre>
</div>
</div>
</body>
</html>