b58c370034a69e86b2f6624fd8d827d33ce13a3b
[WebKit-https.git] / Websites / perf.webkit.org / ChangeLog
1 2018-02-01  Aakash Jain  <aakash_jain@apple.com>
2
3         Create BuildbotBuildEntry in Buildbot syncer in Buildbot 0.9 format
4         https://bugs.webkit.org/show_bug.cgi?id=182036
5
6         Reviewed by Ryosuke Niwa.
7
8         * tools/js/buildbot-syncer.js:
9         (BuildbotBuildEntry): Class for Buildbot entry in Buildbot 0.9 data format.
10         (BuildbotBuildEntryDeprecated): Renamed from BuildbotBuildEntry, sub-classed from BuildBotEntry. Handles Buildbot 0.8 data format.
11         (BuildbotBuildEntryDeprecated.prototype.url): URL in buildbot 0.8 format.
12         (BuildbotSyncer.prototype.builderID): Added.
13         (BuildbotSyncer.prototype.pathForPendingBuildsJSONDeprecated): Renamed from BuildbotSyncer.prototype.pathForPendingBuildsJSON.
14         (BuildbotSyncer.prototype.pathForPendingBuilds): Path for pending builds in Buildbot 0.9 format.
15         (BuildbotSyncer.prototype.urlForBuildNumberDeprecated): Deprecated. Renamed from urlForBuildNumber.
16         (BuildbotSyncer.prototype.urlForBuildNumber): Updated in Buildbot 0.9 format.
17         (BuildbotSyncer.prototype.urlForPendingBuild): Buildbot 0.9 has individual webpage for pending buildrequests as well. URL to that page.
18         * unit-tests/buildbot-syncer-tests.js: Renamed BuildbotBuildEntry to BuildbotBuildEntryDeprecated.
19         (sampleBuildData): Sample build data. Common method for in-progress and finished build data.
20         (samplePendingBuildData): Sample data for a pending build. Separate method so that we can easily create sample data with multiple builds.
21         (sampleInProgressBuildData): Ditto for in-progress build.
22         (sampleFinishedBuildData): Ditto for finished build.
23         (samplePendingBuild): Sample data for single pending build.
24         (sampleInProgressBuild): Ditto for in-progress build.
25         (sampleFinishedBuild): Ditto for finished build.
26         (samplePendingBuildDeprecated): Renamed from samplePendingBuild.
27         (sampleInProgressBuildDeprecated): Renamed from sampleInProgressBuild.
28         (sampleFinishedBuildDeprecated): Renamed from sampleFinishedBuild.
29         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for pending build.
30         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for in-progress build.
31         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for finished build.
32         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for mix of in-progress and finished build.
33
34 2018-01-31  Dewei Zhu  <dewei_zhu@apple.com>
35
36         Should chose the best match during 'route' if there are multiple matches.
37         https://bugs.webkit.org/show_bug.cgi?id=182326
38
39         Reviewed by Ryosuke Niwa.
40
41         r227749 made a change that 'analysisCategoryPage' will be added before 'analysisTaskPage'.
42         As route names for both pages starts with 'analysis', whichever added first will be chosen.
43         For a route like 'analysis/task/1'. As a result, 'analysisCategoryPage' will be chosen and
44         this is not expected behavior. Adding the logic on the cases when route name does not extact
45         match the route name, always choose the longest mathcing route name.
46
47         Also modernized the code of 'page-router.js' to use const & let instead of var.
48
49         Added a browser test to guard against this bug.
50
51         * browser-tests/index.html: Import 'page-router-tests.js'.
52         * browser-tests/page-router-tests.js: Added unit test to guard against this bug.
53         * public/v3/pages/page-router.js:
54         (PageRouter.prototype.route): Added logic to find best matching in the case of inexact match.
55         (PageRouter.prototype.pageDidOpen):
56         (PageRouter.prototype._updateURLState):
57         (PageRouter.prototype._serializeToHash):
58         (PageRouter.prototype._deserializeFromHash):
59         (PageRouter.prototype._serializeHashQueryValue):
60         (PageRouter.prototype._deserializeHashQueryValue):
61         (PageRouter.prototype._countOccurrences):
62         (PageRouter):
63
64 2018-01-29  Dewei Zhu  <dewei_zhu@apple.com>
65
66         Should fetch owner commits in build-requests-fetcher.
67         https://bugs.webkit.org/show_bug.cgi?id=182266
68
69         Reviewed by Ryosuke Niwa.
70
71         In a build request, owner commit of a commit is not always one of a commit in the commit set.
72         Build request api should contain owner commits in the 'commits' field of the return value.
73
74         * public/include/build-requests-fetcher.php: Added logic to fetch owner commits and added them into 'commits'.
75         * server-tests/api-build-requests-tests.js: Added a unit test.
76         * server-tests/resources/mock-data.js:
77         (MockData.set addTestGroupWithOwnerCommitNotInCommitSet): Added a test group with a build request, the commit set of which does
78         not contain owner commit of one commit.
79
80 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
81
82         Add the support for reporting Speedometer 2.0 results to perf dashboard
83         https://bugs.webkit.org/show_bug.cgi?id=182089
84         <rdar://problem/36172346>
85
86         Rubber-stamped by Chris Dumez.
87
88         Apparently, this has always worked since the very first version of the perf dashboard added in r163688.
89         The relevant code is at the line 313 of report-processor.php now.
90
91         Added regression tests for this feature since we didn't have any tests four years ago.
92
93         * server-tests/api-report-tests.js:
94
95 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
96
97         REGRESSION(r225898): The perf dashboard fails to open when there are no summary pages
98         https://bugs.webkit.org/show_bug.cgi?id=182210
99
100         Rubber-stamped by Chris Dumez.
101
102         The bug was caused by TestFreshnessPage unconditionally assuming that summaryPageConfiguration is set.
103         Fixed it by not creating TestFreshnessPage when there are no summary pages specified.
104
105         Also modernized the code to use const & let instead of var.
106
107         * public/v3/main.js:
108         (main):
109
110 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
111
112         Perf dashboard's page title can be set to a previously visited page
113         https://bugs.webkit.org/show_bug.cgi?id=182209
114
115         Rubber-stamped by Chris Dumez.
116
117         Before this patch, opening a page and navigating away from it could result in the page title
118         getting set to that of the previously visited page after the new page had been opened.
119
120         This bug was caused by Page.render keep setting document.title even though the page is no longer
121         the currently open page of the router. Fixed it by exiting early in Page.enqueueToRender when
122         this page is not the currently open page of the router.
123
124         Also added basic tests for Page.
125
126         * browser-tests/index.html:
127         * browser-tests/page-tests.js: Added.
128         * public/v3/pages/page.js:
129         (Page): Removed the unused second constructor argument.
130         (Page.prototype.enqueueToRender): Fixed the bug.
131         (Page.prototype.render): Use const instead of var.
132
133 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
134
135         CommitLogViewer should not fetch commits in serial
136         https://bugs.webkit.org/show_bug.cgi?id=182207
137
138         Rubber-stamped by Chris Dumez.
139
140         Fetch both the commits in the range as well as the preceding commit at once instead of
141         fetching the preceding commit only after the commits in the range had been fetched.
142
143         * browser-tests/commit-log-viewer-tests.js: Fixed the tcoest case after r224227.
144         * public/v3/components/commit-log-viewer.js:
145         (CommitLogViewer.prototype._fetchCommitLogs): Fetch commits in parallel.
146
147 2018-01-24  Dewei Zhu  <dewei_zhu@apple.com>
148
149         Check existence of 'node_modules_dir' before creating it.
150         https://bugs.webkit.org/show_bug.cgi?id=182040
151
152         Reviewed by Aakash Jain.
153
154         Fix the bug introduced in r227395.
155
156         * tools/run-tests.py: Added directory existence check.
157
158 2018-01-22  Dewei Zhu  <dewei_zhu@apple.com>
159
160         Fix the bug that 'TestGroupResultsViewer' creates unnecessary rows.
161         https://bugs.webkit.org/show_bug.cgi?id=181967
162
163         Reviewed by Ryosuke Niwa.
164
165         Fixed a bug caused by a typo in CommitSet.equals, which makes it returns incorrect results for most
166         comparison between a CommitSet and a MeasurementCommitSet.
167
168         MeasurementCommitSet does not have full information for the commits, thus, it cannot build mappings
169         between root/patch/owner commit/requires build to repository. When querying whether a given repository
170         needs to be built, MeasurementCommitSet will return undefined. Due to 'undefined != false', this
171         equality check will fail. Making 'CommitSet.requiresBuildForRepository' defaults to 'false' would fix
172         this bug.
173
174         * public/v3/models/commit-set.js:
175         (CommitSet.prototype.requiresBuildForRepository): Make it return false when key does not exist
176         instead of 'undefined'.
177         (CommitSet.prototype.equals): Fixed the typo that causes the bug.
178         Use wrapped functions instead of querying the mapping directly.
179         * unit-tests/commit-set-tests.js: Added unit tests.
180
181 2018-01-18  Dewei Zhu  <dewei_zhu@apple.com>
182
183         'run-test.py' script should make sure 'node_modules' directory exists before installing node packages.
184         https://bugs.webkit.org/show_bug.cgi?id=181808
185
186         Reviewed by Ryosuke Niwa.
187
188         'run-test.py' will fail if 'node_modules' does not exist before running this script.
189         Instead of calling 'os.chdir' to change directory, use 'cwd' in subprocess instead.
190
191         * tools/run-tests.py: Added the logic to ensure 'node_modules' exists.
192         Also use 'cwd' in subprocess.call instead of calling 'os.chdir' ahead.
193
194 2018-01-20  Dewei Zhu  <dewei_zhu@apple.com>
195
196         Extend 'ifBuilt' config key to set property based on whether certain repositories are built or not.
197         https://bugs.webkit.org/show_bug.cgi?id=181906
198
199         Reviewed by Ryosuke Niwa.
200
201         Before this change, 'ifBuilt' will always set specified property for test properties as long as there
202         is a build type build in the same build request group. However, this is no longer valid as we don't
203         want to set specified property for testing when only owned commit is built in previous build.
204         'ifBuilt' needs to conditionally set property based on whether certain required repositories are built.
205         Empty required repository list means no requirement on repository to set property.
206
207         * tools/js/buildbot-syncer.js:
208         (BuildbotSyncer.prototype._propertiesForBuildRequest):In the case of 'built', only set property when
209         repository requirment is meet and there is a 'build' root request in the same build request group.
210         (BuildbotSyncer._parseRepositoryGroup): Extend 'ifBuild' to pass information based on contition.
211         * unit-tests/buildbot-syncer-tests.js: Added unit tests.
212
213 2018-01-19  Dewei Zhu  <dewei_zhu@apple.com>
214
215         Should reject updating a build request which has an associated build.
216         https://bugs.webkit.org/show_bug.cgi?id=181893
217
218         Reviewed by Ryosuke Niwa.
219
220         Current code does not prevent submitting to same build request multiple times.
221         This could lead to a build losing its associated build request.
222         As a result, this build will be visible in charts which is not right.
223         Added a check when a build request is reported.
224         Addressed a 'FIXME' for the race condition inside ReportProcessor->resolve_build_id by surrounding
225         it with a database transaction.
226
227         * public/include/report-processor.php:
228         Wrap adding platform and resolve_build_id with a database transaction.
229         Add a check to make sure only a build request has no associated build can be updated.
230         * server-tests/api-report-tests.js: Added unit tests accordingly.
231
232 2018-01-18  Dewei Zhu  <dewei_zhu@apple.com>
233
234         Should allow updating a build-request to 'canceled'.
235         https://bugs.webkit.org/show_bug.cgi?id=181819
236
237         Reviewed by Ryosuke Niwa.
238
239         It's possible syncing script update a build-request to 'canceled' state.
240
241         * public/api/build-requests.php: Added 'canceled' as an acceptable update state.
242         * server-tests/api-build-requests-tests.js: Added a unit test to update a build-request to 'canceled'.
243
244 2018-01-18  Aakash Jain  <aakash_jain@apple.com>
245
246         Add support for builderNameToIDMap in BuildbotSyncer
247         https://bugs.webkit.org/show_bug.cgi?id=176526
248
249         Reviewed by Ryosuke Niwa.
250
251         * tools/js/buildbot-syncer.js:
252         (BuildbotSyncer._loadConfig): Added builderNameToIDMap parameter. It would be used later on.
253         (BuildbotSyncer._resolveBuildersWithPlatforms): Ditto.
254         (BuildbotSyncer._validateAndMergeConfig): Added builderID as a valid config parameter.
255         * tools/js/buildbot-triggerable.js:
256         (BuildbotTriggerable.prototype.getBuilderNameToIDMap): Method to fetch BuilderNameToIDMap from Buildbot 0.9.
257         (BuildbotTriggerable.prototype.getBuilderNameToIDMapDeprecated): Method to fetch BuilderNameToIDMap from Buildbot 0.8.
258         (BuildbotTriggerable.prototype.initSyncers): Updated to use getBuilderNameToIDMap.
259         * unit-tests/buildbot-syncer-tests.js: Updated unit-tests.
260         * server-tests/resources/mock-data.js:
261         (MockData.buildbotBuildersURLDeprecated): URL for fetching Builders list.
262         (MockData.buildbotBuildersURL): Ditto for Buildbot 0.9
263         (MockData.mockBuildbotBuildersDeprecated): Sample builders data for Buildbot 0.8
264         (MockData.mockBuildbotBuilders): Ditto for Buildbot 0.9
265         * server-tests/tools-buildbot-triggerable-tests.js: Added test for getBuilderNameToIDMap. Updated tests to handle
266         newly added promise for fetching builders list from Buildbot.
267         * server-tests/tools-sync-buildbot-integration-tests.js: Ditto.
268
269 2018-01-18  Ryosuke Niwa  <rniwa@webkit.org>
270
271         Charts can be empty when values are all identical
272         https://bugs.webkit.org/show_bug.cgi?id=181828
273
274         Reviewed by Alexey Proskuryakov.
275
276         Fixed the bug that when SampleVarianceUpperTriangularMatrix can store -Infinity as the initial cost
277         of some entries when the sample standard deviation between two points turns out to be 0,
278         and cause splitIntoSegmentsUntilGoodEnough to return undefiend because no segmentation has a finite cost.
279
280         Also fixed the bug that the time series chart fails to show any data points when all data points have
281         identical values as the entire y-coordinate gets collapsed to an empty value range by adjusting the max value
282         when min & max values are identical.
283
284         * public/v3/components/time-series-chart.js:
285         (TimeSeriesChart.prototype._ensureValueRangeCache): Raise the max slightly when min & max are identical
286         to avoid the chart becoming empty. Otherwise valueDiff in _computeVerticalRenderingMetrics becomes 0
287         and value-to-y-coordinate conversion always results in NaN.
288         * public/shared/statistics.js:
289         (Statistics..SampleVarianceUpperTriangularMatrix):
290         * unit-tests/statistics-tests.js: Added a test case.
291
292 2018-01-18  Ryosuke Niwa  <rniwa@webkit.org>
293
294         Don't fetch more than two builds to check duplicity of builds in ReportProcessor
295         https://bugs.webkit.org/show_bug.cgi?id=181786
296
297         Reviewed by Wenson Hsieh.
298
299         Limit the number of builds to check to avoid using a lot of memory with a long delay.
300
301         * public/include/report-processor.php:
302         (ReportProcessor::resolve_build_id): 
303
304 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
305
306         Rename config.json to config.json.sample
307         https://bugs.webkit.org/show_bug.cgi?id=181785
308
309         Reviewed by Wenson Hsieh.
310
311         * .gitignore: Added config.json.
312         * ReadMe.md: Updated the instruction.
313         * config.json.sample: Renamed from config.json.
314
315 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
316
317         Unreviewed build fixes in TestGroupResultsViewer.
318
319         * public/v3/components/test-group-results-viewer.js:
320         (TestGroupResultsViewer.prototype.render): _renderCurrentMetricsLazily was never called.
321         (TestGroupResultsViewer.prototype._buildRowForMetric): Don't try to render null or NaN.
322
323 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
324
325         Fix perf dashboard tests for node v8
326         https://bugs.webkit.org/show_bug.cgi?id=181782
327
328         Reviewed by Wenson Hsieh.
329
330         Fixed the various tests for node.js v8, which is the latest LTS version.
331
332         * server-tests/api-manifest-tests.js: Replaced the missing Triggerable.acceptsTest by Triggerable.acceptedTests
333         after r226836.
334         * server-tests/api-measurement-set-tests.js: Added "Z" to the end timestamps to force UTF timezone now that Date
335         in node.js parses using the local timezone by default.
336         * server-tests/resources/test-server.js:
337         (TestServer.prototype._restoreDataDirectory): Fixed the bug that this function was erroneously using the async
338         function to rename a directory per new warnings. This code was racy, and it used to cause a test error occasionally.
339         * server-tests/tools-os-build-fetcher-tests.js: Fixed the assertions to make it work in the latest node.js.
340         * unit-tests/measurement-set-tests.js:
341         (waitForMeasurementSet): Wait for setTimeout to cycle through all microtasks instead of just two microtask cycles.
342
343 2018-01-11  Ryosuke Niwa  <rniwa@webkit.org>
344
345         Cannot trigger Dromaeo tests on internal perf try bots
346         https://bugs.webkit.org/show_bug.cgi?id=179712
347
348         Reviewed by Chris Dumez.
349
350         The bug was caused by CustomAnalysisTaskConfigurator only showing the top-level tests that are triggerable
351         instead of the list of highest level tests that are triggerable.
352
353         * public/v3/components/custom-analysis-task-configurator.js:
354         (CustomAnalysisTaskConfigurator.prototype.selectTests): Update the test group name when a new test is picked.
355         (CustomAnalysisTaskConfigurator.prototype.selectPlatform):
356         (CustomAnalysisTaskConfigurator.prototype._didUpdateSelectedPlatforms): Extracted from selectPlatform.
357         (CustomAnalysisTaskConfigurator.prototype._renderTriggerableTests): Include the list of all highest-level tests
358         which are triggerable.
359         (CustomAnalysisTaskConfigurator.prototype._renderRadioButtonList): Added labelForObject which returns the label
360         to be used in the list items. For tests, we want to use the full name, not just its label.
361         * public/v3/models/analysis-task.js:
362         (AnalysisTask.fetchById):
363         * public/v3/models/triggerable.js:
364         (Triggerable.prototype.acceptedTests): Added.
365         (Triggerable.prototype.acceptsTest): Deleted.
366
367 == Rolled over to ChangeLog-2018-01-01 ==