de2bb9b04f1f971c7dc55ffdcb4b586522215c86
[WebKit-https.git] / Websites / perf.webkit.org / ChangeLog
1 2018-04-16  Dewei Zhu  <dewei_zhu@apple.com>
2
3         Commit order should always be returned by api.
4         https://bugs.webkit.org/show_bug.cgi?id=184674
5
6         Reviewed by Ryosuke Niwa.
7
8         Commit order sometimes missing in CommitLog object before this change.
9         This makes ordering commits logic become unnecessarily complicate.
10         This change will ensure commit order is always fetched for a CommitLog object.
11         Change measurement-set API to contain commit order information.
12         Change commits API to contain commit order information.
13
14         * public/api/measurement-set.php: Includes commit order information.
15         * public/include/commit-log-fetcher.php:
16         * public/v3/models/commit-log.js: Added a function to return order information.
17         (CommitLog.prototype.updateSingleton): This function should update commit order.
18         (CommitLog.prototype.order): Returns the order of commit.
19         * public/v3/models/commit-set.js:
20         (MeasurementCommitSet): Update MeasurementCommitSet to contain commit order information when creating CommitLog object.
21         * server-tests/api-measurement-set-tests.js: Updated unit tests.
22         * unit-tests/analysis-task-tests.js: Update unit tests to contain commit order information in mock data.
23         (measurementCluster):
24         * unit-tests/commit-log-tests.js: Added unit tests for CommitLog.order.
25         * unit-tests/commit-set-tests.js: Added commit order in MeasurementCommitSet.
26         * unit-tests/measurement-adaptor-tests.js: Updated unit tests to contain commit order information in mock data.
27         * unit-tests/measurement-set-tests.js: Updated unit tests to contain commit order information in mock data.
28
29 2018-04-15  Ryosuke Niwa  <rniwa@webkit.org>
30
31         Make it possible to hide some repository groups
32         https://bugs.webkit.org/show_bug.cgi?id=184632
33
34         Reviewed by Saam Barati.
35
36         Added the ability to hide repository groups in the custom analysis task configurator from the admin page.
37         Hidden repositroy groups will continue to function for existing test groups. This is purely an UI change.
38
39         * init-database.sql: Added repositorygroup_hidden as a new column to triggerable_repository_groups.
40         * public/admin/triggerables.php: Added a form field to hide a repository group.
41         * public/include/manifest-generator.php: Include hidden state in the manifest file.
42         * public/v3/components/custom-analysis-task-configurator.js:
43         (CustomAnalysisTaskConfigurator.prototype._renderRepositoryPanes): Filter out hidden repository groups.
44         * public/v3/models/triggerable.js:
45         (prototype.isHidden): Added.
46         * server-tests/api-manifest-tests.js: Updated an existing test case to test a hidden repository group.
47
48 2018-04-06  Dewei Zhu  <dewei_zhu@apple.com>
49
50         Added 'CommitSet.diff' which will be shared between multiple independent incoming changes.
51         https://bugs.webkit.org/show_bug.cgi?id=184368
52
53         Reviewed by Ryosuke Niwa.
54
55         'CommitSet.diff' will be used in multiple independent incoming changes.
56         It would be easier to make this a separate change to parallelize the changes depends on this API.
57
58         * public/v3/models/commit-set.js:
59         (CommitSet.prototype.createNameWithoutCollision): Moved from 'AnalysisTaskPage' and make it more generic.
60         (CommitSet.prototype.diff): Describe differences between 2 commit sets including commit, root and patch differences.
61         * public/v3/pages/analysis-task-page.js: Move 'AnalysisTaskPage._createRetryNameForTestGroup' to CommitSet in a more generic form.
62         (AnalysisTaskPage.prototype._retryCurrentTestGroup): Use 'CommitSet.withoutRootPatchOrOwnedCommit' instead.
63         (AnalysisTaskPage.prototype._createRetryNameForTestGroup): Moved to CommitSet in a more generic form.
64         * unit-tests/commit-set-tests.js: Added unit tests for 'CommitSet.diff'.
65
66 2018-04-05  Dewei Zhu  <dewei_zhu@apple.com>
67
68         Fix a bug introduced in r230295 that A/B test result is not shown.
69         https://bugs.webkit.org/show_bug.cgi?id=184350
70
71         Reviewed by Ryosuke Niwa.
72
73         result.label should be assigned in `TestGroup._computeRequestedCommitSets`.
74
75         * public/v3/models/test-group.js:
76         (TestGroup.prototype._computeRequestedCommitSets):
77
78 2018-03-29  Dewei Zhu  <dewei_zhu@apple.com>
79
80         Added UI to show potential regressions in chart with t-testing against segmentations.
81         https://bugs.webkit.org/show_bug.cgi?id=184131
82
83         Reviewed by Ryosuke Niwa.
84
85         Added UI in the chart-pane so that user can use new option in trendline which not only
86         shows the segmentation, but also t-test against potential changes indicated by segmentation.
87
88         Fix a bug in AnalysisTaskPage that chart is not updated when change type of task changes.
89
90         * browser-tests/interactive-time-series-chart-tests.js: Fix a unit tests.
91         * browser-tests/time-series-chart-tests.js: Fix a unit tests.
92         * public/shared/statistics.js: Added a function to t-test certain range based on segmentation results.
93         (Statistics.supportedOneSideTTestProbabilities):
94         (Statistics.findRangesForChangeDetectionsWithWelchsTTest): The argument `segmentations`, every 2 items in the list defines 
95         segmentation, that is why the index incremental is 2 in this funcion.
96         * public/v3/components/chart-pane-base.js: Will select the range if user clicks on a suggested annotation.
97         (ChartPaneBase.prototype.configure):
98         (ChartPaneBase.prototype._didClickAnnotation):
99         * public/v3/components/chart-styles.js:
100         (ChartStyles.annotationFillStyleForTask): Added 'annotationFillStyleForTask' to determine the fillStyle for annotation based on change type of a analysis task.
101         * public/v3/components/interactive-time-series-chart.js:
102         (InteractiveTimeSeriesChart.prototype._findAnnotation): Also need to search among suggested annotaions.
103         * public/v3/components/time-series-chart.js: Introduced 'suggested annotaion' which does not have an existing task and is suggested by t-test based on segmentation.
104         (TimeSeriesChart):
105         (TimeSeriesChart.prototype.setSuggestedAnnotations):
106         (TimeSeriesChart.prototype.allAnnotations): Returns both annotations with and without analysis task.
107         (TimeSeriesChart.prototype._layoutAnnotationBars): Should take all annotations in the calculation.
108         * public/v3/models/measurement-set.js:
109         (MeasurementSet.prototype.metricId): Returns metric id.
110         * public/v3/models/metric.js:
111         (Metric.prototype.summarizeForValues): Added helper function to summarize a given value
112         * public/v3/models/test-group.js:
113         (TestGroup.prototype.compareTestResults): Adapted to use 'Metric.summarizeForValues'.
114         * public/v3/pages/chart-pane.js: Added 'Segmentation with t-test analysis' to 'ChartTrendLineTypes'.
115         (ChartPane.prototype._renderTrendLinePopover):
116         (ChartPane.prototype.async._updateTrendLine): make it an async function.
117         * unit-tests/statistics-tests.js: Added unit tests for 'findRangesForChangeDetectionsWithWelchsTTest'.
118
119 2018-04-02  Aakash Jain  <aakash_jain@apple.com>
120
121         Remove deprecated Buildbot 0.8 code from Perf syncing scripts
122         https://bugs.webkit.org/show_bug.cgi?id=183915
123
124         Reviewed by Ryosuke Niwa.
125
126         * server-tests/resources/mock-data.js:
127         (MockData.buildbotBuildersURLDeprecated): Deleted.
128         (MockData.mockBuildbotBuildersDeprecated): Deleted.
129         (MockData.pendingBuildDeprecated): Deleted.
130         (MockData.runningBuildDeprecated): Deleted.
131         (MockData.finishedBuildDeprecated): Deleted.
132         * tools/js/buildbot-syncer.js:
133         (BuildbotBuildEntryDeprecated): Deleted.
134         (BuildbotBuildEntryDeprecated.prototype.initialize): Deleted.
135         (BuildbotBuildEntryDeprecated.prototype.url): Deleted.
136         (BuildbotSyncer.prototype.scheduleBuildOnBuildbotDeprecated): Deleted.
137         (BuildbotSyncer.prototype._pullRecentBuildsDeprecated): Deleted.
138         (BuildbotSyncer.prototype.pathForPendingBuildsJSONDeprecated): Deleted.
139         (BuildbotSyncer.prototype.pathForBuildJSONDeprecated): Deleted.
140         (BuildbotSyncer.prototype.pathForForceBuildDeprecated): Deleted.
141         (BuildbotSyncer.prototype.url): Deleted.
142         (BuildbotSyncer.prototype.urlForBuildNumberDeprecated): Deleted.
143         * tools/js/buildbot-triggerable.js:
144         (BuildbotTriggerable.prototype.getBuilderNameToIDMapDeprecated): Deleted.
145         * unit-tests/buildbot-syncer-tests.js:
146         (smallPendingBuildDeprecated): Deleted.
147         (smallInProgressBuildDeprecated): Deleted.
148         (smallFinishedBuildDeprecated): Deleted.
149         (samplePendingBuildRequestDeprecated): Deleted.
150         (sampleInProgressBuildDeprecated): Deleted.
151         (sampleFinishedBuildDeprecated): Deleted.
152
153 2018-03-19  Aakash Jain  <aakash_jain@apple.com>
154
155         Update Perf buildbot syncing scripts for Buildbot 0.9
156         https://bugs.webkit.org/show_bug.cgi?id=175969
157
158         Reviewed by Ryosuke Niwa.
159
160         * tools/js/buildbot-triggerable.js:
161         (BuildbotTriggerable.prototype.initSyncers): Switch from Deprecated version to new version of getBuilderNameToIDMap.
162         * tools/js/buildbot-syncer.js:
163         (BuildbotSyncer.prototype.scheduleRequestInGroupIfAvailable): Switch from Deprecated version to new version of scheduleRequest.
164         (BuildbotSyncer.prototype.pullBuildbot): Switch from Deprecated version to new version of pathForPendingBuilds, _pullRecentBuilds 
165         and BuildbotBuildEntry. Parse the pending build-requests data in Buildbot 0.9 format.
166         * unit-tests/buildbot-syncer-tests.js: Updated as per Buildbot 0.9 code.
167         * server-tests/tools-sync-buildbot-integration-tests.js: Ditto.
168         * server-tests/tools-buildbot-triggerable-tests.js: Ditto.
169         * server-tests/resources/mock-data.js: Ditto.
170         (MockData.pendingBuildsUrl): Method to construct pendingBuildsUrl in Buildbot 0.9 format.
171         (MockData.recentBuildsUrl): Ditto for recent builds url.
172         (MockData.statusUrl): Ditto for status url.
173         (MockData.builderIDForName): Method to get builder ID from builder name.
174
175 2018-03-15  Aakash Jain  <aakash_jain@apple.com>
176
177         BuildbotBuildEntry creates an incorrect url for pending builds
178         https://bugs.webkit.org/show_bug.cgi?id=183670
179
180         Reviewed by Ryosuke Niwa.
181
182         * tools/js/buildbot-syncer.js:
183         (BuildbotBuildEntry.prototype.initialize): Fetch buildrequestid from Buildbot.
184         (BuildbotBuildEntry.prototype.url): Construct url for pending build using buildrequestid from Buildbot.
185         * unit-tests/buildbot-syncer-tests.js: Updated unit-test.
186
187 2018-03-14  Aakash Jain  <aakash_jain@apple.com>
188
189         Add support for boolean properties in BuildbotSyncer while submitting build request to Buildbot 0.9 server
190         https://bugs.webkit.org/show_bug.cgi?id=183638
191
192         Reviewed by Ryosuke Niwa.
193
194         * tools/js/buildbot-syncer.js:
195         (BuildbotSyncer._parseRepositoryGroupPropertyTemplate): Allow boolean properties.
196         * server-tests/tools-sync-buildbot-integration-tests.js: Tests for boolean properties.
197         * unit-tests/buildbot-syncer-tests.js: Ditto.
198
199 2018-03-04  Dewei Zhu  <dewei_zhu@apple.com>
200
201         Create analysis task should use build time as fallback when commit time is not available.
202         https://bugs.webkit.org/show_bug.cgi?id=183309
203
204         Reviewed by Ryosuke Niwa.
205
206         Added the ability to schedule analysis task for the range without commit time.
207
208         * public/privileged-api/create-analysis-task.php: Use build time as fallback.
209         * server-tests/privileged-api-create-analysis-task-tests.js: Added a unit test for this change.
210
211 2018-03-04  Aakash Jain  <aakash_jain@apple.com>
212
213         BuildbotBuildEntry for buildbot 0.9 uses incorrect buildrequestid
214         https://bugs.webkit.org/show_bug.cgi?id=183194
215
216         Reviewed by Ryosuke Niwa.
217
218         * tools/js/buildbot-syncer.js:
219         (BuildbotBuildEntry.prototype.initialize): Updated _buildRequestId to use correct build-request-id, as set in syncer._buildRequestPropertyName.
220         (BuildbotSyncer.prototype.pathForPendingBuilds): Updated url to fetch properties for build-requests.
221         * unit-tests/buildbot-syncer-tests.js:
222         (sampleBuildData): Updated sampleBuildData with correct build-request-id in properties. Added
223         properties to samplePendingBuildRequestData.
224
225 2018-02-28  Aakash Jain  <aakash_jain@apple.com>
226
227         Rename samplePendingBuild to samplePendingBuildRequest
228         https://bugs.webkit.org/show_bug.cgi?id=183171
229
230         Reviewed by Ryosuke Niwa.
231
232         * unit-tests/buildbot-syncer-tests.js:
233         (samplePendingBuildRequests): Renamed from samplePendingBuild.
234         (samplePendingBuildRequestDeprecated): Renamed from samplePendingBuildDeprecated.
235         (samplePendingBuild): Deleted.
236         (samplePendingBuildDeprecated): Deleted.
237
238 2018-02-02  Aakash Jain  <aakash_jain@apple.com>
239
240         Add support for submitting build request to Buildbot 0.9 server in BuildbotSyncer
241         https://bugs.webkit.org/show_bug.cgi?id=182218
242
243         Reviewed by Ryosuke Niwa.
244
245         * tools/js/buildbot-syncer.js:
246         (BuildbotSyncer.prototype.scheduleRequest): Added assert to ensure forcescheduler property is always defined. Builds can not
247         be scheduled on Buildbot without this property. Updated unit-tests and server-tests accordingly.
248         (BuildbotSyncer.prototype.scheduleBuildOnBuildbotDeprecated): Method to schedule build request on Buildbot 0.8 server.
249         (BuildbotSyncer.prototype.scheduleBuildOnBuildbot): Method to schedule build request on Buildbot 0.9 server.
250         (BuildbotSyncer.prototype.pathForForceBuildDeprecated): Path for scheudling build on Buildbot 0.8 server.
251         (BuildbotSyncer.prototype.pathForForceBuild): Path for scheudling build on Buildbot 0.9 server.
252         * unit-tests/buildbot-syncer-tests.js:
253         (smallConfiguration): Added test-case for scheduleBuildOnBuildbot. Also added forcescheduler property in sample data.
254         * server-tests/resources/mock-data.js: Added forcescheduler property in sample data.
255         * server-tests/tools-buildbot-triggerable-tests.js: Updated server-tests to take care of added forcescheduler property.
256
257 2018-02-02  Aakash Jain  <aakash_jain@apple.com>
258
259         Add support for fetching recent builds in Buildbot 0.9 format in BuildbotSyncer
260         https://bugs.webkit.org/show_bug.cgi?id=179743
261
262         Reviewed by Ryosuke Niwa.
263
264         * tools/js/buildbot-syncer.js:
265         (BuildbotSyncer.prototype._pullRecentBuildsDeprecated): Renamed from _pullRecentBuilds. This method fetch
266         from Buildbot 0.8 server.
267         (BuildbotSyncer.prototype._pullRecentBuilds): Method to fetch recent builds from Buildbot 0.9 server.
268         (BuildbotSyncer.prototype.pathForRecentBuilds): URL for fetching recent builds from Buildbot 0.9 server.
269         (BuildbotSyncer.prototype.pathForBuildJSONDeprecated): Renamed from pathForBuildJSON.
270         * unit-tests/buildbot-syncer-tests.js:
271         (_pullRecentBuilds.it): unit-test - should not fetch recent builds when count is zero.
272         (_pullRecentBuilds.it): unit-test - should pull the right number of recent builds.
273         (_pullRecentBuilds.it): unit-test - should handle unexpected error while fetching recent builds.
274         (_pullRecentBuilds.it): unit-test - should create BuildbotBuildEntry after fetching recent builds.
275
276 2018-02-01  Aakash Jain  <aakash_jain@apple.com>
277
278         Create BuildbotBuildEntry in Buildbot syncer in Buildbot 0.9 format
279         https://bugs.webkit.org/show_bug.cgi?id=182036
280
281         Reviewed by Ryosuke Niwa.
282
283         * tools/js/buildbot-syncer.js:
284         (BuildbotBuildEntry): Class for Buildbot entry in Buildbot 0.9 data format.
285         (BuildbotBuildEntryDeprecated): Renamed from BuildbotBuildEntry, sub-classed from BuildBotEntry. Handles Buildbot 0.8 data format.
286         (BuildbotBuildEntryDeprecated.prototype.url): URL in buildbot 0.8 format.
287         (BuildbotSyncer.prototype.builderID): Added.
288         (BuildbotSyncer.prototype.pathForPendingBuildsJSONDeprecated): Renamed from BuildbotSyncer.prototype.pathForPendingBuildsJSON.
289         (BuildbotSyncer.prototype.pathForPendingBuilds): Path for pending builds in Buildbot 0.9 format.
290         (BuildbotSyncer.prototype.urlForBuildNumberDeprecated): Deprecated. Renamed from urlForBuildNumber.
291         (BuildbotSyncer.prototype.urlForBuildNumber): Updated in Buildbot 0.9 format.
292         (BuildbotSyncer.prototype.urlForPendingBuild): Buildbot 0.9 has individual webpage for pending buildrequests as well. URL to that page.
293         * unit-tests/buildbot-syncer-tests.js: Renamed BuildbotBuildEntry to BuildbotBuildEntryDeprecated.
294         (sampleBuildData): Sample build data. Common method for in-progress and finished build data.
295         (samplePendingBuildData): Sample data for a pending build. Separate method so that we can easily create sample data with multiple builds.
296         (sampleInProgressBuildData): Ditto for in-progress build.
297         (sampleFinishedBuildData): Ditto for finished build.
298         (samplePendingBuild): Sample data for single pending build.
299         (sampleInProgressBuild): Ditto for in-progress build.
300         (sampleFinishedBuild): Ditto for finished build.
301         (samplePendingBuildDeprecated): Renamed from samplePendingBuild.
302         (sampleInProgressBuildDeprecated): Renamed from sampleInProgressBuild.
303         (sampleFinishedBuildDeprecated): Renamed from sampleFinishedBuild.
304         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for pending build.
305         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for in-progress build.
306         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for finished build.
307         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for mix of in-progress and finished build.
308
309 2018-01-31  Dewei Zhu  <dewei_zhu@apple.com>
310
311         Should chose the best match during 'route' if there are multiple matches.
312         https://bugs.webkit.org/show_bug.cgi?id=182326
313
314         Reviewed by Ryosuke Niwa.
315
316         r227749 made a change that 'analysisCategoryPage' will be added before 'analysisTaskPage'.
317         As route names for both pages starts with 'analysis', whichever added first will be chosen.
318         For a route like 'analysis/task/1'. As a result, 'analysisCategoryPage' will be chosen and
319         this is not expected behavior. Adding the logic on the cases when route name does not extact
320         match the route name, always choose the longest mathcing route name.
321
322         Also modernized the code of 'page-router.js' to use const & let instead of var.
323
324         Added a browser test to guard against this bug.
325
326         * browser-tests/index.html: Import 'page-router-tests.js'.
327         * browser-tests/page-router-tests.js: Added unit test to guard against this bug.
328         * public/v3/pages/page-router.js:
329         (PageRouter.prototype.route): Added logic to find best matching in the case of inexact match.
330         (PageRouter.prototype.pageDidOpen):
331         (PageRouter.prototype._updateURLState):
332         (PageRouter.prototype._serializeToHash):
333         (PageRouter.prototype._deserializeFromHash):
334         (PageRouter.prototype._serializeHashQueryValue):
335         (PageRouter.prototype._deserializeHashQueryValue):
336         (PageRouter.prototype._countOccurrences):
337         (PageRouter):
338
339 2018-01-29  Dewei Zhu  <dewei_zhu@apple.com>
340
341         Should fetch owner commits in build-requests-fetcher.
342         https://bugs.webkit.org/show_bug.cgi?id=182266
343
344         Reviewed by Ryosuke Niwa.
345
346         In a build request, owner commit of a commit is not always one of a commit in the commit set.
347         Build request api should contain owner commits in the 'commits' field of the return value.
348
349         * public/include/build-requests-fetcher.php: Added logic to fetch owner commits and added them into 'commits'.
350         * server-tests/api-build-requests-tests.js: Added a unit test.
351         * server-tests/resources/mock-data.js:
352         (MockData.set addTestGroupWithOwnerCommitNotInCommitSet): Added a test group with a build request, the commit set of which does
353         not contain owner commit of one commit.
354
355 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
356
357         Add the support for reporting Speedometer 2.0 results to perf dashboard
358         https://bugs.webkit.org/show_bug.cgi?id=182089
359         <rdar://problem/36172346>
360
361         Rubber-stamped by Chris Dumez.
362
363         Apparently, this has always worked since the very first version of the perf dashboard added in r163688.
364         The relevant code is at the line 313 of report-processor.php now.
365
366         Added regression tests for this feature since we didn't have any tests four years ago.
367
368         * server-tests/api-report-tests.js:
369
370 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
371
372         REGRESSION(r225898): The perf dashboard fails to open when there are no summary pages
373         https://bugs.webkit.org/show_bug.cgi?id=182210
374
375         Rubber-stamped by Chris Dumez.
376
377         The bug was caused by TestFreshnessPage unconditionally assuming that summaryPageConfiguration is set.
378         Fixed it by not creating TestFreshnessPage when there are no summary pages specified.
379
380         Also modernized the code to use const & let instead of var.
381
382         * public/v3/main.js:
383         (main):
384
385 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
386
387         Perf dashboard's page title can be set to a previously visited page
388         https://bugs.webkit.org/show_bug.cgi?id=182209
389
390         Rubber-stamped by Chris Dumez.
391
392         Before this patch, opening a page and navigating away from it could result in the page title
393         getting set to that of the previously visited page after the new page had been opened.
394
395         This bug was caused by Page.render keep setting document.title even though the page is no longer
396         the currently open page of the router. Fixed it by exiting early in Page.enqueueToRender when
397         this page is not the currently open page of the router.
398
399         Also added basic tests for Page.
400
401         * browser-tests/index.html:
402         * browser-tests/page-tests.js: Added.
403         * public/v3/pages/page.js:
404         (Page): Removed the unused second constructor argument.
405         (Page.prototype.enqueueToRender): Fixed the bug.
406         (Page.prototype.render): Use const instead of var.
407
408 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
409
410         CommitLogViewer should not fetch commits in serial
411         https://bugs.webkit.org/show_bug.cgi?id=182207
412
413         Rubber-stamped by Chris Dumez.
414
415         Fetch both the commits in the range as well as the preceding commit at once instead of
416         fetching the preceding commit only after the commits in the range had been fetched.
417
418         * browser-tests/commit-log-viewer-tests.js: Fixed the tcoest case after r224227.
419         * public/v3/components/commit-log-viewer.js:
420         (CommitLogViewer.prototype._fetchCommitLogs): Fetch commits in parallel.
421
422 2018-01-24  Dewei Zhu  <dewei_zhu@apple.com>
423
424         Check existence of 'node_modules_dir' before creating it.
425         https://bugs.webkit.org/show_bug.cgi?id=182040
426
427         Reviewed by Aakash Jain.
428
429         Fix the bug introduced in r227395.
430
431         * tools/run-tests.py: Added directory existence check.
432
433 2018-01-22  Dewei Zhu  <dewei_zhu@apple.com>
434
435         Fix the bug that 'TestGroupResultsViewer' creates unnecessary rows.
436         https://bugs.webkit.org/show_bug.cgi?id=181967
437
438         Reviewed by Ryosuke Niwa.
439
440         Fixed a bug caused by a typo in CommitSet.equals, which makes it returns incorrect results for most
441         comparison between a CommitSet and a MeasurementCommitSet.
442
443         MeasurementCommitSet does not have full information for the commits, thus, it cannot build mappings
444         between root/patch/owner commit/requires build to repository. When querying whether a given repository
445         needs to be built, MeasurementCommitSet will return undefined. Due to 'undefined != false', this
446         equality check will fail. Making 'CommitSet.requiresBuildForRepository' defaults to 'false' would fix
447         this bug.
448
449         * public/v3/models/commit-set.js:
450         (CommitSet.prototype.requiresBuildForRepository): Make it return false when key does not exist
451         instead of 'undefined'.
452         (CommitSet.prototype.equals): Fixed the typo that causes the bug.
453         Use wrapped functions instead of querying the mapping directly.
454         * unit-tests/commit-set-tests.js: Added unit tests.
455
456 2018-01-18  Dewei Zhu  <dewei_zhu@apple.com>
457
458         'run-test.py' script should make sure 'node_modules' directory exists before installing node packages.
459         https://bugs.webkit.org/show_bug.cgi?id=181808
460
461         Reviewed by Ryosuke Niwa.
462
463         'run-test.py' will fail if 'node_modules' does not exist before running this script.
464         Instead of calling 'os.chdir' to change directory, use 'cwd' in subprocess instead.
465
466         * tools/run-tests.py: Added the logic to ensure 'node_modules' exists.
467         Also use 'cwd' in subprocess.call instead of calling 'os.chdir' ahead.
468
469 2018-01-20  Dewei Zhu  <dewei_zhu@apple.com>
470
471         Extend 'ifBuilt' config key to set property based on whether certain repositories are built or not.
472         https://bugs.webkit.org/show_bug.cgi?id=181906
473
474         Reviewed by Ryosuke Niwa.
475
476         Before this change, 'ifBuilt' will always set specified property for test properties as long as there
477         is a build type build in the same build request group. However, this is no longer valid as we don't
478         want to set specified property for testing when only owned commit is built in previous build.
479         'ifBuilt' needs to conditionally set property based on whether certain required repositories are built.
480         Empty required repository list means no requirement on repository to set property.
481
482         * tools/js/buildbot-syncer.js:
483         (BuildbotSyncer.prototype._propertiesForBuildRequest):In the case of 'built', only set property when
484         repository requirment is meet and there is a 'build' root request in the same build request group.
485         (BuildbotSyncer._parseRepositoryGroup): Extend 'ifBuild' to pass information based on contition.
486         * unit-tests/buildbot-syncer-tests.js: Added unit tests.
487
488 2018-01-19  Dewei Zhu  <dewei_zhu@apple.com>
489
490         Should reject updating a build request which has an associated build.
491         https://bugs.webkit.org/show_bug.cgi?id=181893
492
493         Reviewed by Ryosuke Niwa.
494
495         Current code does not prevent submitting to same build request multiple times.
496         This could lead to a build losing its associated build request.
497         As a result, this build will be visible in charts which is not right.
498         Added a check when a build request is reported.
499         Addressed a 'FIXME' for the race condition inside ReportProcessor->resolve_build_id by surrounding
500         it with a database transaction.
501
502         * public/include/report-processor.php:
503         Wrap adding platform and resolve_build_id with a database transaction.
504         Add a check to make sure only a build request has no associated build can be updated.
505         * server-tests/api-report-tests.js: Added unit tests accordingly.
506
507 2018-01-18  Dewei Zhu  <dewei_zhu@apple.com>
508
509         Should allow updating a build-request to 'canceled'.
510         https://bugs.webkit.org/show_bug.cgi?id=181819
511
512         Reviewed by Ryosuke Niwa.
513
514         It's possible syncing script update a build-request to 'canceled' state.
515
516         * public/api/build-requests.php: Added 'canceled' as an acceptable update state.
517         * server-tests/api-build-requests-tests.js: Added a unit test to update a build-request to 'canceled'.
518
519 2018-01-18  Aakash Jain  <aakash_jain@apple.com>
520
521         Add support for builderNameToIDMap in BuildbotSyncer
522         https://bugs.webkit.org/show_bug.cgi?id=176526
523
524         Reviewed by Ryosuke Niwa.
525
526         * tools/js/buildbot-syncer.js:
527         (BuildbotSyncer._loadConfig): Added builderNameToIDMap parameter. It would be used later on.
528         (BuildbotSyncer._resolveBuildersWithPlatforms): Ditto.
529         (BuildbotSyncer._validateAndMergeConfig): Added builderID as a valid config parameter.
530         * tools/js/buildbot-triggerable.js:
531         (BuildbotTriggerable.prototype.getBuilderNameToIDMap): Method to fetch BuilderNameToIDMap from Buildbot 0.9.
532         (BuildbotTriggerable.prototype.getBuilderNameToIDMapDeprecated): Method to fetch BuilderNameToIDMap from Buildbot 0.8.
533         (BuildbotTriggerable.prototype.initSyncers): Updated to use getBuilderNameToIDMap.
534         * unit-tests/buildbot-syncer-tests.js: Updated unit-tests.
535         * server-tests/resources/mock-data.js:
536         (MockData.buildbotBuildersURLDeprecated): URL for fetching Builders list.
537         (MockData.buildbotBuildersURL): Ditto for Buildbot 0.9
538         (MockData.mockBuildbotBuildersDeprecated): Sample builders data for Buildbot 0.8
539         (MockData.mockBuildbotBuilders): Ditto for Buildbot 0.9
540         * server-tests/tools-buildbot-triggerable-tests.js: Added test for getBuilderNameToIDMap. Updated tests to handle
541         newly added promise for fetching builders list from Buildbot.
542         * server-tests/tools-sync-buildbot-integration-tests.js: Ditto.
543
544 2018-01-18  Ryosuke Niwa  <rniwa@webkit.org>
545
546         Charts can be empty when values are all identical
547         https://bugs.webkit.org/show_bug.cgi?id=181828
548
549         Reviewed by Alexey Proskuryakov.
550
551         Fixed the bug that when SampleVarianceUpperTriangularMatrix can store -Infinity as the initial cost
552         of some entries when the sample standard deviation between two points turns out to be 0,
553         and cause splitIntoSegmentsUntilGoodEnough to return undefiend because no segmentation has a finite cost.
554
555         Also fixed the bug that the time series chart fails to show any data points when all data points have
556         identical values as the entire y-coordinate gets collapsed to an empty value range by adjusting the max value
557         when min & max values are identical.
558
559         * public/v3/components/time-series-chart.js:
560         (TimeSeriesChart.prototype._ensureValueRangeCache): Raise the max slightly when min & max are identical
561         to avoid the chart becoming empty. Otherwise valueDiff in _computeVerticalRenderingMetrics becomes 0
562         and value-to-y-coordinate conversion always results in NaN.
563         * public/shared/statistics.js:
564         (Statistics..SampleVarianceUpperTriangularMatrix):
565         * unit-tests/statistics-tests.js: Added a test case.
566
567 2018-01-18  Ryosuke Niwa  <rniwa@webkit.org>
568
569         Don't fetch more than two builds to check duplicity of builds in ReportProcessor
570         https://bugs.webkit.org/show_bug.cgi?id=181786
571
572         Reviewed by Wenson Hsieh.
573
574         Limit the number of builds to check to avoid using a lot of memory with a long delay.
575
576         * public/include/report-processor.php:
577         (ReportProcessor::resolve_build_id): 
578
579 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
580
581         Rename config.json to config.json.sample
582         https://bugs.webkit.org/show_bug.cgi?id=181785
583
584         Reviewed by Wenson Hsieh.
585
586         * .gitignore: Added config.json.
587         * ReadMe.md: Updated the instruction.
588         * config.json.sample: Renamed from config.json.
589
590 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
591
592         Unreviewed build fixes in TestGroupResultsViewer.
593
594         * public/v3/components/test-group-results-viewer.js:
595         (TestGroupResultsViewer.prototype.render): _renderCurrentMetricsLazily was never called.
596         (TestGroupResultsViewer.prototype._buildRowForMetric): Don't try to render null or NaN.
597
598 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
599
600         Fix perf dashboard tests for node v8
601         https://bugs.webkit.org/show_bug.cgi?id=181782
602
603         Reviewed by Wenson Hsieh.
604
605         Fixed the various tests for node.js v8, which is the latest LTS version.
606
607         * server-tests/api-manifest-tests.js: Replaced the missing Triggerable.acceptsTest by Triggerable.acceptedTests
608         after r226836.
609         * server-tests/api-measurement-set-tests.js: Added "Z" to the end timestamps to force UTF timezone now that Date
610         in node.js parses using the local timezone by default.
611         * server-tests/resources/test-server.js:
612         (TestServer.prototype._restoreDataDirectory): Fixed the bug that this function was erroneously using the async
613         function to rename a directory per new warnings. This code was racy, and it used to cause a test error occasionally.
614         * server-tests/tools-os-build-fetcher-tests.js: Fixed the assertions to make it work in the latest node.js.
615         * unit-tests/measurement-set-tests.js:
616         (waitForMeasurementSet): Wait for setTimeout to cycle through all microtasks instead of just two microtask cycles.
617
618 2018-01-11  Ryosuke Niwa  <rniwa@webkit.org>
619
620         Cannot trigger Dromaeo tests on internal perf try bots
621         https://bugs.webkit.org/show_bug.cgi?id=179712
622
623         Reviewed by Chris Dumez.
624
625         The bug was caused by CustomAnalysisTaskConfigurator only showing the top-level tests that are triggerable
626         instead of the list of highest level tests that are triggerable.
627
628         * public/v3/components/custom-analysis-task-configurator.js:
629         (CustomAnalysisTaskConfigurator.prototype.selectTests): Update the test group name when a new test is picked.
630         (CustomAnalysisTaskConfigurator.prototype.selectPlatform):
631         (CustomAnalysisTaskConfigurator.prototype._didUpdateSelectedPlatforms): Extracted from selectPlatform.
632         (CustomAnalysisTaskConfigurator.prototype._renderTriggerableTests): Include the list of all highest-level tests
633         which are triggerable.
634         (CustomAnalysisTaskConfigurator.prototype._renderRadioButtonList): Added labelForObject which returns the label
635         to be used in the list items. For tests, we want to use the full name, not just its label.
636         * public/v3/models/analysis-task.js:
637         (AnalysisTask.fetchById):
638         * public/v3/models/triggerable.js:
639         (Triggerable.prototype.acceptedTests): Added.
640         (Triggerable.prototype.acceptsTest): Deleted.
641
642 == Rolled over to ChangeLog-2018-01-01 ==