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