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