OSBuildFetcher should respect maxRevision while finding OS builds to report.
[WebKit.git] / Websites / perf.webkit.org / ChangeLog
1 2018-05-23  Dewei Zhu  <dewei_zhu@apple.com>
2
3         OSBuildFetcher should respect maxRevision while finding OS builds to report.
4         https://bugs.webkit.org/show_bug.cgi?id=185925
5
6         Reviewed by Ryosuke Niwa.
7
8         * server-tests/tools-os-build-fetcher-tests.js: Fix a typo in the unit tests.
9         Added unit tests for this change. Aslo convert an existing test using async.
10         * tools/js/os-build-fetcher.js:
11         (prototype._fetchAvailableBuilds): It should also use 'maxRevision' to filter builds to be reported.
12         It should use 'minRevisionOrder' when no commit has ever been submitted.
13         (prototype._commitsForAvailableBuilds): Takes 'maxOrder' as fifth argument.
14         'minOrder' and 'maxOrder' should be inclusive.
15
16 2018-05-11  Dewei Zhu  <dewei_zhu@apple.com>
17
18         Update ChartPane per change r231087.
19         https://bugs.webkit.org/show_bug.cgi?id=185570
20
21         Reviewed by Ryosuke Niwa.
22
23         On r231087 we change the return type of AnalysisTask.create, ChartPane needs to adapt
24         this change.
25
26         * public/v3/pages/chart-pane.js: Adapted the change that AnalysisTask.create now returns
27         an AnalysisTask object.
28         (ChartPane.prototype.async._analyzeRange):
29
30 2018-05-10  Dewei Zhu  <dewei_zhu@apple.com>
31
32         CommitLogViewer._preceedingCommit should not always be null
33         https://bugs.webkit.org/show_bug.cgi?id=185540
34
35         Reviewed by Ryosuke Niwa.
36
37         Fix the bug introduced in r227746 that CommitLogViewer._preceedingCommit is always null.
38
39         * browser-tests/index.html: Fix expected measurement-set url.
40         * public/v3/components/commit-log-viewer.js:
41         (CommitLogViewer.prototype._fetchCommitLogs): CommitLogViewer._preceedingCommit should be set
42          when fetching for preceeding revision succeeds.
43
44 2018-05-03  Dewei Zhu  <dewei_zhu@apple.com>
45
46         Range bisector should check the commits for repositories without change in specified range.
47         https://bugs.webkit.org/show_bug.cgi?id=185269
48
49         Reviewed by Ryosuke Niwa.
50
51         For repositories without a change in the specified range, we still need to use them to filter commit
52         sets. Before this change, code does not apply filtering by those repositories against commit set. As
53         a result, commit sets with different commits for those repositories may be chosen as bisecting commit set.
54
55         * public/v3/commit-set-range-bisector.js: Updated the logic to verify range for repositories without
56         change in range.
57         (CommitSetRangeBisector.async.commitSetClosestToMiddleOfAllCommits):
58         * unit-tests/commit-set-range-bisector-tests.js: Added a unit test to guard against this change.
59
60 2018-05-02  Dewei Zhu  <dewei_zhu@apple.com>
61
62         Create analysis task should sync analysis task status after creation.
63         https://bugs.webkit.org/show_bug.cgi?id=185222
64
65         Reviewed by Ryosuke Niwa.
66
67         * public/v3/models/analysis-task.js:
68         (AnalysisTask.async.create): Fetch newly-created analysis task right about its creation.
69         (AnalysisTask):
70         * tools/js/measurement-set-analyzer.js:
71         (MeasurementSetAnalyzer.prototype.async._analyzeMeasurementSet): Adjust as 'AnalysisTask.create' now
72         returns an anlysis task instance.
73         (MeasurementSetAnalyzer):
74         * unit-tests/analysis-task-tests.js: Added a unit test for this change.
75         (async):
76         * unit-tests/measurement-set-analyzer-tests.js: Update unit tests accordingly.
77         Fix a typo in one previous unit test.
78         (async):
79
80 2018-05-01  Dewei Zhu  <dewei_zhu@apple.com>
81
82         Write a script that detects chart changes by using v3 API.
83         https://bugs.webkit.org/show_bug.cgi?id=184419
84
85         Reviewed by Ryosuke Niwa.
86
87         Added a script that detects chart changes and schedule confirming analysis task.
88
89         * browser-tests/async-task-tests.js: Added a unit test for 'AsyncTask'.
90         * browser-tests/index.html: Added import for 'AsyncTask' for testing.
91         * public/shared/statistics.js: Make 'findRangesForChangeDetectionsWithWelchsTTest' defaults to 0.99 one sided possibility.
92         (Statistics.new.this.findRangesForChangeDetectionsWithWelchsTTest):
93         * public/v3/async-task.js:
94         (AsyncTask.isAvailable): Helper function to determine whether AsyncTask is available or not as 'Worker' is
95         not available in nodejs.
96         (AsyncTask):
97         * public/v3/models/bug.js: Export as a module.
98         * public/v3/models/measurement-set.js:
99         (MeasurementSet.prototype._invokeSegmentationAlgorithm): Added a check to avoid using AsyncTask when running in NodeJs.
100         (MeasurementSet):
101         * server-tests/resources/common-operations.js: Added a helper function to assert certain exception is thrown.
102         (async.assertThrows):
103         * tools/js/measurement-set-analyzer.js: Added 'MeasurementSetAnalyzer' module for analyzing measurement set.
104         (MeasurementSetAnalyzer):
105         (MeasurementSetAnalyzer.prototype.async.analyzeOnce):
106         (MeasurementSetAnalyzer.measurementSetListForAnalysis):
107         (MeasurementSetAnalyzer.prototype.async._analyzeMeasurementSet):
108         * tools/js/v3-models.js: Added import for 'Bug' object.
109         * tools/run-analysis.js: Added this script to detect measurement set changes.
110         (main):
111         (async.analysisLoop):
112         * unit-tests/measurement-set-analyzer-tests.js: Added unit tests for 'MeasurementSetAnalyzer'.
113         * unit-tests/resources/mock-v3-models.js: Reset 'MeasurementSet._set' every time.
114         Update mock platform to include lastModifiedByMetric information.
115         (MockModels.inject):
116
117 2018-04-30  Ryosuke Niwa  <rniwa@webkit.org>
118
119         Creating a custom analysis task after fetching all analysis tasks fail
120         https://bugs.webkit.org/show_bug.cgi?id=184641
121
122         Reviewed by Saam Barati.
123
124         The bug was caused by AnalysisTask._fetchSubset not fetching the analysis task when all analysis tasks
125         had previously been fetched (AnlaysisTask._fetchAllPromise is set) even when noCache is set to true.
126         Fixed it by ignornig _fetchAllPromise when noCache is set to true.
127
128         This patch also adds noCache argument to AnalysisTask.fetchById and reverts the inadvertent change in
129         r226836 to always set noCache to true in this function.
130
131         * public/v3/models/analysis-task.js:
132         (AnalysisTask.fetchById): Added noCache argument instead of always specifying true, and modernized the code.
133         (AnalysisTask._fetchSubset): Fixed the bug. See above description.
134         * public/v3/models/test-group.js:
135         (TestGroup.createWithTask): Set noCache to true when calling AnalysisTask.fetchById here.
136         * unit-tests/analysis-task-tests.js: Added test cases for AnalysisTask.fetchById, including a test
137         to make sure it doesn't fetch the specified analysis task when noCache is set to false and all analysis
138         tasks had previously been fetched for the aforementioned revert of the inadvertent change in r226836.
139         (sampleAnalysisTasks): Renamed from sampleAnalysisTasks as the result contains multiple analysis tasks.
140         * unit-tests/test-groups-tests.js: Added a test case for TestGroup.createWithTask
141
142 2018-04-30  Ryosuke Niwa  <rniwa@webkit.org>
143
144         REGRESSION(r230960): Browser tests under TimeSeriesChart fetchMeasurementSets all fail
145         https://bugs.webkit.org/show_bug.cgi?id=185125
146
147         Reviewed by Saam Barati.
148
149         The bug was caused by mock-remote-api.js always loading PrivilegedAPI using require, which doesn't work in a browser.
150         Fixed the bug by explicitly requiring the right kind of PrivilegedAPI in each unit test instead.
151
152         * unit-tests/analysis-task-tests.js:
153         * unit-tests/buildbot-syncer-tests.js:
154         * unit-tests/commit-log-tests.js:
155         * unit-tests/commit-set-range-bisector-tests.js:
156         * unit-tests/commit-set-tests.js:
157         * unit-tests/measurement-set-tests.js:
158         * unit-tests/privileged-api-tests.js:
159         * unit-tests/resources/mock-remote-api.js:
160         (MockRemoteAPI.inject): Take PrivilegedAPI instead of the type string. Also fixed a bug that _token wasn't unset
161         after each unit test, and superfluous initializations of originalRemoteAPI and originalPrivilegedAPI.
162         * unit-tests/test-groups-tests.js:
163
164 2018-04-30  Dewei Zhu  <dewei_zhu@apple.com>
165
166         MeasurementSet._constructUrl should construct absolute url.
167         https://bugs.webkit.org/show_bug.cgi?id=185137
168
169         Reviewed by Ryosuke Niwa.
170
171         MeasurementSet._constructUrl should not construct an url with relative path.
172
173         * public/v3/models/measurement-set.js: Should use '/api/measurement-set...' and '/data/measurement-set-...'
174         for uncached and cached fetching.
175         * unit-tests/measurement-set-tests.js: Updated unit tests.
176         (const.set MeasurementSet):
177
178 2018-04-26  Dewei Zhu  <dewei_zhu@apple.com>
179
180         Extend create-analysis-test API to be able to create with confirming test group.
181         https://bugs.webkit.org/show_bug.cgi?id=184958
182
183         Reviewed by Ryosuke Niwa.
184
185         Extend create-analysis-test API to be able to create an analysis task with confirming test group.
186         Update create analysis task UI in chart pane to adapt this new API.
187         Refactored '/privileged-api/create-test-group' API to share some creating test group logic with '/privileged-api/create-analysis-task' API.
188         Moved the shared logic to commit-sets-helpers.php.
189
190         * public/api/analysis-tasks.php: Use 'require_once' instead of 'require'.
191         * public/include/commit-sets-helpers.php: Added.
192         (create_test_group_and_build_requests): A helper function that creates test group and build requests for a analysis
193         task. In long term, this should be a class to avoid passing long argument list around.
194         (insert_commit_sets_and_construct_configuration_list): Based on commit sets returns build and test configurations.
195         (insert_build_request_for_configuration): Insert build requests based on configuration.
196         (commit_sets_from_revision_sets): Returns commit sets from given revision set list.
197         * public/privileged-api/create-analysis-task.php: Added the ability to create analysis task with confirming test
198         groups when repetition count is specified.
199         * public/privileged-api/create-test-group.php: Moved shared function to commit-sets-helpers.php.
200         * public/v3/models/analysis-task.js:
201         (AnalysisTask.create): Instead of accepting run ids, it now accepts points and test group name and confirming iterations.
202         It will conditionally add test group information into parameter when confirming iterations is a positive number.
203         (AnalysisTask):
204         * public/v3/models/commit-set.js:
205         (CommitSet.revisionSetsFromCommitSets): Move 'TestGroup._revisionSetsFromCommitSets' since CommitSet class is more
206         appropriate place and it will be shared by both TestGroup and AnalysisTask
207         (CommitSet):
208         * public/v3/models/test-group.js:
209         (TestGroup.createWithTask): Adapt 'CommitSet.revisionSetsFromCommitSets'.
210         (TestGroup.createWithCustomConfiguration): Adapt 'CommitSet.revisionSetsFromCommitSets'.
211         (TestGroup.createAndRefetchTestGroups): Adapt 'CommitSet.revisionSetsFromCommitSets'.
212         (TestGroup._revisionSetsFromCommitSets): Deleted and moved to 'CommitSet.revisionSetsFromCommitSets'.
213         * public/v3/pages/chart-pane.js:
214         (ChartPane.prototype.didConstructShadowTree): Added the logic to disable options when checkbox for creating confirming
215         test group is unchecked.
216         (ChartPane.prototype._analyzeRange): Conditionally create confirming test group from UI.
217         (ChartPane.cssTemplate):
218         * server-tests/privileged-api-create-analysis-task-tests.js: Added unit tests. Added a unit test for 'NodePrivilegedAPI'.
219         * unit-tests/analysis-task-tests.js: Added unit tests.
220         * unit-tests/commit-set-tests.js: Added unit test for 'CommitSet.revisionSetsFromCommitSets'.
221         * unit-tests/resources/mock-remote-api.js: Reset csrf token when BrowserPrivilegedAPI is used.
222         (MockRemoteAPI.inject):
223
224 2018-04-23  Dewei Zhu  <dewei_zhu@apple.com>
225
226         Tool scripts should not use PrivilegedAPI from 'public/v3/privileged-api.js'.
227         https://bugs.webkit.org/show_bug.cgi?id=184766
228
229         Reviewed by Ryosuke Niwa.
230
231         For tools, we should not use PrivilegedAPI for tools as current PrivilegedAPI
232         is used by UI and it is unnecessary to generate CSRF token for tools.
233         Will post a followup patch that creates a PrivilegedAPI used by tools.
234         Make a change on TestServer.inject and MockRemoteAPI.inject to allow specifying
235         BrowserPrivilegedAPI or NodePrivilegedAPI in the test. Currently defaults to
236         BrowserPrivilegedAPI as this is the test behavior before this change.
237
238         * server-tests/resources/common-operations.js: Allow passing type of privileged api
239         information to TestServer.inject.
240         * server-tests/resources/test-server.js: Conditionally inject PrivilegedAPI based on
241         type of privileged api.
242         (TestServer.prototype.inject):
243         (TestServer):
244         * server-tests/tools-buildbot-triggerable-tests.js: Updated 'prepareServerTest' invocation.
245         * server-tests/tools-os-build-fetcher-tests.js: Updated 'prepareServerTest' invocation.
246         * server-tests/tools-sync-buildbot-integration-tests.js: Temporarily injecting
247         BrowserPrivilegedAPI for mocking UploadedFile. The actual script does not rely on
248         BrowserPrivilegedAPI at all.
249         (async.createTestGroupWihPatch):
250         (beforeEach):
251         * tools/js/privileged-api.js: Added NodePrivilegedAPI
252         (NodePrivilegedAPI.prototype.sendRequest):
253         (NodePrivilegedAPI.configure): Configure the slave name and password.
254         (NodePrivilegedAPI):
255         * tools/js/v3-models.js: Removed the import of PrivilegedAPI.
256         * unit-tests/privileged-api-tests.js:. Added unit tests for NodePrivilegedAPI.
257         * unit-tests/resources/mock-remote-api.js: Conditionally inject PrivilegedAPI based on
258         the type of privileged api.
259         (MockRemoteAPI.inject):
260
261 2018-04-23  Dewei Zhu  <dewei_zhu@apple.com>
262
263         Revision information returned by querying measurement set api with analysis task id should contain commit order.
264         https://bugs.webkit.org/show_bug.cgi?id=184902
265
266         Reviewed by Ryosuke Niwa.
267
268         This is a bug fix for r230719 which does not cover the case while querying `measurement-set.php?analysisTask=$task_id`
269
270         * public/api/measurement-set.php: AnalysisResultsFetcher.fetch_commits results should contains commit order.
271         * server-tests/api-measurement-set-tests.js: Added unit test for this change.
272
273 2018-04-19  Dewei Zhu  <dewei_zhu@apple.com>
274
275         Add a bisect button to automatically schedule bisecting A/B tasks.
276         https://bugs.webkit.org/show_bug.cgi?id=183888
277
278         Reviewed by Ryosuke Niwa.
279
280         Extended AnalysisTask's ability to figure out bisecting A/B tasks based on existing data points and test groups.
281         Updated analysis page UI to show bisect button which will only appear when the middle commit set of the range in
282         test group can be found.
283
284         Finding middle commit set algorithm is described as follows:
285         1. Find all commits from multiple repositories among the ranges specified by two commit sets in test group. In
286         the meanwhile, merge all commits that have commit time into a single list. For commits only have commit order,
287         put those commits into separate lists.
288         2. Filter all the available commit sets in current analysis task by keeping the ones have exact repositories
289         as the two commit sets in specified test group, and every commit of a commit set is in side the commit range.
290         After filtering the commit sets, sort the remaining ones and only keep one commit set if multiple commit sets
291         are equal to each other.
292         3. Among commits processed by step 2, find the commit sets that have the commit which is closest to the middle of
293         all commits that have commit time created from step 1.
294         4. Among commits processed by step 3, find the commit sets that have the commit which is closest to the middle of
295         commits that only have commit order and categorized by repository. We have to iterate through repository as commit
296         order is not granted to be comparable between different repositories.
297         5. If more than one commit sets are found, choose the middle commit set.
298
299         * public/v3/commit-set-range-bisector.js: Added.
300         (CommitSetRangeBisector.async.commitSetClosestToMiddleOfAllCommits): Instead of naively returning the middle of
301         existing commit set array, this function selects a bisect bisection points that is closest to actually middle of
302         the revision range based on all revisions reported to performance dashboard.
303         (CommitSetRangeBisector._findCommitSetsWithinRange): Helper function to find commit sets those are in specified range.
304         (CommitSetRangeBisector._orderCommitSetsByTimeAndOrderThenDeduplicate): Helper function to sort and deduplicate commit sets.
305         (CommitSetRangeBisector._closestCommitSetsToBisectingCommitByTime): Helper function to find the commit sets those
306         are closest to the middle of among all the commits in the range that have commit time.
307         (CommitSetRangeBisector._findCommitSetsClosestToMiddleOfCommitsWithOrder): Helper function which goes through all
308         repositories the commit of which has commit order, and find the commit sets those are closest to the middle of
309         commits for each repository.
310         (CommitSetRangeBisector._buildCommitToCommitSetMap): Helper function to builder mapping from a commit to commit
311         sets those contain this commit.
312         (CommitSetRangeBisector._findCommitClosestToMiddleIndex): Helper function to find closest commit to the middle of index.
313         (CommitSetRangeBisector):
314         * public/v3/index.html: Imports 'public/v3/commit-set-range-bisector.js'.
315         * public/v3/models/analysis-task.js:
316         (AnalysisTask.prototype.async.commitSetsFromTestGroupsAndMeasurementSet): Aggregates all existing commit sets in
317         test groups of current analysis tasks.
318         * public/v3/models/commit-log.js:
319         (CommitLog.prototype.hasCommitTime): A helper function determine whether a commit has a commit time. For commit
320         that does not have time, server will return commit time as zero. As it is unrealistic for a commit has commit time
321         0, it would be safe to assume a valid commit time is greater than 0.
322         (CommitLog.prototype.hasCommitOrder): Returns whether a commit has a commit oder.
323         (CommitLog.hasOrdering): Determine whether we can order two commits by commit time or commit order.
324         (CommitLog.orderTwoCommits): Order two commits incrementally.
325         * public/v3/models/commit-set.js:
326         (CommitSet.prototype.hasSameRepositories): A helper function to determine whether a commit set has same repositories
327         as current repository.
328         (CommitSet.containsRootOrPatchOrOwnedCommit): A helper function to determine whether current commit set has root,
329         patch or owned commit.
330         (CommitSet.commitForRepository): This function defined twice identically, remove one of them.
331         * public/v3/models/test-group.js: Make '_computeRequestedCommitSets' a static function as it does not use any
332         instance variables.
333         * public/v3/pages/analysis-task-page.js: Added bisect button.
334         (AnalysisTaskTestGroupPane):
335         (AnalysisTaskTestGroupPane.prototype.didConstructShadowTree):
336         (AnalysisTaskTestGroupPane.prototype.setTestGroups): Update 'setTestGroups' to update _bisectingCommitSetByTestGroup
337         when the test groups changes.
338         (AnalysisTaskTestGroupPane.prototype._renderCurrentTestGroup): Added code to conditionally show bisect button.
339         Bisect button will only show when there is a middle commit set for that test group.
340         (AnalysisTaskTestGroupPane.htmlTemplate):
341         (AnalysisTaskTestGroupPane.cssTemplate):
342         (AnalysisTaskPage.prototype.didConstructShadowTree):
343         (AnalysisTaskPage.prototype._retryCurrentTestGroup):
344         (AnalysisTaskPage.prototype.async._bisectCurrentTestGroup): A callback when bisect button is clicked.
345         * tools/js/v3-models.js:
346         * unit-tests/commit-log-tests.js: Added unit tests for 'CommitLog.hasCommitTime', 'CommitLog.hasCommitOrder',
347         'CommitLog.orderTwoCommits', 'CommitLog.hasOrdering'.
348         * unit-tests/commit-set-range-bisector-tests.js: Unit tests for 'CommitSetRangeBisector.commitSetClosestToMiddleOfAllCommits'.
349         * unit-tests/commit-set-tests.js: Added unit tests for 'CommitSet.hasSameRepositories' and 'CommitSet.containsRootOrPatchOrOwnedCommit'.
350
351 2018-04-16  Dewei Zhu  <dewei_zhu@apple.com>
352
353         Commit order should always be returned by api.
354         https://bugs.webkit.org/show_bug.cgi?id=184674
355
356         Reviewed by Ryosuke Niwa.
357
358         Commit order sometimes missing in CommitLog object before this change.
359         This makes ordering commits logic become unnecessarily complicate.
360         This change will ensure commit order is always fetched for a CommitLog object.
361         Change measurement-set API to contain commit order information.
362         Change commits API to contain commit order information.
363
364         * public/api/measurement-set.php: Includes commit order information.
365         * public/include/commit-log-fetcher.php:
366         * public/v3/models/commit-log.js: Added a function to return order information.
367         (CommitLog.prototype.updateSingleton): This function should update commit order.
368         (CommitLog.prototype.order): Returns the order of commit.
369         * public/v3/models/commit-set.js:
370         (MeasurementCommitSet): Update MeasurementCommitSet to contain commit order information when creating CommitLog object.
371         * server-tests/api-measurement-set-tests.js: Updated unit tests.
372         * unit-tests/analysis-task-tests.js: Update unit tests to contain commit order information in mock data.
373         (measurementCluster):
374         * unit-tests/commit-log-tests.js: Added unit tests for CommitLog.order.
375         * unit-tests/commit-set-tests.js: Added commit order in MeasurementCommitSet.
376         * unit-tests/measurement-adaptor-tests.js: Updated unit tests to contain commit order information in mock data.
377         * unit-tests/measurement-set-tests.js: Updated unit tests to contain commit order information in mock data.
378
379 2018-04-15  Ryosuke Niwa  <rniwa@webkit.org>
380
381         Make it possible to hide some repository groups
382         https://bugs.webkit.org/show_bug.cgi?id=184632
383
384         Reviewed by Saam Barati.
385
386         Added the ability to hide repository groups in the custom analysis task configurator from the admin page.
387         Hidden repositroy groups will continue to function for existing test groups. This is purely an UI change.
388
389         * init-database.sql: Added repositorygroup_hidden as a new column to triggerable_repository_groups.
390         * public/admin/triggerables.php: Added a form field to hide a repository group.
391         * public/include/manifest-generator.php: Include hidden state in the manifest file.
392         * public/v3/components/custom-analysis-task-configurator.js:
393         (CustomAnalysisTaskConfigurator.prototype._renderRepositoryPanes): Filter out hidden repository groups.
394         * public/v3/models/triggerable.js:
395         (prototype.isHidden): Added.
396         * server-tests/api-manifest-tests.js: Updated an existing test case to test a hidden repository group.
397
398 2018-04-06  Dewei Zhu  <dewei_zhu@apple.com>
399
400         Added 'CommitSet.diff' which will be shared between multiple independent incoming changes.
401         https://bugs.webkit.org/show_bug.cgi?id=184368
402
403         Reviewed by Ryosuke Niwa.
404
405         'CommitSet.diff' will be used in multiple independent incoming changes.
406         It would be easier to make this a separate change to parallelize the changes depends on this API.
407
408         * public/v3/models/commit-set.js:
409         (CommitSet.prototype.createNameWithoutCollision): Moved from 'AnalysisTaskPage' and make it more generic.
410         (CommitSet.prototype.diff): Describe differences between 2 commit sets including commit, root and patch differences.
411         * public/v3/pages/analysis-task-page.js: Move 'AnalysisTaskPage._createRetryNameForTestGroup' to CommitSet in a more generic form.
412         (AnalysisTaskPage.prototype._retryCurrentTestGroup): Use 'CommitSet.withoutRootPatchOrOwnedCommit' instead.
413         (AnalysisTaskPage.prototype._createRetryNameForTestGroup): Moved to CommitSet in a more generic form.
414         * unit-tests/commit-set-tests.js: Added unit tests for 'CommitSet.diff'.
415
416 2018-04-05  Dewei Zhu  <dewei_zhu@apple.com>
417
418         Fix a bug introduced in r230295 that A/B test result is not shown.
419         https://bugs.webkit.org/show_bug.cgi?id=184350
420
421         Reviewed by Ryosuke Niwa.
422
423         result.label should be assigned in `TestGroup._computeRequestedCommitSets`.
424
425         * public/v3/models/test-group.js:
426         (TestGroup.prototype._computeRequestedCommitSets):
427
428 2018-03-29  Dewei Zhu  <dewei_zhu@apple.com>
429
430         Added UI to show potential regressions in chart with t-testing against segmentations.
431         https://bugs.webkit.org/show_bug.cgi?id=184131
432
433         Reviewed by Ryosuke Niwa.
434
435         Added UI in the chart-pane so that user can use new option in trendline which not only
436         shows the segmentation, but also t-test against potential changes indicated by segmentation.
437
438         Fix a bug in AnalysisTaskPage that chart is not updated when change type of task changes.
439
440         * browser-tests/interactive-time-series-chart-tests.js: Fix a unit tests.
441         * browser-tests/time-series-chart-tests.js: Fix a unit tests.
442         * public/shared/statistics.js: Added a function to t-test certain range based on segmentation results.
443         (Statistics.supportedOneSideTTestProbabilities):
444         (Statistics.findRangesForChangeDetectionsWithWelchsTTest): The argument `segmentations`, every 2 items in the list defines 
445         segmentation, that is why the index incremental is 2 in this funcion.
446         * public/v3/components/chart-pane-base.js: Will select the range if user clicks on a suggested annotation.
447         (ChartPaneBase.prototype.configure):
448         (ChartPaneBase.prototype._didClickAnnotation):
449         * public/v3/components/chart-styles.js:
450         (ChartStyles.annotationFillStyleForTask): Added 'annotationFillStyleForTask' to determine the fillStyle for annotation based on change type of a analysis task.
451         * public/v3/components/interactive-time-series-chart.js:
452         (InteractiveTimeSeriesChart.prototype._findAnnotation): Also need to search among suggested annotaions.
453         * 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.
454         (TimeSeriesChart):
455         (TimeSeriesChart.prototype.setSuggestedAnnotations):
456         (TimeSeriesChart.prototype.allAnnotations): Returns both annotations with and without analysis task.
457         (TimeSeriesChart.prototype._layoutAnnotationBars): Should take all annotations in the calculation.
458         * public/v3/models/measurement-set.js:
459         (MeasurementSet.prototype.metricId): Returns metric id.
460         * public/v3/models/metric.js:
461         (Metric.prototype.summarizeForValues): Added helper function to summarize a given value
462         * public/v3/models/test-group.js:
463         (TestGroup.prototype.compareTestResults): Adapted to use 'Metric.summarizeForValues'.
464         * public/v3/pages/chart-pane.js: Added 'Segmentation with t-test analysis' to 'ChartTrendLineTypes'.
465         (ChartPane.prototype._renderTrendLinePopover):
466         (ChartPane.prototype.async._updateTrendLine): make it an async function.
467         * unit-tests/statistics-tests.js: Added unit tests for 'findRangesForChangeDetectionsWithWelchsTTest'.
468
469 2018-04-02  Aakash Jain  <aakash_jain@apple.com>
470
471         Remove deprecated Buildbot 0.8 code from Perf syncing scripts
472         https://bugs.webkit.org/show_bug.cgi?id=183915
473
474         Reviewed by Ryosuke Niwa.
475
476         * server-tests/resources/mock-data.js:
477         (MockData.buildbotBuildersURLDeprecated): Deleted.
478         (MockData.mockBuildbotBuildersDeprecated): Deleted.
479         (MockData.pendingBuildDeprecated): Deleted.
480         (MockData.runningBuildDeprecated): Deleted.
481         (MockData.finishedBuildDeprecated): Deleted.
482         * tools/js/buildbot-syncer.js:
483         (BuildbotBuildEntryDeprecated): Deleted.
484         (BuildbotBuildEntryDeprecated.prototype.initialize): Deleted.
485         (BuildbotBuildEntryDeprecated.prototype.url): Deleted.
486         (BuildbotSyncer.prototype.scheduleBuildOnBuildbotDeprecated): Deleted.
487         (BuildbotSyncer.prototype._pullRecentBuildsDeprecated): Deleted.
488         (BuildbotSyncer.prototype.pathForPendingBuildsJSONDeprecated): Deleted.
489         (BuildbotSyncer.prototype.pathForBuildJSONDeprecated): Deleted.
490         (BuildbotSyncer.prototype.pathForForceBuildDeprecated): Deleted.
491         (BuildbotSyncer.prototype.url): Deleted.
492         (BuildbotSyncer.prototype.urlForBuildNumberDeprecated): Deleted.
493         * tools/js/buildbot-triggerable.js:
494         (BuildbotTriggerable.prototype.getBuilderNameToIDMapDeprecated): Deleted.
495         * unit-tests/buildbot-syncer-tests.js:
496         (smallPendingBuildDeprecated): Deleted.
497         (smallInProgressBuildDeprecated): Deleted.
498         (smallFinishedBuildDeprecated): Deleted.
499         (samplePendingBuildRequestDeprecated): Deleted.
500         (sampleInProgressBuildDeprecated): Deleted.
501         (sampleFinishedBuildDeprecated): Deleted.
502
503 2018-03-19  Aakash Jain  <aakash_jain@apple.com>
504
505         Update Perf buildbot syncing scripts for Buildbot 0.9
506         https://bugs.webkit.org/show_bug.cgi?id=175969
507
508         Reviewed by Ryosuke Niwa.
509
510         * tools/js/buildbot-triggerable.js:
511         (BuildbotTriggerable.prototype.initSyncers): Switch from Deprecated version to new version of getBuilderNameToIDMap.
512         * tools/js/buildbot-syncer.js:
513         (BuildbotSyncer.prototype.scheduleRequestInGroupIfAvailable): Switch from Deprecated version to new version of scheduleRequest.
514         (BuildbotSyncer.prototype.pullBuildbot): Switch from Deprecated version to new version of pathForPendingBuilds, _pullRecentBuilds 
515         and BuildbotBuildEntry. Parse the pending build-requests data in Buildbot 0.9 format.
516         * unit-tests/buildbot-syncer-tests.js: Updated as per Buildbot 0.9 code.
517         * server-tests/tools-sync-buildbot-integration-tests.js: Ditto.
518         * server-tests/tools-buildbot-triggerable-tests.js: Ditto.
519         * server-tests/resources/mock-data.js: Ditto.
520         (MockData.pendingBuildsUrl): Method to construct pendingBuildsUrl in Buildbot 0.9 format.
521         (MockData.recentBuildsUrl): Ditto for recent builds url.
522         (MockData.statusUrl): Ditto for status url.
523         (MockData.builderIDForName): Method to get builder ID from builder name.
524
525 2018-03-15  Aakash Jain  <aakash_jain@apple.com>
526
527         BuildbotBuildEntry creates an incorrect url for pending builds
528         https://bugs.webkit.org/show_bug.cgi?id=183670
529
530         Reviewed by Ryosuke Niwa.
531
532         * tools/js/buildbot-syncer.js:
533         (BuildbotBuildEntry.prototype.initialize): Fetch buildrequestid from Buildbot.
534         (BuildbotBuildEntry.prototype.url): Construct url for pending build using buildrequestid from Buildbot.
535         * unit-tests/buildbot-syncer-tests.js: Updated unit-test.
536
537 2018-03-14  Aakash Jain  <aakash_jain@apple.com>
538
539         Add support for boolean properties in BuildbotSyncer while submitting build request to Buildbot 0.9 server
540         https://bugs.webkit.org/show_bug.cgi?id=183638
541
542         Reviewed by Ryosuke Niwa.
543
544         * tools/js/buildbot-syncer.js:
545         (BuildbotSyncer._parseRepositoryGroupPropertyTemplate): Allow boolean properties.
546         * server-tests/tools-sync-buildbot-integration-tests.js: Tests for boolean properties.
547         * unit-tests/buildbot-syncer-tests.js: Ditto.
548
549 2018-03-04  Dewei Zhu  <dewei_zhu@apple.com>
550
551         Create analysis task should use build time as fallback when commit time is not available.
552         https://bugs.webkit.org/show_bug.cgi?id=183309
553
554         Reviewed by Ryosuke Niwa.
555
556         Added the ability to schedule analysis task for the range without commit time.
557
558         * public/privileged-api/create-analysis-task.php: Use build time as fallback.
559         * server-tests/privileged-api-create-analysis-task-tests.js: Added a unit test for this change.
560
561 2018-03-04  Aakash Jain  <aakash_jain@apple.com>
562
563         BuildbotBuildEntry for buildbot 0.9 uses incorrect buildrequestid
564         https://bugs.webkit.org/show_bug.cgi?id=183194
565
566         Reviewed by Ryosuke Niwa.
567
568         * tools/js/buildbot-syncer.js:
569         (BuildbotBuildEntry.prototype.initialize): Updated _buildRequestId to use correct build-request-id, as set in syncer._buildRequestPropertyName.
570         (BuildbotSyncer.prototype.pathForPendingBuilds): Updated url to fetch properties for build-requests.
571         * unit-tests/buildbot-syncer-tests.js:
572         (sampleBuildData): Updated sampleBuildData with correct build-request-id in properties. Added
573         properties to samplePendingBuildRequestData.
574
575 2018-02-28  Aakash Jain  <aakash_jain@apple.com>
576
577         Rename samplePendingBuild to samplePendingBuildRequest
578         https://bugs.webkit.org/show_bug.cgi?id=183171
579
580         Reviewed by Ryosuke Niwa.
581
582         * unit-tests/buildbot-syncer-tests.js:
583         (samplePendingBuildRequests): Renamed from samplePendingBuild.
584         (samplePendingBuildRequestDeprecated): Renamed from samplePendingBuildDeprecated.
585         (samplePendingBuild): Deleted.
586         (samplePendingBuildDeprecated): Deleted.
587
588 2018-02-02  Aakash Jain  <aakash_jain@apple.com>
589
590         Add support for submitting build request to Buildbot 0.9 server in BuildbotSyncer
591         https://bugs.webkit.org/show_bug.cgi?id=182218
592
593         Reviewed by Ryosuke Niwa.
594
595         * tools/js/buildbot-syncer.js:
596         (BuildbotSyncer.prototype.scheduleRequest): Added assert to ensure forcescheduler property is always defined. Builds can not
597         be scheduled on Buildbot without this property. Updated unit-tests and server-tests accordingly.
598         (BuildbotSyncer.prototype.scheduleBuildOnBuildbotDeprecated): Method to schedule build request on Buildbot 0.8 server.
599         (BuildbotSyncer.prototype.scheduleBuildOnBuildbot): Method to schedule build request on Buildbot 0.9 server.
600         (BuildbotSyncer.prototype.pathForForceBuildDeprecated): Path for scheudling build on Buildbot 0.8 server.
601         (BuildbotSyncer.prototype.pathForForceBuild): Path for scheudling build on Buildbot 0.9 server.
602         * unit-tests/buildbot-syncer-tests.js:
603         (smallConfiguration): Added test-case for scheduleBuildOnBuildbot. Also added forcescheduler property in sample data.
604         * server-tests/resources/mock-data.js: Added forcescheduler property in sample data.
605         * server-tests/tools-buildbot-triggerable-tests.js: Updated server-tests to take care of added forcescheduler property.
606
607 2018-02-02  Aakash Jain  <aakash_jain@apple.com>
608
609         Add support for fetching recent builds in Buildbot 0.9 format in BuildbotSyncer
610         https://bugs.webkit.org/show_bug.cgi?id=179743
611
612         Reviewed by Ryosuke Niwa.
613
614         * tools/js/buildbot-syncer.js:
615         (BuildbotSyncer.prototype._pullRecentBuildsDeprecated): Renamed from _pullRecentBuilds. This method fetch
616         from Buildbot 0.8 server.
617         (BuildbotSyncer.prototype._pullRecentBuilds): Method to fetch recent builds from Buildbot 0.9 server.
618         (BuildbotSyncer.prototype.pathForRecentBuilds): URL for fetching recent builds from Buildbot 0.9 server.
619         (BuildbotSyncer.prototype.pathForBuildJSONDeprecated): Renamed from pathForBuildJSON.
620         * unit-tests/buildbot-syncer-tests.js:
621         (_pullRecentBuilds.it): unit-test - should not fetch recent builds when count is zero.
622         (_pullRecentBuilds.it): unit-test - should pull the right number of recent builds.
623         (_pullRecentBuilds.it): unit-test - should handle unexpected error while fetching recent builds.
624         (_pullRecentBuilds.it): unit-test - should create BuildbotBuildEntry after fetching recent builds.
625
626 2018-02-01  Aakash Jain  <aakash_jain@apple.com>
627
628         Create BuildbotBuildEntry in Buildbot syncer in Buildbot 0.9 format
629         https://bugs.webkit.org/show_bug.cgi?id=182036
630
631         Reviewed by Ryosuke Niwa.
632
633         * tools/js/buildbot-syncer.js:
634         (BuildbotBuildEntry): Class for Buildbot entry in Buildbot 0.9 data format.
635         (BuildbotBuildEntryDeprecated): Renamed from BuildbotBuildEntry, sub-classed from BuildBotEntry. Handles Buildbot 0.8 data format.
636         (BuildbotBuildEntryDeprecated.prototype.url): URL in buildbot 0.8 format.
637         (BuildbotSyncer.prototype.builderID): Added.
638         (BuildbotSyncer.prototype.pathForPendingBuildsJSONDeprecated): Renamed from BuildbotSyncer.prototype.pathForPendingBuildsJSON.
639         (BuildbotSyncer.prototype.pathForPendingBuilds): Path for pending builds in Buildbot 0.9 format.
640         (BuildbotSyncer.prototype.urlForBuildNumberDeprecated): Deprecated. Renamed from urlForBuildNumber.
641         (BuildbotSyncer.prototype.urlForBuildNumber): Updated in Buildbot 0.9 format.
642         (BuildbotSyncer.prototype.urlForPendingBuild): Buildbot 0.9 has individual webpage for pending buildrequests as well. URL to that page.
643         * unit-tests/buildbot-syncer-tests.js: Renamed BuildbotBuildEntry to BuildbotBuildEntryDeprecated.
644         (sampleBuildData): Sample build data. Common method for in-progress and finished build data.
645         (samplePendingBuildData): Sample data for a pending build. Separate method so that we can easily create sample data with multiple builds.
646         (sampleInProgressBuildData): Ditto for in-progress build.
647         (sampleFinishedBuildData): Ditto for finished build.
648         (samplePendingBuild): Sample data for single pending build.
649         (sampleInProgressBuild): Ditto for in-progress build.
650         (sampleFinishedBuild): Ditto for finished build.
651         (samplePendingBuildDeprecated): Renamed from samplePendingBuild.
652         (sampleInProgressBuildDeprecated): Renamed from sampleInProgressBuild.
653         (sampleFinishedBuildDeprecated): Renamed from sampleFinishedBuild.
654         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for pending build.
655         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for in-progress build.
656         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for finished build.
657         (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for mix of in-progress and finished build.
658
659 2018-01-31  Dewei Zhu  <dewei_zhu@apple.com>
660
661         Should chose the best match during 'route' if there are multiple matches.
662         https://bugs.webkit.org/show_bug.cgi?id=182326
663
664         Reviewed by Ryosuke Niwa.
665
666         r227749 made a change that 'analysisCategoryPage' will be added before 'analysisTaskPage'.
667         As route names for both pages starts with 'analysis', whichever added first will be chosen.
668         For a route like 'analysis/task/1'. As a result, 'analysisCategoryPage' will be chosen and
669         this is not expected behavior. Adding the logic on the cases when route name does not extact
670         match the route name, always choose the longest mathcing route name.
671
672         Also modernized the code of 'page-router.js' to use const & let instead of var.
673
674         Added a browser test to guard against this bug.
675
676         * browser-tests/index.html: Import 'page-router-tests.js'.
677         * browser-tests/page-router-tests.js: Added unit test to guard against this bug.
678         * public/v3/pages/page-router.js:
679         (PageRouter.prototype.route): Added logic to find best matching in the case of inexact match.
680         (PageRouter.prototype.pageDidOpen):
681         (PageRouter.prototype._updateURLState):
682         (PageRouter.prototype._serializeToHash):
683         (PageRouter.prototype._deserializeFromHash):
684         (PageRouter.prototype._serializeHashQueryValue):
685         (PageRouter.prototype._deserializeHashQueryValue):
686         (PageRouter.prototype._countOccurrences):
687         (PageRouter):
688
689 2018-01-29  Dewei Zhu  <dewei_zhu@apple.com>
690
691         Should fetch owner commits in build-requests-fetcher.
692         https://bugs.webkit.org/show_bug.cgi?id=182266
693
694         Reviewed by Ryosuke Niwa.
695
696         In a build request, owner commit of a commit is not always one of a commit in the commit set.
697         Build request api should contain owner commits in the 'commits' field of the return value.
698
699         * public/include/build-requests-fetcher.php: Added logic to fetch owner commits and added them into 'commits'.
700         * server-tests/api-build-requests-tests.js: Added a unit test.
701         * server-tests/resources/mock-data.js:
702         (MockData.set addTestGroupWithOwnerCommitNotInCommitSet): Added a test group with a build request, the commit set of which does
703         not contain owner commit of one commit.
704
705 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
706
707         Add the support for reporting Speedometer 2.0 results to perf dashboard
708         https://bugs.webkit.org/show_bug.cgi?id=182089
709         <rdar://problem/36172346>
710
711         Rubber-stamped by Chris Dumez.
712
713         Apparently, this has always worked since the very first version of the perf dashboard added in r163688.
714         The relevant code is at the line 313 of report-processor.php now.
715
716         Added regression tests for this feature since we didn't have any tests four years ago.
717
718         * server-tests/api-report-tests.js:
719
720 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
721
722         REGRESSION(r225898): The perf dashboard fails to open when there are no summary pages
723         https://bugs.webkit.org/show_bug.cgi?id=182210
724
725         Rubber-stamped by Chris Dumez.
726
727         The bug was caused by TestFreshnessPage unconditionally assuming that summaryPageConfiguration is set.
728         Fixed it by not creating TestFreshnessPage when there are no summary pages specified.
729
730         Also modernized the code to use const & let instead of var.
731
732         * public/v3/main.js:
733         (main):
734
735 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
736
737         Perf dashboard's page title can be set to a previously visited page
738         https://bugs.webkit.org/show_bug.cgi?id=182209
739
740         Rubber-stamped by Chris Dumez.
741
742         Before this patch, opening a page and navigating away from it could result in the page title
743         getting set to that of the previously visited page after the new page had been opened.
744
745         This bug was caused by Page.render keep setting document.title even though the page is no longer
746         the currently open page of the router. Fixed it by exiting early in Page.enqueueToRender when
747         this page is not the currently open page of the router.
748
749         Also added basic tests for Page.
750
751         * browser-tests/index.html:
752         * browser-tests/page-tests.js: Added.
753         * public/v3/pages/page.js:
754         (Page): Removed the unused second constructor argument.
755         (Page.prototype.enqueueToRender): Fixed the bug.
756         (Page.prototype.render): Use const instead of var.
757
758 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
759
760         CommitLogViewer should not fetch commits in serial
761         https://bugs.webkit.org/show_bug.cgi?id=182207
762
763         Rubber-stamped by Chris Dumez.
764
765         Fetch both the commits in the range as well as the preceding commit at once instead of
766         fetching the preceding commit only after the commits in the range had been fetched.
767
768         * browser-tests/commit-log-viewer-tests.js: Fixed the tcoest case after r224227.
769         * public/v3/components/commit-log-viewer.js:
770         (CommitLogViewer.prototype._fetchCommitLogs): Fetch commits in parallel.
771
772 2018-01-24  Dewei Zhu  <dewei_zhu@apple.com>
773
774         Check existence of 'node_modules_dir' before creating it.
775         https://bugs.webkit.org/show_bug.cgi?id=182040
776
777         Reviewed by Aakash Jain.
778
779         Fix the bug introduced in r227395.
780
781         * tools/run-tests.py: Added directory existence check.
782
783 2018-01-22  Dewei Zhu  <dewei_zhu@apple.com>
784
785         Fix the bug that 'TestGroupResultsViewer' creates unnecessary rows.
786         https://bugs.webkit.org/show_bug.cgi?id=181967
787
788         Reviewed by Ryosuke Niwa.
789
790         Fixed a bug caused by a typo in CommitSet.equals, which makes it returns incorrect results for most
791         comparison between a CommitSet and a MeasurementCommitSet.
792
793         MeasurementCommitSet does not have full information for the commits, thus, it cannot build mappings
794         between root/patch/owner commit/requires build to repository. When querying whether a given repository
795         needs to be built, MeasurementCommitSet will return undefined. Due to 'undefined != false', this
796         equality check will fail. Making 'CommitSet.requiresBuildForRepository' defaults to 'false' would fix
797         this bug.
798
799         * public/v3/models/commit-set.js:
800         (CommitSet.prototype.requiresBuildForRepository): Make it return false when key does not exist
801         instead of 'undefined'.
802         (CommitSet.prototype.equals): Fixed the typo that causes the bug.
803         Use wrapped functions instead of querying the mapping directly.
804         * unit-tests/commit-set-tests.js: Added unit tests.
805
806 2018-01-18  Dewei Zhu  <dewei_zhu@apple.com>
807
808         'run-test.py' script should make sure 'node_modules' directory exists before installing node packages.
809         https://bugs.webkit.org/show_bug.cgi?id=181808
810
811         Reviewed by Ryosuke Niwa.
812
813         'run-test.py' will fail if 'node_modules' does not exist before running this script.
814         Instead of calling 'os.chdir' to change directory, use 'cwd' in subprocess instead.
815
816         * tools/run-tests.py: Added the logic to ensure 'node_modules' exists.
817         Also use 'cwd' in subprocess.call instead of calling 'os.chdir' ahead.
818
819 2018-01-20  Dewei Zhu  <dewei_zhu@apple.com>
820
821         Extend 'ifBuilt' config key to set property based on whether certain repositories are built or not.
822         https://bugs.webkit.org/show_bug.cgi?id=181906
823
824         Reviewed by Ryosuke Niwa.
825
826         Before this change, 'ifBuilt' will always set specified property for test properties as long as there
827         is a build type build in the same build request group. However, this is no longer valid as we don't
828         want to set specified property for testing when only owned commit is built in previous build.
829         'ifBuilt' needs to conditionally set property based on whether certain required repositories are built.
830         Empty required repository list means no requirement on repository to set property.
831
832         * tools/js/buildbot-syncer.js:
833         (BuildbotSyncer.prototype._propertiesForBuildRequest):In the case of 'built', only set property when
834         repository requirment is meet and there is a 'build' root request in the same build request group.
835         (BuildbotSyncer._parseRepositoryGroup): Extend 'ifBuild' to pass information based on contition.
836         * unit-tests/buildbot-syncer-tests.js: Added unit tests.
837
838 2018-01-19  Dewei Zhu  <dewei_zhu@apple.com>
839
840         Should reject updating a build request which has an associated build.
841         https://bugs.webkit.org/show_bug.cgi?id=181893
842
843         Reviewed by Ryosuke Niwa.
844
845         Current code does not prevent submitting to same build request multiple times.
846         This could lead to a build losing its associated build request.
847         As a result, this build will be visible in charts which is not right.
848         Added a check when a build request is reported.
849         Addressed a 'FIXME' for the race condition inside ReportProcessor->resolve_build_id by surrounding
850         it with a database transaction.
851
852         * public/include/report-processor.php:
853         Wrap adding platform and resolve_build_id with a database transaction.
854         Add a check to make sure only a build request has no associated build can be updated.
855         * server-tests/api-report-tests.js: Added unit tests accordingly.
856
857 2018-01-18  Dewei Zhu  <dewei_zhu@apple.com>
858
859         Should allow updating a build-request to 'canceled'.
860         https://bugs.webkit.org/show_bug.cgi?id=181819
861
862         Reviewed by Ryosuke Niwa.
863
864         It's possible syncing script update a build-request to 'canceled' state.
865
866         * public/api/build-requests.php: Added 'canceled' as an acceptable update state.
867         * server-tests/api-build-requests-tests.js: Added a unit test to update a build-request to 'canceled'.
868
869 2018-01-18  Aakash Jain  <aakash_jain@apple.com>
870
871         Add support for builderNameToIDMap in BuildbotSyncer
872         https://bugs.webkit.org/show_bug.cgi?id=176526
873
874         Reviewed by Ryosuke Niwa.
875
876         * tools/js/buildbot-syncer.js:
877         (BuildbotSyncer._loadConfig): Added builderNameToIDMap parameter. It would be used later on.
878         (BuildbotSyncer._resolveBuildersWithPlatforms): Ditto.
879         (BuildbotSyncer._validateAndMergeConfig): Added builderID as a valid config parameter.
880         * tools/js/buildbot-triggerable.js:
881         (BuildbotTriggerable.prototype.getBuilderNameToIDMap): Method to fetch BuilderNameToIDMap from Buildbot 0.9.
882         (BuildbotTriggerable.prototype.getBuilderNameToIDMapDeprecated): Method to fetch BuilderNameToIDMap from Buildbot 0.8.
883         (BuildbotTriggerable.prototype.initSyncers): Updated to use getBuilderNameToIDMap.
884         * unit-tests/buildbot-syncer-tests.js: Updated unit-tests.
885         * server-tests/resources/mock-data.js:
886         (MockData.buildbotBuildersURLDeprecated): URL for fetching Builders list.
887         (MockData.buildbotBuildersURL): Ditto for Buildbot 0.9
888         (MockData.mockBuildbotBuildersDeprecated): Sample builders data for Buildbot 0.8
889         (MockData.mockBuildbotBuilders): Ditto for Buildbot 0.9
890         * server-tests/tools-buildbot-triggerable-tests.js: Added test for getBuilderNameToIDMap. Updated tests to handle
891         newly added promise for fetching builders list from Buildbot.
892         * server-tests/tools-sync-buildbot-integration-tests.js: Ditto.
893
894 2018-01-18  Ryosuke Niwa  <rniwa@webkit.org>
895
896         Charts can be empty when values are all identical
897         https://bugs.webkit.org/show_bug.cgi?id=181828
898
899         Reviewed by Alexey Proskuryakov.
900
901         Fixed the bug that when SampleVarianceUpperTriangularMatrix can store -Infinity as the initial cost
902         of some entries when the sample standard deviation between two points turns out to be 0,
903         and cause splitIntoSegmentsUntilGoodEnough to return undefiend because no segmentation has a finite cost.
904
905         Also fixed the bug that the time series chart fails to show any data points when all data points have
906         identical values as the entire y-coordinate gets collapsed to an empty value range by adjusting the max value
907         when min & max values are identical.
908
909         * public/v3/components/time-series-chart.js:
910         (TimeSeriesChart.prototype._ensureValueRangeCache): Raise the max slightly when min & max are identical
911         to avoid the chart becoming empty. Otherwise valueDiff in _computeVerticalRenderingMetrics becomes 0
912         and value-to-y-coordinate conversion always results in NaN.
913         * public/shared/statistics.js:
914         (Statistics..SampleVarianceUpperTriangularMatrix):
915         * unit-tests/statistics-tests.js: Added a test case.
916
917 2018-01-18  Ryosuke Niwa  <rniwa@webkit.org>
918
919         Don't fetch more than two builds to check duplicity of builds in ReportProcessor
920         https://bugs.webkit.org/show_bug.cgi?id=181786
921
922         Reviewed by Wenson Hsieh.
923
924         Limit the number of builds to check to avoid using a lot of memory with a long delay.
925
926         * public/include/report-processor.php:
927         (ReportProcessor::resolve_build_id): 
928
929 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
930
931         Rename config.json to config.json.sample
932         https://bugs.webkit.org/show_bug.cgi?id=181785
933
934         Reviewed by Wenson Hsieh.
935
936         * .gitignore: Added config.json.
937         * ReadMe.md: Updated the instruction.
938         * config.json.sample: Renamed from config.json.
939
940 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
941
942         Unreviewed build fixes in TestGroupResultsViewer.
943
944         * public/v3/components/test-group-results-viewer.js:
945         (TestGroupResultsViewer.prototype.render): _renderCurrentMetricsLazily was never called.
946         (TestGroupResultsViewer.prototype._buildRowForMetric): Don't try to render null or NaN.
947
948 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
949
950         Fix perf dashboard tests for node v8
951         https://bugs.webkit.org/show_bug.cgi?id=181782
952
953         Reviewed by Wenson Hsieh.
954
955         Fixed the various tests for node.js v8, which is the latest LTS version.
956
957         * server-tests/api-manifest-tests.js: Replaced the missing Triggerable.acceptsTest by Triggerable.acceptedTests
958         after r226836.
959         * server-tests/api-measurement-set-tests.js: Added "Z" to the end timestamps to force UTF timezone now that Date
960         in node.js parses using the local timezone by default.
961         * server-tests/resources/test-server.js:
962         (TestServer.prototype._restoreDataDirectory): Fixed the bug that this function was erroneously using the async
963         function to rename a directory per new warnings. This code was racy, and it used to cause a test error occasionally.
964         * server-tests/tools-os-build-fetcher-tests.js: Fixed the assertions to make it work in the latest node.js.
965         * unit-tests/measurement-set-tests.js:
966         (waitForMeasurementSet): Wait for setTimeout to cycle through all microtasks instead of just two microtask cycles.
967
968 2018-01-11  Ryosuke Niwa  <rniwa@webkit.org>
969
970         Cannot trigger Dromaeo tests on internal perf try bots
971         https://bugs.webkit.org/show_bug.cgi?id=179712
972
973         Reviewed by Chris Dumez.
974
975         The bug was caused by CustomAnalysisTaskConfigurator only showing the top-level tests that are triggerable
976         instead of the list of highest level tests that are triggerable.
977
978         * public/v3/components/custom-analysis-task-configurator.js:
979         (CustomAnalysisTaskConfigurator.prototype.selectTests): Update the test group name when a new test is picked.
980         (CustomAnalysisTaskConfigurator.prototype.selectPlatform):
981         (CustomAnalysisTaskConfigurator.prototype._didUpdateSelectedPlatforms): Extracted from selectPlatform.
982         (CustomAnalysisTaskConfigurator.prototype._renderTriggerableTests): Include the list of all highest-level tests
983         which are triggerable.
984         (CustomAnalysisTaskConfigurator.prototype._renderRadioButtonList): Added labelForObject which returns the label
985         to be used in the list items. For tests, we want to use the full name, not just its label.
986         * public/v3/models/analysis-task.js:
987         (AnalysisTask.fetchById):
988         * public/v3/models/triggerable.js:
989         (Triggerable.prototype.acceptedTests): Added.
990         (Triggerable.prototype.acceptsTest): Deleted.
991
992 == Rolled over to ChangeLog-2018-01-01 ==