| 2018-04-26 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Extend create-analysis-test API to be able to create with confirming test group. |
| https://bugs.webkit.org/show_bug.cgi?id=184958 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Extend create-analysis-test API to be able to create an analysis task with confirming test group. |
| Update create analysis task UI in chart pane to adapt this new API. |
| Refactored '/privileged-api/create-test-group' API to share some creating test group logic with '/privileged-api/create-analysis-task' API. |
| Moved the shared logic to commit-sets-helpers.php. |
| |
| * public/api/analysis-tasks.php: Use 'require_once' instead of 'require'. |
| * public/include/commit-sets-helpers.php: Added. |
| (create_test_group_and_build_requests): A helper function that creates test group and build requests for a analysis |
| task. In long term, this should be a class to avoid passing long argument list around. |
| (insert_commit_sets_and_construct_configuration_list): Based on commit sets returns build and test configurations. |
| (insert_build_request_for_configuration): Insert build requests based on configuration. |
| (commit_sets_from_revision_sets): Returns commit sets from given revision set list. |
| * public/privileged-api/create-analysis-task.php: Added the ability to create analysis task with confirming test |
| groups when repetition count is specified. |
| * public/privileged-api/create-test-group.php: Moved shared function to commit-sets-helpers.php. |
| * public/v3/models/analysis-task.js: |
| (AnalysisTask.create): Instead of accepting run ids, it now accepts points and test group name and confirming iterations. |
| It will conditionally add test group information into parameter when confirming iterations is a positive number. |
| (AnalysisTask): |
| * public/v3/models/commit-set.js: |
| (CommitSet.revisionSetsFromCommitSets): Move 'TestGroup._revisionSetsFromCommitSets' since CommitSet class is more |
| appropriate place and it will be shared by both TestGroup and AnalysisTask |
| (CommitSet): |
| * public/v3/models/test-group.js: |
| (TestGroup.createWithTask): Adapt 'CommitSet.revisionSetsFromCommitSets'. |
| (TestGroup.createWithCustomConfiguration): Adapt 'CommitSet.revisionSetsFromCommitSets'. |
| (TestGroup.createAndRefetchTestGroups): Adapt 'CommitSet.revisionSetsFromCommitSets'. |
| (TestGroup._revisionSetsFromCommitSets): Deleted and moved to 'CommitSet.revisionSetsFromCommitSets'. |
| * public/v3/pages/chart-pane.js: |
| (ChartPane.prototype.didConstructShadowTree): Added the logic to disable options when checkbox for creating confirming |
| test group is unchecked. |
| (ChartPane.prototype._analyzeRange): Conditionally create confirming test group from UI. |
| (ChartPane.cssTemplate): |
| * server-tests/privileged-api-create-analysis-task-tests.js: Added unit tests. Added a unit test for 'NodePrivilegedAPI'. |
| * unit-tests/analysis-task-tests.js: Added unit tests. |
| * unit-tests/commit-set-tests.js: Added unit test for 'CommitSet.revisionSetsFromCommitSets'. |
| * unit-tests/resources/mock-remote-api.js: Reset csrf token when BrowserPrivilegedAPI is used. |
| (MockRemoteAPI.inject): |
| |
| 2018-04-23 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Tool scripts should not use PrivilegedAPI from 'public/v3/privileged-api.js'. |
| https://bugs.webkit.org/show_bug.cgi?id=184766 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| For tools, we should not use PrivilegedAPI for tools as current PrivilegedAPI |
| is used by UI and it is unnecessary to generate CSRF token for tools. |
| Will post a followup patch that creates a PrivilegedAPI used by tools. |
| Make a change on TestServer.inject and MockRemoteAPI.inject to allow specifying |
| BrowserPrivilegedAPI or NodePrivilegedAPI in the test. Currently defaults to |
| BrowserPrivilegedAPI as this is the test behavior before this change. |
| |
| * server-tests/resources/common-operations.js: Allow passing type of privileged api |
| information to TestServer.inject. |
| * server-tests/resources/test-server.js: Conditionally inject PrivilegedAPI based on |
| type of privileged api. |
| (TestServer.prototype.inject): |
| (TestServer): |
| * server-tests/tools-buildbot-triggerable-tests.js: Updated 'prepareServerTest' invocation. |
| * server-tests/tools-os-build-fetcher-tests.js: Updated 'prepareServerTest' invocation. |
| * server-tests/tools-sync-buildbot-integration-tests.js: Temporarily injecting |
| BrowserPrivilegedAPI for mocking UploadedFile. The actual script does not rely on |
| BrowserPrivilegedAPI at all. |
| (async.createTestGroupWihPatch): |
| (beforeEach): |
| * tools/js/privileged-api.js: Added NodePrivilegedAPI |
| (NodePrivilegedAPI.prototype.sendRequest): |
| (NodePrivilegedAPI.configure): Configure the slave name and password. |
| (NodePrivilegedAPI): |
| * tools/js/v3-models.js: Removed the import of PrivilegedAPI. |
| * unit-tests/privileged-api-tests.js:. Added unit tests for NodePrivilegedAPI. |
| * unit-tests/resources/mock-remote-api.js: Conditionally inject PrivilegedAPI based on |
| the type of privileged api. |
| (MockRemoteAPI.inject): |
| |
| 2018-04-23 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Revision information returned by querying measurement set api with analysis task id should contain commit order. |
| https://bugs.webkit.org/show_bug.cgi?id=184902 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| This is a bug fix for r230719 which does not cover the case while querying `measurement-set.php?analysisTask=$task_id` |
| |
| * public/api/measurement-set.php: AnalysisResultsFetcher.fetch_commits results should contains commit order. |
| * server-tests/api-measurement-set-tests.js: Added unit test for this change. |
| |
| 2018-04-19 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Add a bisect button to automatically schedule bisecting A/B tasks. |
| https://bugs.webkit.org/show_bug.cgi?id=183888 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Extended AnalysisTask's ability to figure out bisecting A/B tasks based on existing data points and test groups. |
| Updated analysis page UI to show bisect button which will only appear when the middle commit set of the range in |
| test group can be found. |
| |
| Finding middle commit set algorithm is described as follows: |
| 1. Find all commits from multiple repositories among the ranges specified by two commit sets in test group. In |
| the meanwhile, merge all commits that have commit time into a single list. For commits only have commit order, |
| put those commits into separate lists. |
| 2. Filter all the available commit sets in current analysis task by keeping the ones have exact repositories |
| as the two commit sets in specified test group, and every commit of a commit set is in side the commit range. |
| After filtering the commit sets, sort the remaining ones and only keep one commit set if multiple commit sets |
| are equal to each other. |
| 3. Among commits processed by step 2, find the commit sets that have the commit which is closest to the middle of |
| all commits that have commit time created from step 1. |
| 4. Among commits processed by step 3, find the commit sets that have the commit which is closest to the middle of |
| commits that only have commit order and categorized by repository. We have to iterate through repository as commit |
| order is not granted to be comparable between different repositories. |
| 5. If more than one commit sets are found, choose the middle commit set. |
| |
| * public/v3/commit-set-range-bisector.js: Added. |
| (CommitSetRangeBisector.async.commitSetClosestToMiddleOfAllCommits): Instead of naively returning the middle of |
| existing commit set array, this function selects a bisect bisection points that is closest to actually middle of |
| the revision range based on all revisions reported to performance dashboard. |
| (CommitSetRangeBisector._findCommitSetsWithinRange): Helper function to find commit sets those are in specified range. |
| (CommitSetRangeBisector._orderCommitSetsByTimeAndOrderThenDeduplicate): Helper function to sort and deduplicate commit sets. |
| (CommitSetRangeBisector._closestCommitSetsToBisectingCommitByTime): Helper function to find the commit sets those |
| are closest to the middle of among all the commits in the range that have commit time. |
| (CommitSetRangeBisector._findCommitSetsClosestToMiddleOfCommitsWithOrder): Helper function which goes through all |
| repositories the commit of which has commit order, and find the commit sets those are closest to the middle of |
| commits for each repository. |
| (CommitSetRangeBisector._buildCommitToCommitSetMap): Helper function to builder mapping from a commit to commit |
| sets those contain this commit. |
| (CommitSetRangeBisector._findCommitClosestToMiddleIndex): Helper function to find closest commit to the middle of index. |
| (CommitSetRangeBisector): |
| * public/v3/index.html: Imports 'public/v3/commit-set-range-bisector.js'. |
| * public/v3/models/analysis-task.js: |
| (AnalysisTask.prototype.async.commitSetsFromTestGroupsAndMeasurementSet): Aggregates all existing commit sets in |
| test groups of current analysis tasks. |
| * public/v3/models/commit-log.js: |
| (CommitLog.prototype.hasCommitTime): A helper function determine whether a commit has a commit time. For commit |
| that does not have time, server will return commit time as zero. As it is unrealistic for a commit has commit time |
| 0, it would be safe to assume a valid commit time is greater than 0. |
| (CommitLog.prototype.hasCommitOrder): Returns whether a commit has a commit oder. |
| (CommitLog.hasOrdering): Determine whether we can order two commits by commit time or commit order. |
| (CommitLog.orderTwoCommits): Order two commits incrementally. |
| * public/v3/models/commit-set.js: |
| (CommitSet.prototype.hasSameRepositories): A helper function to determine whether a commit set has same repositories |
| as current repository. |
| (CommitSet.containsRootOrPatchOrOwnedCommit): A helper function to determine whether current commit set has root, |
| patch or owned commit. |
| (CommitSet.commitForRepository): This function defined twice identically, remove one of them. |
| * public/v3/models/test-group.js: Make '_computeRequestedCommitSets' a static function as it does not use any |
| instance variables. |
| * public/v3/pages/analysis-task-page.js: Added bisect button. |
| (AnalysisTaskTestGroupPane): |
| (AnalysisTaskTestGroupPane.prototype.didConstructShadowTree): |
| (AnalysisTaskTestGroupPane.prototype.setTestGroups): Update 'setTestGroups' to update _bisectingCommitSetByTestGroup |
| when the test groups changes. |
| (AnalysisTaskTestGroupPane.prototype._renderCurrentTestGroup): Added code to conditionally show bisect button. |
| Bisect button will only show when there is a middle commit set for that test group. |
| (AnalysisTaskTestGroupPane.htmlTemplate): |
| (AnalysisTaskTestGroupPane.cssTemplate): |
| (AnalysisTaskPage.prototype.didConstructShadowTree): |
| (AnalysisTaskPage.prototype._retryCurrentTestGroup): |
| (AnalysisTaskPage.prototype.async._bisectCurrentTestGroup): A callback when bisect button is clicked. |
| * tools/js/v3-models.js: |
| * unit-tests/commit-log-tests.js: Added unit tests for 'CommitLog.hasCommitTime', 'CommitLog.hasCommitOrder', |
| 'CommitLog.orderTwoCommits', 'CommitLog.hasOrdering'. |
| * unit-tests/commit-set-range-bisector-tests.js: Unit tests for 'CommitSetRangeBisector.commitSetClosestToMiddleOfAllCommits'. |
| * unit-tests/commit-set-tests.js: Added unit tests for 'CommitSet.hasSameRepositories' and 'CommitSet.containsRootOrPatchOrOwnedCommit'. |
| |
| 2018-04-16 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Commit order should always be returned by api. |
| https://bugs.webkit.org/show_bug.cgi?id=184674 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Commit order sometimes missing in CommitLog object before this change. |
| This makes ordering commits logic become unnecessarily complicate. |
| This change will ensure commit order is always fetched for a CommitLog object. |
| Change measurement-set API to contain commit order information. |
| Change commits API to contain commit order information. |
| |
| * public/api/measurement-set.php: Includes commit order information. |
| * public/include/commit-log-fetcher.php: |
| * public/v3/models/commit-log.js: Added a function to return order information. |
| (CommitLog.prototype.updateSingleton): This function should update commit order. |
| (CommitLog.prototype.order): Returns the order of commit. |
| * public/v3/models/commit-set.js: |
| (MeasurementCommitSet): Update MeasurementCommitSet to contain commit order information when creating CommitLog object. |
| * server-tests/api-measurement-set-tests.js: Updated unit tests. |
| * unit-tests/analysis-task-tests.js: Update unit tests to contain commit order information in mock data. |
| (measurementCluster): |
| * unit-tests/commit-log-tests.js: Added unit tests for CommitLog.order. |
| * unit-tests/commit-set-tests.js: Added commit order in MeasurementCommitSet. |
| * unit-tests/measurement-adaptor-tests.js: Updated unit tests to contain commit order information in mock data. |
| * unit-tests/measurement-set-tests.js: Updated unit tests to contain commit order information in mock data. |
| |
| 2018-04-15 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Make it possible to hide some repository groups |
| https://bugs.webkit.org/show_bug.cgi?id=184632 |
| |
| Reviewed by Saam Barati. |
| |
| Added the ability to hide repository groups in the custom analysis task configurator from the admin page. |
| Hidden repositroy groups will continue to function for existing test groups. This is purely an UI change. |
| |
| * init-database.sql: Added repositorygroup_hidden as a new column to triggerable_repository_groups. |
| * public/admin/triggerables.php: Added a form field to hide a repository group. |
| * public/include/manifest-generator.php: Include hidden state in the manifest file. |
| * public/v3/components/custom-analysis-task-configurator.js: |
| (CustomAnalysisTaskConfigurator.prototype._renderRepositoryPanes): Filter out hidden repository groups. |
| * public/v3/models/triggerable.js: |
| (prototype.isHidden): Added. |
| * server-tests/api-manifest-tests.js: Updated an existing test case to test a hidden repository group. |
| |
| 2018-04-06 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Added 'CommitSet.diff' which will be shared between multiple independent incoming changes. |
| https://bugs.webkit.org/show_bug.cgi?id=184368 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| 'CommitSet.diff' will be used in multiple independent incoming changes. |
| It would be easier to make this a separate change to parallelize the changes depends on this API. |
| |
| * public/v3/models/commit-set.js: |
| (CommitSet.prototype.createNameWithoutCollision): Moved from 'AnalysisTaskPage' and make it more generic. |
| (CommitSet.prototype.diff): Describe differences between 2 commit sets including commit, root and patch differences. |
| * public/v3/pages/analysis-task-page.js: Move 'AnalysisTaskPage._createRetryNameForTestGroup' to CommitSet in a more generic form. |
| (AnalysisTaskPage.prototype._retryCurrentTestGroup): Use 'CommitSet.withoutRootPatchOrOwnedCommit' instead. |
| (AnalysisTaskPage.prototype._createRetryNameForTestGroup): Moved to CommitSet in a more generic form. |
| * unit-tests/commit-set-tests.js: Added unit tests for 'CommitSet.diff'. |
| |
| 2018-04-05 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Fix a bug introduced in r230295 that A/B test result is not shown. |
| https://bugs.webkit.org/show_bug.cgi?id=184350 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| result.label should be assigned in `TestGroup._computeRequestedCommitSets`. |
| |
| * public/v3/models/test-group.js: |
| (TestGroup.prototype._computeRequestedCommitSets): |
| |
| 2018-03-29 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Added UI to show potential regressions in chart with t-testing against segmentations. |
| https://bugs.webkit.org/show_bug.cgi?id=184131 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Added UI in the chart-pane so that user can use new option in trendline which not only |
| shows the segmentation, but also t-test against potential changes indicated by segmentation. |
| |
| Fix a bug in AnalysisTaskPage that chart is not updated when change type of task changes. |
| |
| * browser-tests/interactive-time-series-chart-tests.js: Fix a unit tests. |
| * browser-tests/time-series-chart-tests.js: Fix a unit tests. |
| * public/shared/statistics.js: Added a function to t-test certain range based on segmentation results. |
| (Statistics.supportedOneSideTTestProbabilities): |
| (Statistics.findRangesForChangeDetectionsWithWelchsTTest): The argument `segmentations`, every 2 items in the list defines |
| segmentation, that is why the index incremental is 2 in this funcion. |
| * public/v3/components/chart-pane-base.js: Will select the range if user clicks on a suggested annotation. |
| (ChartPaneBase.prototype.configure): |
| (ChartPaneBase.prototype._didClickAnnotation): |
| * public/v3/components/chart-styles.js: |
| (ChartStyles.annotationFillStyleForTask): Added 'annotationFillStyleForTask' to determine the fillStyle for annotation based on change type of a analysis task. |
| * public/v3/components/interactive-time-series-chart.js: |
| (InteractiveTimeSeriesChart.prototype._findAnnotation): Also need to search among suggested annotaions. |
| * 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. |
| (TimeSeriesChart): |
| (TimeSeriesChart.prototype.setSuggestedAnnotations): |
| (TimeSeriesChart.prototype.allAnnotations): Returns both annotations with and without analysis task. |
| (TimeSeriesChart.prototype._layoutAnnotationBars): Should take all annotations in the calculation. |
| * public/v3/models/measurement-set.js: |
| (MeasurementSet.prototype.metricId): Returns metric id. |
| * public/v3/models/metric.js: |
| (Metric.prototype.summarizeForValues): Added helper function to summarize a given value |
| * public/v3/models/test-group.js: |
| (TestGroup.prototype.compareTestResults): Adapted to use 'Metric.summarizeForValues'. |
| * public/v3/pages/chart-pane.js: Added 'Segmentation with t-test analysis' to 'ChartTrendLineTypes'. |
| (ChartPane.prototype._renderTrendLinePopover): |
| (ChartPane.prototype.async._updateTrendLine): make it an async function. |
| * unit-tests/statistics-tests.js: Added unit tests for 'findRangesForChangeDetectionsWithWelchsTTest'. |
| |
| 2018-04-02 Aakash Jain <aakash_jain@apple.com> |
| |
| Remove deprecated Buildbot 0.8 code from Perf syncing scripts |
| https://bugs.webkit.org/show_bug.cgi?id=183915 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * server-tests/resources/mock-data.js: |
| (MockData.buildbotBuildersURLDeprecated): Deleted. |
| (MockData.mockBuildbotBuildersDeprecated): Deleted. |
| (MockData.pendingBuildDeprecated): Deleted. |
| (MockData.runningBuildDeprecated): Deleted. |
| (MockData.finishedBuildDeprecated): Deleted. |
| * tools/js/buildbot-syncer.js: |
| (BuildbotBuildEntryDeprecated): Deleted. |
| (BuildbotBuildEntryDeprecated.prototype.initialize): Deleted. |
| (BuildbotBuildEntryDeprecated.prototype.url): Deleted. |
| (BuildbotSyncer.prototype.scheduleBuildOnBuildbotDeprecated): Deleted. |
| (BuildbotSyncer.prototype._pullRecentBuildsDeprecated): Deleted. |
| (BuildbotSyncer.prototype.pathForPendingBuildsJSONDeprecated): Deleted. |
| (BuildbotSyncer.prototype.pathForBuildJSONDeprecated): Deleted. |
| (BuildbotSyncer.prototype.pathForForceBuildDeprecated): Deleted. |
| (BuildbotSyncer.prototype.url): Deleted. |
| (BuildbotSyncer.prototype.urlForBuildNumberDeprecated): Deleted. |
| * tools/js/buildbot-triggerable.js: |
| (BuildbotTriggerable.prototype.getBuilderNameToIDMapDeprecated): Deleted. |
| * unit-tests/buildbot-syncer-tests.js: |
| (smallPendingBuildDeprecated): Deleted. |
| (smallInProgressBuildDeprecated): Deleted. |
| (smallFinishedBuildDeprecated): Deleted. |
| (samplePendingBuildRequestDeprecated): Deleted. |
| (sampleInProgressBuildDeprecated): Deleted. |
| (sampleFinishedBuildDeprecated): Deleted. |
| |
| 2018-03-19 Aakash Jain <aakash_jain@apple.com> |
| |
| Update Perf buildbot syncing scripts for Buildbot 0.9 |
| https://bugs.webkit.org/show_bug.cgi?id=175969 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * tools/js/buildbot-triggerable.js: |
| (BuildbotTriggerable.prototype.initSyncers): Switch from Deprecated version to new version of getBuilderNameToIDMap. |
| * tools/js/buildbot-syncer.js: |
| (BuildbotSyncer.prototype.scheduleRequestInGroupIfAvailable): Switch from Deprecated version to new version of scheduleRequest. |
| (BuildbotSyncer.prototype.pullBuildbot): Switch from Deprecated version to new version of pathForPendingBuilds, _pullRecentBuilds |
| and BuildbotBuildEntry. Parse the pending build-requests data in Buildbot 0.9 format. |
| * unit-tests/buildbot-syncer-tests.js: Updated as per Buildbot 0.9 code. |
| * server-tests/tools-sync-buildbot-integration-tests.js: Ditto. |
| * server-tests/tools-buildbot-triggerable-tests.js: Ditto. |
| * server-tests/resources/mock-data.js: Ditto. |
| (MockData.pendingBuildsUrl): Method to construct pendingBuildsUrl in Buildbot 0.9 format. |
| (MockData.recentBuildsUrl): Ditto for recent builds url. |
| (MockData.statusUrl): Ditto for status url. |
| (MockData.builderIDForName): Method to get builder ID from builder name. |
| |
| 2018-03-15 Aakash Jain <aakash_jain@apple.com> |
| |
| BuildbotBuildEntry creates an incorrect url for pending builds |
| https://bugs.webkit.org/show_bug.cgi?id=183670 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * tools/js/buildbot-syncer.js: |
| (BuildbotBuildEntry.prototype.initialize): Fetch buildrequestid from Buildbot. |
| (BuildbotBuildEntry.prototype.url): Construct url for pending build using buildrequestid from Buildbot. |
| * unit-tests/buildbot-syncer-tests.js: Updated unit-test. |
| |
| 2018-03-14 Aakash Jain <aakash_jain@apple.com> |
| |
| Add support for boolean properties in BuildbotSyncer while submitting build request to Buildbot 0.9 server |
| https://bugs.webkit.org/show_bug.cgi?id=183638 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * tools/js/buildbot-syncer.js: |
| (BuildbotSyncer._parseRepositoryGroupPropertyTemplate): Allow boolean properties. |
| * server-tests/tools-sync-buildbot-integration-tests.js: Tests for boolean properties. |
| * unit-tests/buildbot-syncer-tests.js: Ditto. |
| |
| 2018-03-04 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Create analysis task should use build time as fallback when commit time is not available. |
| https://bugs.webkit.org/show_bug.cgi?id=183309 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Added the ability to schedule analysis task for the range without commit time. |
| |
| * public/privileged-api/create-analysis-task.php: Use build time as fallback. |
| * server-tests/privileged-api-create-analysis-task-tests.js: Added a unit test for this change. |
| |
| 2018-03-04 Aakash Jain <aakash_jain@apple.com> |
| |
| BuildbotBuildEntry for buildbot 0.9 uses incorrect buildrequestid |
| https://bugs.webkit.org/show_bug.cgi?id=183194 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * tools/js/buildbot-syncer.js: |
| (BuildbotBuildEntry.prototype.initialize): Updated _buildRequestId to use correct build-request-id, as set in syncer._buildRequestPropertyName. |
| (BuildbotSyncer.prototype.pathForPendingBuilds): Updated url to fetch properties for build-requests. |
| * unit-tests/buildbot-syncer-tests.js: |
| (sampleBuildData): Updated sampleBuildData with correct build-request-id in properties. Added |
| properties to samplePendingBuildRequestData. |
| |
| 2018-02-28 Aakash Jain <aakash_jain@apple.com> |
| |
| Rename samplePendingBuild to samplePendingBuildRequest |
| https://bugs.webkit.org/show_bug.cgi?id=183171 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * unit-tests/buildbot-syncer-tests.js: |
| (samplePendingBuildRequests): Renamed from samplePendingBuild. |
| (samplePendingBuildRequestDeprecated): Renamed from samplePendingBuildDeprecated. |
| (samplePendingBuild): Deleted. |
| (samplePendingBuildDeprecated): Deleted. |
| |
| 2018-02-02 Aakash Jain <aakash_jain@apple.com> |
| |
| Add support for submitting build request to Buildbot 0.9 server in BuildbotSyncer |
| https://bugs.webkit.org/show_bug.cgi?id=182218 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * tools/js/buildbot-syncer.js: |
| (BuildbotSyncer.prototype.scheduleRequest): Added assert to ensure forcescheduler property is always defined. Builds can not |
| be scheduled on Buildbot without this property. Updated unit-tests and server-tests accordingly. |
| (BuildbotSyncer.prototype.scheduleBuildOnBuildbotDeprecated): Method to schedule build request on Buildbot 0.8 server. |
| (BuildbotSyncer.prototype.scheduleBuildOnBuildbot): Method to schedule build request on Buildbot 0.9 server. |
| (BuildbotSyncer.prototype.pathForForceBuildDeprecated): Path for scheudling build on Buildbot 0.8 server. |
| (BuildbotSyncer.prototype.pathForForceBuild): Path for scheudling build on Buildbot 0.9 server. |
| * unit-tests/buildbot-syncer-tests.js: |
| (smallConfiguration): Added test-case for scheduleBuildOnBuildbot. Also added forcescheduler property in sample data. |
| * server-tests/resources/mock-data.js: Added forcescheduler property in sample data. |
| * server-tests/tools-buildbot-triggerable-tests.js: Updated server-tests to take care of added forcescheduler property. |
| |
| 2018-02-02 Aakash Jain <aakash_jain@apple.com> |
| |
| Add support for fetching recent builds in Buildbot 0.9 format in BuildbotSyncer |
| https://bugs.webkit.org/show_bug.cgi?id=179743 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * tools/js/buildbot-syncer.js: |
| (BuildbotSyncer.prototype._pullRecentBuildsDeprecated): Renamed from _pullRecentBuilds. This method fetch |
| from Buildbot 0.8 server. |
| (BuildbotSyncer.prototype._pullRecentBuilds): Method to fetch recent builds from Buildbot 0.9 server. |
| (BuildbotSyncer.prototype.pathForRecentBuilds): URL for fetching recent builds from Buildbot 0.9 server. |
| (BuildbotSyncer.prototype.pathForBuildJSONDeprecated): Renamed from pathForBuildJSON. |
| * unit-tests/buildbot-syncer-tests.js: |
| (_pullRecentBuilds.it): unit-test - should not fetch recent builds when count is zero. |
| (_pullRecentBuilds.it): unit-test - should pull the right number of recent builds. |
| (_pullRecentBuilds.it): unit-test - should handle unexpected error while fetching recent builds. |
| (_pullRecentBuilds.it): unit-test - should create BuildbotBuildEntry after fetching recent builds. |
| |
| 2018-02-01 Aakash Jain <aakash_jain@apple.com> |
| |
| Create BuildbotBuildEntry in Buildbot syncer in Buildbot 0.9 format |
| https://bugs.webkit.org/show_bug.cgi?id=182036 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * tools/js/buildbot-syncer.js: |
| (BuildbotBuildEntry): Class for Buildbot entry in Buildbot 0.9 data format. |
| (BuildbotBuildEntryDeprecated): Renamed from BuildbotBuildEntry, sub-classed from BuildBotEntry. Handles Buildbot 0.8 data format. |
| (BuildbotBuildEntryDeprecated.prototype.url): URL in buildbot 0.8 format. |
| (BuildbotSyncer.prototype.builderID): Added. |
| (BuildbotSyncer.prototype.pathForPendingBuildsJSONDeprecated): Renamed from BuildbotSyncer.prototype.pathForPendingBuildsJSON. |
| (BuildbotSyncer.prototype.pathForPendingBuilds): Path for pending builds in Buildbot 0.9 format. |
| (BuildbotSyncer.prototype.urlForBuildNumberDeprecated): Deprecated. Renamed from urlForBuildNumber. |
| (BuildbotSyncer.prototype.urlForBuildNumber): Updated in Buildbot 0.9 format. |
| (BuildbotSyncer.prototype.urlForPendingBuild): Buildbot 0.9 has individual webpage for pending buildrequests as well. URL to that page. |
| * unit-tests/buildbot-syncer-tests.js: Renamed BuildbotBuildEntry to BuildbotBuildEntryDeprecated. |
| (sampleBuildData): Sample build data. Common method for in-progress and finished build data. |
| (samplePendingBuildData): Sample data for a pending build. Separate method so that we can easily create sample data with multiple builds. |
| (sampleInProgressBuildData): Ditto for in-progress build. |
| (sampleFinishedBuildData): Ditto for finished build. |
| (samplePendingBuild): Sample data for single pending build. |
| (sampleInProgressBuild): Ditto for in-progress build. |
| (sampleFinishedBuild): Ditto for finished build. |
| (samplePendingBuildDeprecated): Renamed from samplePendingBuild. |
| (sampleInProgressBuildDeprecated): Renamed from sampleInProgressBuild. |
| (sampleFinishedBuildDeprecated): Renamed from sampleFinishedBuild. |
| (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for pending build. |
| (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for in-progress build. |
| (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for finished build. |
| (BuildbotBuildEntry.it: Added unit-test for creating BuildbotBuildEntry for mix of in-progress and finished build. |
| |
| 2018-01-31 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Should chose the best match during 'route' if there are multiple matches. |
| https://bugs.webkit.org/show_bug.cgi?id=182326 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| r227749 made a change that 'analysisCategoryPage' will be added before 'analysisTaskPage'. |
| As route names for both pages starts with 'analysis', whichever added first will be chosen. |
| For a route like 'analysis/task/1'. As a result, 'analysisCategoryPage' will be chosen and |
| this is not expected behavior. Adding the logic on the cases when route name does not extact |
| match the route name, always choose the longest mathcing route name. |
| |
| Also modernized the code of 'page-router.js' to use const & let instead of var. |
| |
| Added a browser test to guard against this bug. |
| |
| * browser-tests/index.html: Import 'page-router-tests.js'. |
| * browser-tests/page-router-tests.js: Added unit test to guard against this bug. |
| * public/v3/pages/page-router.js: |
| (PageRouter.prototype.route): Added logic to find best matching in the case of inexact match. |
| (PageRouter.prototype.pageDidOpen): |
| (PageRouter.prototype._updateURLState): |
| (PageRouter.prototype._serializeToHash): |
| (PageRouter.prototype._deserializeFromHash): |
| (PageRouter.prototype._serializeHashQueryValue): |
| (PageRouter.prototype._deserializeHashQueryValue): |
| (PageRouter.prototype._countOccurrences): |
| (PageRouter): |
| |
| 2018-01-29 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Should fetch owner commits in build-requests-fetcher. |
| https://bugs.webkit.org/show_bug.cgi?id=182266 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| In a build request, owner commit of a commit is not always one of a commit in the commit set. |
| Build request api should contain owner commits in the 'commits' field of the return value. |
| |
| * public/include/build-requests-fetcher.php: Added logic to fetch owner commits and added them into 'commits'. |
| * server-tests/api-build-requests-tests.js: Added a unit test. |
| * server-tests/resources/mock-data.js: |
| (MockData.set addTestGroupWithOwnerCommitNotInCommitSet): Added a test group with a build request, the commit set of which does |
| not contain owner commit of one commit. |
| |
| 2018-01-29 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Add the support for reporting Speedometer 2.0 results to perf dashboard |
| https://bugs.webkit.org/show_bug.cgi?id=182089 |
| <rdar://problem/36172346> |
| |
| Rubber-stamped by Chris Dumez. |
| |
| Apparently, this has always worked since the very first version of the perf dashboard added in r163688. |
| The relevant code is at the line 313 of report-processor.php now. |
| |
| Added regression tests for this feature since we didn't have any tests four years ago. |
| |
| * server-tests/api-report-tests.js: |
| |
| 2018-01-29 Ryosuke Niwa <rniwa@webkit.org> |
| |
| REGRESSION(r225898): The perf dashboard fails to open when there are no summary pages |
| https://bugs.webkit.org/show_bug.cgi?id=182210 |
| |
| Rubber-stamped by Chris Dumez. |
| |
| The bug was caused by TestFreshnessPage unconditionally assuming that summaryPageConfiguration is set. |
| Fixed it by not creating TestFreshnessPage when there are no summary pages specified. |
| |
| Also modernized the code to use const & let instead of var. |
| |
| * public/v3/main.js: |
| (main): |
| |
| 2018-01-29 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Perf dashboard's page title can be set to a previously visited page |
| https://bugs.webkit.org/show_bug.cgi?id=182209 |
| |
| Rubber-stamped by Chris Dumez. |
| |
| Before this patch, opening a page and navigating away from it could result in the page title |
| getting set to that of the previously visited page after the new page had been opened. |
| |
| This bug was caused by Page.render keep setting document.title even though the page is no longer |
| the currently open page of the router. Fixed it by exiting early in Page.enqueueToRender when |
| this page is not the currently open page of the router. |
| |
| Also added basic tests for Page. |
| |
| * browser-tests/index.html: |
| * browser-tests/page-tests.js: Added. |
| * public/v3/pages/page.js: |
| (Page): Removed the unused second constructor argument. |
| (Page.prototype.enqueueToRender): Fixed the bug. |
| (Page.prototype.render): Use const instead of var. |
| |
| 2018-01-29 Ryosuke Niwa <rniwa@webkit.org> |
| |
| CommitLogViewer should not fetch commits in serial |
| https://bugs.webkit.org/show_bug.cgi?id=182207 |
| |
| Rubber-stamped by Chris Dumez. |
| |
| Fetch both the commits in the range as well as the preceding commit at once instead of |
| fetching the preceding commit only after the commits in the range had been fetched. |
| |
| * browser-tests/commit-log-viewer-tests.js: Fixed the tcoest case after r224227. |
| * public/v3/components/commit-log-viewer.js: |
| (CommitLogViewer.prototype._fetchCommitLogs): Fetch commits in parallel. |
| |
| 2018-01-24 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Check existence of 'node_modules_dir' before creating it. |
| https://bugs.webkit.org/show_bug.cgi?id=182040 |
| |
| Reviewed by Aakash Jain. |
| |
| Fix the bug introduced in r227395. |
| |
| * tools/run-tests.py: Added directory existence check. |
| |
| 2018-01-22 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Fix the bug that 'TestGroupResultsViewer' creates unnecessary rows. |
| https://bugs.webkit.org/show_bug.cgi?id=181967 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Fixed a bug caused by a typo in CommitSet.equals, which makes it returns incorrect results for most |
| comparison between a CommitSet and a MeasurementCommitSet. |
| |
| MeasurementCommitSet does not have full information for the commits, thus, it cannot build mappings |
| between root/patch/owner commit/requires build to repository. When querying whether a given repository |
| needs to be built, MeasurementCommitSet will return undefined. Due to 'undefined != false', this |
| equality check will fail. Making 'CommitSet.requiresBuildForRepository' defaults to 'false' would fix |
| this bug. |
| |
| * public/v3/models/commit-set.js: |
| (CommitSet.prototype.requiresBuildForRepository): Make it return false when key does not exist |
| instead of 'undefined'. |
| (CommitSet.prototype.equals): Fixed the typo that causes the bug. |
| Use wrapped functions instead of querying the mapping directly. |
| * unit-tests/commit-set-tests.js: Added unit tests. |
| |
| 2018-01-18 Dewei Zhu <dewei_zhu@apple.com> |
| |
| 'run-test.py' script should make sure 'node_modules' directory exists before installing node packages. |
| https://bugs.webkit.org/show_bug.cgi?id=181808 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| 'run-test.py' will fail if 'node_modules' does not exist before running this script. |
| Instead of calling 'os.chdir' to change directory, use 'cwd' in subprocess instead. |
| |
| * tools/run-tests.py: Added the logic to ensure 'node_modules' exists. |
| Also use 'cwd' in subprocess.call instead of calling 'os.chdir' ahead. |
| |
| 2018-01-20 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Extend 'ifBuilt' config key to set property based on whether certain repositories are built or not. |
| https://bugs.webkit.org/show_bug.cgi?id=181906 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Before this change, 'ifBuilt' will always set specified property for test properties as long as there |
| is a build type build in the same build request group. However, this is no longer valid as we don't |
| want to set specified property for testing when only owned commit is built in previous build. |
| 'ifBuilt' needs to conditionally set property based on whether certain required repositories are built. |
| Empty required repository list means no requirement on repository to set property. |
| |
| * tools/js/buildbot-syncer.js: |
| (BuildbotSyncer.prototype._propertiesForBuildRequest):In the case of 'built', only set property when |
| repository requirment is meet and there is a 'build' root request in the same build request group. |
| (BuildbotSyncer._parseRepositoryGroup): Extend 'ifBuild' to pass information based on contition. |
| * unit-tests/buildbot-syncer-tests.js: Added unit tests. |
| |
| 2018-01-19 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Should reject updating a build request which has an associated build. |
| https://bugs.webkit.org/show_bug.cgi?id=181893 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Current code does not prevent submitting to same build request multiple times. |
| This could lead to a build losing its associated build request. |
| As a result, this build will be visible in charts which is not right. |
| Added a check when a build request is reported. |
| Addressed a 'FIXME' for the race condition inside ReportProcessor->resolve_build_id by surrounding |
| it with a database transaction. |
| |
| * public/include/report-processor.php: |
| Wrap adding platform and resolve_build_id with a database transaction. |
| Add a check to make sure only a build request has no associated build can be updated. |
| * server-tests/api-report-tests.js: Added unit tests accordingly. |
| |
| 2018-01-18 Dewei Zhu <dewei_zhu@apple.com> |
| |
| Should allow updating a build-request to 'canceled'. |
| https://bugs.webkit.org/show_bug.cgi?id=181819 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| It's possible syncing script update a build-request to 'canceled' state. |
| |
| * public/api/build-requests.php: Added 'canceled' as an acceptable update state. |
| * server-tests/api-build-requests-tests.js: Added a unit test to update a build-request to 'canceled'. |
| |
| 2018-01-18 Aakash Jain <aakash_jain@apple.com> |
| |
| Add support for builderNameToIDMap in BuildbotSyncer |
| https://bugs.webkit.org/show_bug.cgi?id=176526 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * tools/js/buildbot-syncer.js: |
| (BuildbotSyncer._loadConfig): Added builderNameToIDMap parameter. It would be used later on. |
| (BuildbotSyncer._resolveBuildersWithPlatforms): Ditto. |
| (BuildbotSyncer._validateAndMergeConfig): Added builderID as a valid config parameter. |
| * tools/js/buildbot-triggerable.js: |
| (BuildbotTriggerable.prototype.getBuilderNameToIDMap): Method to fetch BuilderNameToIDMap from Buildbot 0.9. |
| (BuildbotTriggerable.prototype.getBuilderNameToIDMapDeprecated): Method to fetch BuilderNameToIDMap from Buildbot 0.8. |
| (BuildbotTriggerable.prototype.initSyncers): Updated to use getBuilderNameToIDMap. |
| * unit-tests/buildbot-syncer-tests.js: Updated unit-tests. |
| * server-tests/resources/mock-data.js: |
| (MockData.buildbotBuildersURLDeprecated): URL for fetching Builders list. |
| (MockData.buildbotBuildersURL): Ditto for Buildbot 0.9 |
| (MockData.mockBuildbotBuildersDeprecated): Sample builders data for Buildbot 0.8 |
| (MockData.mockBuildbotBuilders): Ditto for Buildbot 0.9 |
| * server-tests/tools-buildbot-triggerable-tests.js: Added test for getBuilderNameToIDMap. Updated tests to handle |
| newly added promise for fetching builders list from Buildbot. |
| * server-tests/tools-sync-buildbot-integration-tests.js: Ditto. |
| |
| 2018-01-18 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Charts can be empty when values are all identical |
| https://bugs.webkit.org/show_bug.cgi?id=181828 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Fixed the bug that when SampleVarianceUpperTriangularMatrix can store -Infinity as the initial cost |
| of some entries when the sample standard deviation between two points turns out to be 0, |
| and cause splitIntoSegmentsUntilGoodEnough to return undefiend because no segmentation has a finite cost. |
| |
| Also fixed the bug that the time series chart fails to show any data points when all data points have |
| identical values as the entire y-coordinate gets collapsed to an empty value range by adjusting the max value |
| when min & max values are identical. |
| |
| * public/v3/components/time-series-chart.js: |
| (TimeSeriesChart.prototype._ensureValueRangeCache): Raise the max slightly when min & max are identical |
| to avoid the chart becoming empty. Otherwise valueDiff in _computeVerticalRenderingMetrics becomes 0 |
| and value-to-y-coordinate conversion always results in NaN. |
| * public/shared/statistics.js: |
| (Statistics..SampleVarianceUpperTriangularMatrix): |
| * unit-tests/statistics-tests.js: Added a test case. |
| |
| 2018-01-18 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Don't fetch more than two builds to check duplicity of builds in ReportProcessor |
| https://bugs.webkit.org/show_bug.cgi?id=181786 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Limit the number of builds to check to avoid using a lot of memory with a long delay. |
| |
| * public/include/report-processor.php: |
| (ReportProcessor::resolve_build_id): |
| |
| 2018-01-17 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Rename config.json to config.json.sample |
| https://bugs.webkit.org/show_bug.cgi?id=181785 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * .gitignore: Added config.json. |
| * ReadMe.md: Updated the instruction. |
| * config.json.sample: Renamed from config.json. |
| |
| 2018-01-17 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Unreviewed build fixes in TestGroupResultsViewer. |
| |
| * public/v3/components/test-group-results-viewer.js: |
| (TestGroupResultsViewer.prototype.render): _renderCurrentMetricsLazily was never called. |
| (TestGroupResultsViewer.prototype._buildRowForMetric): Don't try to render null or NaN. |
| |
| 2018-01-17 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Fix perf dashboard tests for node v8 |
| https://bugs.webkit.org/show_bug.cgi?id=181782 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Fixed the various tests for node.js v8, which is the latest LTS version. |
| |
| * server-tests/api-manifest-tests.js: Replaced the missing Triggerable.acceptsTest by Triggerable.acceptedTests |
| after r226836. |
| * server-tests/api-measurement-set-tests.js: Added "Z" to the end timestamps to force UTF timezone now that Date |
| in node.js parses using the local timezone by default. |
| * server-tests/resources/test-server.js: |
| (TestServer.prototype._restoreDataDirectory): Fixed the bug that this function was erroneously using the async |
| function to rename a directory per new warnings. This code was racy, and it used to cause a test error occasionally. |
| * server-tests/tools-os-build-fetcher-tests.js: Fixed the assertions to make it work in the latest node.js. |
| * unit-tests/measurement-set-tests.js: |
| (waitForMeasurementSet): Wait for setTimeout to cycle through all microtasks instead of just two microtask cycles. |
| |
| 2018-01-11 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Cannot trigger Dromaeo tests on internal perf try bots |
| https://bugs.webkit.org/show_bug.cgi?id=179712 |
| |
| Reviewed by Chris Dumez. |
| |
| The bug was caused by CustomAnalysisTaskConfigurator only showing the top-level tests that are triggerable |
| instead of the list of highest level tests that are triggerable. |
| |
| * public/v3/components/custom-analysis-task-configurator.js: |
| (CustomAnalysisTaskConfigurator.prototype.selectTests): Update the test group name when a new test is picked. |
| (CustomAnalysisTaskConfigurator.prototype.selectPlatform): |
| (CustomAnalysisTaskConfigurator.prototype._didUpdateSelectedPlatforms): Extracted from selectPlatform. |
| (CustomAnalysisTaskConfigurator.prototype._renderTriggerableTests): Include the list of all highest-level tests |
| which are triggerable. |
| (CustomAnalysisTaskConfigurator.prototype._renderRadioButtonList): Added labelForObject which returns the label |
| to be used in the list items. For tests, we want to use the full name, not just its label. |
| * public/v3/models/analysis-task.js: |
| (AnalysisTask.fetchById): |
| * public/v3/models/triggerable.js: |
| (Triggerable.prototype.acceptedTests): Added. |
| (Triggerable.prototype.acceptsTest): Deleted. |
| |
| == Rolled over to ChangeLog-2018-01-01 == |