3374 lines
180 KiB
Plaintext
3374 lines
180 KiB
Plaintext
2021-07-20 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Use bigint for 'commit_order' field in 'commits' table to support larger range.
|
|
https://bugs.webkit.org/show_bug.cgi?id=228133
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
'integer' in postgres has range from -2147483648 to +2147483647 which is not big enough.
|
|
Use 'bigint' to support wider range (-9223372036854775808 to 9223372036854775807).
|
|
SQL query for migration:
|
|
`ALTER TABLE commits ALTER commit_order TYPE bigint;`
|
|
|
|
* init-database.sql: Update 'integer' to 'bigint' for 'commit_order'.
|
|
* migrate-database.sql: Added migration SQL for this change.
|
|
* server-tests/api-report-commits-tests.js: Add a unit test.
|
|
|
|
2021-05-03 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
[perf dashboard] Add sequential mode for perf dashboard A/B testing.
|
|
https://bugs.webkit.org/show_bug.cgi?id=223886
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Add 'testgroup_repetition_type' to 'analysis_test_groups' table to store repetition type which defaults to 'alternating'.
|
|
Add support to schedule 'sequential' A/B testing which schedules all iterations for the first configuration (A)
|
|
before the iterations for the second configuration (B).
|
|
Before this patch, all A/B testing alternated between two different configurations for each iteration.
|
|
Add retry logic for 'sequential' A/B testing.
|
|
|
|
Update syncing script to not proceed with next configuration the current configuration successfully completed
|
|
more iterations than the initially requested or retries exceeded the list.
|
|
|
|
Fix a potential race in syncing script that 'Promise.all' may cause test group not scheduled in order.
|
|
|
|
* browser-tests/test-group-form-tests.js: Updated and added unit tests.
|
|
* init-database.sql: Added 'testgroup_repetition_type' field to 'analysis_test_groups' table.
|
|
* migrate-database.sql: Updated migration script to conditionally add 'testgroup_repetition_type' field.
|
|
* public/api/test-groups.php: Added 'repetitionType' field in api return value.
|
|
* public/include/build-requests-fetcher.php: Fetching build requests under a triggerable should include test
|
|
group with all test groups finished but still need retry. This will allow syncing script to resolve the build
|
|
request by ID and block other request to be scheduled on the builder.
|
|
* public/include/commit-sets-helpers.php: Added code to create build requests based on test mode.
|
|
* public/privileged-api/add-build-requests.php: Added support to only add build requests to one commit set.
|
|
* public/privileged-api/create-analysis-task.php: Added 'repetitionType' support.
|
|
* public/privileged-api/create-test-group.php: Added 'repetitionType' support.
|
|
* public/privileged-api/update-test-group.php:
|
|
* public/shared/common-component-base.js:
|
|
* public/v3/components/custom-configuration-test-group-form.js: Added 'repetitionType' support.
|
|
(CustomConfigurationTestGroupForm.prototype.startTesting):
|
|
* public/v3/components/customizable-test-group-form.js:
|
|
(CustomizableTestGroupForm.prototype.startTesting):
|
|
* public/v3/components/test-group-form.js:
|
|
(TestGroupForm.prototype.startTesting):
|
|
* public/v3/models/analysis-task.js:
|
|
(AnalysisTask.async create):
|
|
(AnalysisTask):
|
|
* public/v3/models/build-request.js:
|
|
(BuildRequest):
|
|
(BuildRequest.prototype.updateSingleton): Allow build request order to be updated.
|
|
* public/v3/models/test-group.js:
|
|
(TestGroup):
|
|
(TestGroup.prototype.updateSingleton):
|
|
(TestGroup.prototype.repetitionType):
|
|
(TestGroup.prototype.repetitionCountForCommitSet): Refactored `repetitionCount` since repetition may be different
|
|
between configurations.
|
|
(TestGroup.prototype.hasRetries): A helper function to tell if a test group has retry runs.
|
|
(TestGroup.prototype.additionalRepetitionNeededToReachInitialRepetitionCount):
|
|
(TestGroup.prototype.successfulTestCount):
|
|
(TestGroup.prototype.isFirstTestRequest):
|
|
(TestGroup.prototype.precedingBuildRequest):
|
|
(TestGroup.prototype.retryCountForCommitSet):
|
|
(TestGroup.prototype.retryCountsAreSameForAllCommitSets):
|
|
(TestGroup.prototype.async _createAlternatingRetriesForTestGroup): Moved from 'retry-failed-build-requests' module.
|
|
(TestGroup.async _createSequentialRetriesForTestGroup): Moved from 'retry-failed-build-requests' module.
|
|
(TestGroup.prototype.async cancelPendingRequests):
|
|
(TestGroup.prototype.async didSendNotification):
|
|
(TestGroup.prototype.async addMoreBuildRequests):
|
|
(TestGroup.async createWithTask):
|
|
(TestGroup.async createWithCustomConfiguration):
|
|
(TestGroup.async createAndRefetchTestGroups):
|
|
(TestGroup.prototype.async scheduleMoreRequestsOrClearFlag): Moved from 'retry-failed-build-requests' module.
|
|
(TestGroup.async fetchById): Added support to fetch test group by ID.
|
|
* public/v3/pages/analysis-task-page.js:
|
|
(AnalysisTaskChartPane.prototype.didConstructShadowTree):
|
|
(AnalysisTaskResultsPane.prototype.didConstructShadowTree):
|
|
(AnalysisTaskConfiguratorPane.prototype.setTestGroups):
|
|
(AnalysisTaskConfiguratorPane):
|
|
(AnalysisTaskTestGroupPane.prototype.didConstructShadowTree):
|
|
(AnalysisTaskTestGroupPane.prototype._renderCurrentTestGroup):
|
|
(AnalysisTaskTestGroupPane.prototype._retrySummary):
|
|
(AnalysisTaskPage.prototype.didConstructShadowTree):
|
|
(AnalysisTaskPage.prototype.async _retryCurrentTestGroup):
|
|
(AnalysisTaskPage.prototype.async _bisectCurrentTestGroup):
|
|
(AnalysisTaskPage.set const):
|
|
(AnalysisTaskPage.prototype.async _createTestGroupAfterVerifyingCommitSetList):
|
|
(AnalysisTaskPage.prototype.async _createCustomTestGroup):
|
|
* public/v3/pages/chart-pane.js:
|
|
(ChartPane.prototype.didConstructShadowTree):
|
|
(ChartPane.prototype.async _analyzeRange):
|
|
* public/v3/pages/create-analysis-task-page.js:
|
|
(CreateAnalysisTaskPage.prototype.async _createAnalysisTaskWithGroup):
|
|
* server-tests/api-build-requests-tests.js: Added a unit test.
|
|
* server-tests/api-upload-root-tests.js: Updated unit tests.
|
|
* server-tests/privileged-api-add-build-requests-tests.js: Updated and added unit tests.
|
|
* server-tests/privileged-api-create-analysis-task-tests.js: Added unit tests.
|
|
* server-tests/privileged-api-create-test-group-tests.js: Updated and added unit tests.
|
|
* server-tests/privileged-api-update-test-group-tests.js: Updated and added unit tests.
|
|
* server-tests/resources/common-operations.js:
|
|
(async assertThrows):
|
|
* server-tests/resources/mock-data.js:
|
|
(MockData.addMockData):
|
|
(MockData.set addMockBuildRequestsWithRoots):
|
|
(MockData.set addAnotherMockTestGroup):
|
|
(MockData.set mockTestSyncConfigWithSingleBuilder):
|
|
(MockData.sampleBuildData):
|
|
* server-tests/tools-buildbot-triggerable-tests.js: Updated and added unit tests.
|
|
* server-tests/tools-sync-buildbot-integration-tests.js: Updated unit tests.
|
|
(async createTestGroupWithPatch):
|
|
(createTestGroupWihOwnedCommit):
|
|
* tools/js/buildbot-syncer.js:
|
|
(BuildbotSyncer.prototype.scheduleRequestInGroupIfAvailable):
|
|
(BuildbotSyncer.prototype.pullBuildbot):
|
|
* tools/js/buildbot-triggerable.js:
|
|
(BuildbotTriggerable):
|
|
(BuildbotTriggerable.prototype.async syncOnce):
|
|
(BuildbotTriggerable.prototype.async _scheduleRequest):
|
|
(BuildbotTriggerable.prototype._shouldDeferSequentialTestingRequestWithNewCommitSet):
|
|
* tools/js/measurement-set-analyzer.js:
|
|
(MeasurementSetAnalyzer.prototype.async _analyzeMeasurementSet):
|
|
(MeasurementSetAnalyzer):
|
|
* tools/js/retry-failed-build-requests.js: Removed.
|
|
* tools/run-analysis.js: Use updated API to retry.
|
|
(async analysisLoop):
|
|
(async processTestGroupMayNeedMoreRequests):
|
|
* tools/sync-buildbot.js: Added command line option '--max-retry-factor'.
|
|
* unit-tests/analysis-task-tests.js: Updated unit tests.
|
|
* unit-tests/buildbot-syncer-tests.js: Updated unit tests.
|
|
(createSampleBuildRequest):
|
|
* unit-tests/measurement-set-analyzer-tests.js:
|
|
* unit-tests/retry-failed-build-requests-tests.js: Moved unit tests to test-group-tests.js.
|
|
* unit-tests/test-groups-tests.js: Added unit tests from 'retry-failed-build-requests-tests.js'.
|
|
|
|
2021-05-19 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix a bug that incorrect timestamp is reported for Git repositories.
|
|
https://bugs.webkit.org/show_bug.cgi?id=225987
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
'datetime.fromtimestamp' will use the current timezone.
|
|
However, '/api/report-commits' will interprete it as a timestamp string from UTC.
|
|
In order to keep the consistency, we should always use 'datetime.utcfromtimestamp'.
|
|
|
|
* tools/sync-commits.py: Use 'datetime.utcfromtimestamp' instead of 'datetime.fromtimestamp'.
|
|
(GitRepository._revision_from_tokens):
|
|
|
|
2021-05-20 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
Need to use default git pull to remove the fake svn commit when syncing with SVN
|
|
https://bugs.webkit.org/show_bug.cgi?id=226039
|
|
|
|
Reviewed by Jonathan Bedard.
|
|
|
|
* tools/sync-commits.py:
|
|
(GitRepository._fetch_remote):
|
|
|
|
2021-05-18 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
Clean up git svn mapping when git pull
|
|
https://bugs.webkit.org/show_bug.cgi?id=225934
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
* tools/sync-commits.py:
|
|
(GitRepository._fetch_remote):
|
|
|
|
2021-05-18 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
Commits updater should ignore null revision identifier
|
|
https://bugs.webkit.org/show_bug.cgi?id=225911
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
* public/include/commit-updater.php:
|
|
* server-tests/api-report-commits-tests.js:
|
|
|
|
2021-05-07 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
Add support for syncing repo with commit revision label.
|
|
https://bugs.webkit.org/show_bug.cgi?id=221982
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Add new syncing option reportRevisionIdentifier, which will let the script try to sync the commit revision identifier from the commit message.
|
|
Add new syncing option reportSVNRevision, which will let the script try to report SVN revision from a git-svn repo.
|
|
|
|
* tools/sync-commits.py:
|
|
(main):
|
|
(load_repository):
|
|
(GitRepository.__init__):
|
|
(GitRepository.fetch_next_commit):
|
|
(GitRepository._git_hash_to_svn_revision):
|
|
(GitRepository._svn_revision_to_git_hash):
|
|
(GitRepository._revision_from_tokens):
|
|
(GitRepository._fetch_all_hashes):
|
|
|
|
2021-04-14 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
Support Commit revision identifier in the Chart
|
|
https://bugs.webkit.org/show_bug.cgi?id=224496
|
|
|
|
Reviewed by Dewei Zhu.
|
|
|
|
In the measurement-set, we include the commit info but not the commit revision identifier column.
|
|
Make the API return the commit revision identifier as part of the commit data.
|
|
|
|
* browser-tests/customizable-test-group-form-tests.js: Fix flaky tests.
|
|
* browser-tests/index.html: Add commit revision identifier info.
|
|
* browser-tests/time-series-chart-tests.js: Fix flaky tests.
|
|
* public/api/measurement-set.php: Make this API provide commit revision identifier info.
|
|
* public/include/build-requests-fetcher.php: Ditto.
|
|
* public/v3/models/commit-set.js: Make the commit model can be constructed with the API respose format.
|
|
* server-tests/api-measurement-set-tests.js: Adding test for commit revision identifier.
|
|
* server-tests/api-build-requests-tests.js: Ditto.
|
|
* unit-tests/analysis-task-tests.js: Ditto.
|
|
(measurementCluster):
|
|
* unit-tests/commit-set-tests.js: Ditto.
|
|
* unit-tests/measurement-adaptor-tests.js: Ditto.
|
|
* unit-tests/measurement-set-tests.js: Ditto.
|
|
|
|
2021-03-31 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
Add commit revision label support
|
|
https://bugs.webkit.org/show_bug.cgi?id=222897
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Add new column revision label.
|
|
Make all commit api also can work with revision label.
|
|
Change the commit label display with commit revision label.
|
|
|
|
* browser-tests/commit-log-viewer-tests.js: Fix a failed test case, while requesting the remote api,
|
|
we should wait for those promises resolved and then wait for commponent to render.
|
|
* init-database.sql: Add new column revision_identifier.
|
|
* migrate-database.sql: Add new column revision_identifier.
|
|
* public/include/commit-log-fetcher.php: Make api that works with revision should work with revision label.
|
|
* public/include/commit-updater.php: Ditto.
|
|
* public/include/report-processor.php: Make the processor can also insert revision label.
|
|
* public/v3/models/commit-log.js:
|
|
(CommitLog.prototype.updateSingleton):
|
|
(CommitLog.prototype.revisionIdentifier):
|
|
(CommitLog.prototype.label): Make the label include revision label and revision.
|
|
(CommitLog.prototype.diff): Make the diff label include revision label and revision.
|
|
* server-tests/api-commits-tests.js:
|
|
* server-tests/api-report-commits-tests.js:
|
|
* server-tests/api-report-tests.js:
|
|
(reportWithRevisionIdentifierCommit):
|
|
* unit-tests/commit-log-tests.js:
|
|
|
|
2021-03-22 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
[perf dashboard] Remove v1 and v2 code.
|
|
https://bugs.webkit.org/show_bug.cgi?id=223617
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Remove v1 and v2 code from perf dashboard.
|
|
Remove detect-changes.js script since run-analysis.js is the v3 version equivalent.
|
|
|
|
* public/index.html: Keep the redirection to v3.
|
|
* public/js/helper-classes.js: Removed.
|
|
* public/js/jquery.colorhelpers.js: Removed.
|
|
* public/js/jquery.flot.categories.js: Removed.
|
|
* public/js/jquery.flot.crosshair.js: Removed.
|
|
* public/js/jquery.flot.errorbars.js: Removed.
|
|
* public/js/jquery.flot.fillbetween.js: Removed.
|
|
* public/js/jquery.flot.js: Removed.
|
|
* public/js/jquery.flot.navigate.js: Removed.
|
|
* public/js/jquery.flot.plugins.js: Removed.
|
|
* public/js/jquery.flot.resize.js: Removed.
|
|
* public/js/jquery.flot.selection.js: Removed.
|
|
* public/js/jquery.flot.stack.js: Removed.
|
|
* public/js/jquery.flot.symbol.js: Removed.
|
|
* public/js/jquery.flot.threshold.js: Removed.
|
|
* public/js/jquery.flot.time.js: Removed.
|
|
* public/js/jquery.js: Removed.
|
|
* public/v2/analysis.js: Removed.
|
|
* public/v2/app.css: Removed.
|
|
* public/v2/app.js: Removed.
|
|
* public/v2/chart-pane.css: Removed.
|
|
* public/v2/commits-viewer.js: Removed.
|
|
* public/v2/data.js: Removed.
|
|
* public/v2/index.html: Keep the redirection to v3.
|
|
* public/v2/interactive-chart.js: Removed.
|
|
* public/v2/js/d3/LICENSE: Removed.
|
|
* public/v2/js/d3/d3.js: Removed.
|
|
* public/v2/js/d3/d3.min.js: Removed.
|
|
* public/v2/js/ember-data.js: Removed.
|
|
* public/v2/js/ember.js: Removed.
|
|
* public/v2/js/handlebars.js: Removed.
|
|
* public/v2/js/jquery.min.js: Removed.
|
|
* public/v2/manifest.js: Removed.
|
|
* public/v2/popup.js: Removed.
|
|
* public/v2/statistics-strategies.js: Removed.
|
|
* tools/detect-changes.js: Removed.
|
|
|
|
2021-03-21 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
[perf dashboard] Remove non-inclusive words from perf dashboard.
|
|
https://bugs.webkit.org/show_bug.cgi?id=223505
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Removed most of non-inclusive terminology and replaced it with 'worker'.
|
|
Make impacted APIs backward compatible during transition.
|
|
The non-inclusive terminology will be removed after transition.
|
|
|
|
* ReadMe.md: Removed non-inclusive words.
|
|
* init-database.sql: Rename tables with non-inclusive words.
|
|
* migrate-database.sql: Added migration SQL for existing database.
|
|
* public/admin/build-workers.php: Renamed from Websites/perf.webkit.org/public/admin/build-slaves.php.
|
|
* public/api/build-requests.php:
|
|
* public/api/measurement-set.php:
|
|
* public/api/report-commits.php:
|
|
* public/api/runs.php:
|
|
* public/api/update-triggerable.php:
|
|
* public/api/upload-root.php:
|
|
* public/include/admin-header.php:
|
|
* public/include/json-header.php:
|
|
* public/include/report-processor.php:
|
|
* public/privileged-api/add-build-requests.php:
|
|
* public/privileged-api/create-analysis-task.php:
|
|
* public/privileged-api/create-test-group.php:
|
|
* public/privileged-api/update-test-group.php:
|
|
* public/v2/js/ember.js:
|
|
* server-tests/api-build-requests-tests.js:
|
|
* server-tests/api-commits-tests.js:
|
|
* server-tests/api-report-commits-tests.js:
|
|
* server-tests/api-report-tests.js:
|
|
(emptyReport):
|
|
(reportWitMismatchingCommitTime):
|
|
(reportWithOneSecondCommitTimeDifference):
|
|
(emptyWorkerReport):
|
|
(emptySlaveReport): Deleted.
|
|
* server-tests/api-test-groups.js:
|
|
* server-tests/api-update-triggerable-tests.js:
|
|
(updateWithOSXRepositoryGroup):
|
|
(updateWithMacWebKitRepositoryGroups):
|
|
* server-tests/api-upload-root-tests.js:
|
|
(makeReport):
|
|
(addWorkerAndCreateRootFile):
|
|
* server-tests/privileged-api-add-build-requests-tests.js:
|
|
(async createAnalysisTask):
|
|
(async addTriggerableAndCreateTask):
|
|
* server-tests/privileged-api-create-analysis-task-tests.js:
|
|
* server-tests/privileged-api-create-test-group-tests.js:
|
|
(createAnalysisTask):
|
|
* server-tests/privileged-api-update-test-group-tests.js:
|
|
(async createAnalysisTask):
|
|
(async addTriggerableAndCreateTask):
|
|
* server-tests/resources/common-operations.js:
|
|
* server-tests/resources/mock-data.js:
|
|
(MockData.addMockConfiguration):
|
|
(MockData.set mockTestSyncConfigWithSingleBuilder):
|
|
(MockData.sampleBuildData):
|
|
* server-tests/resources/test-server.js:
|
|
(TestServer.prototype.testConfig):
|
|
* server-tests/tools-buildbot-triggerable-tests.js:
|
|
* server-tests/tools-os-build-fetcher-tests.js:
|
|
* server-tests/tools-sync-buildbot-integration-tests.js:
|
|
(createTriggerable):
|
|
* tools/detect-changes.js:
|
|
(loadServerConfig):
|
|
* tools/js/buildbot-syncer.js:
|
|
(BuildbotBuildEntry.prototype.buildTag):
|
|
(BuildbotSyncer):
|
|
(BuildbotSyncer.prototype.scheduleRequest):
|
|
(BuildbotSyncer.prototype.scheduleRequestInGroupIfAvailable):
|
|
(BuildbotSyncer.prototype.pullBuildbot):
|
|
(BuildbotSyncer._loadConfig):
|
|
(BuildbotSyncer._validateAndMergeConfig):
|
|
(BuildbotBuildEntry.prototype.slaveName): Deleted.
|
|
* tools/js/buildbot-triggerable.js:
|
|
(BuildbotTriggerable):
|
|
(BuildbotTriggerable.prototype.updateTriggerable):
|
|
(BuildbotTriggerable.prototype.async syncOnce):
|
|
(BuildbotTriggerable.prototype.async _scheduleRequest):
|
|
(BuildbotTriggerable.prototype._scheduleRequestIfWorkerIsAvailable):
|
|
(BuildbotTriggerable.prototype._scheduleRequestWithLog):
|
|
(BuildbotTriggerable._testGroupMapForBuildRequests):
|
|
(BuildbotTriggerable.prototype._scheduleRequestIfSlaveIsAvailable): Deleted.
|
|
* tools/js/database.js:
|
|
* tools/js/os-build-fetcher.js:
|
|
(prototype.async _reportCommits):
|
|
* tools/js/privileged-api.js:
|
|
(NodePrivilegedAPI.prototype.sendRequest):
|
|
(NodePrivilegedAPI.configure):
|
|
(NodePrivilegedAPI):
|
|
* tools/pull-os-versions.py:
|
|
(OSBuildFetcher.fetch_and_report_new_builds):
|
|
* tools/run-analysis.js:
|
|
(async analysisLoop):
|
|
* tools/sync-buildbot.js:
|
|
(syncLoop.const.makeTriggerable):
|
|
(syncLoop):
|
|
* tools/sync-commits.py:
|
|
(Repository.fetch_commits_and_submit):
|
|
* tools/sync-os-versions.js:
|
|
(syncLoop):
|
|
* tools/util.py:
|
|
(submit_commits):
|
|
* unit-tests/analysis-task-tests.js:
|
|
* unit-tests/buildbot-syncer-tests.js:
|
|
(sampleiOSConfig):
|
|
(sampleBuildData):
|
|
(async const):
|
|
* unit-tests/checkconfig.js:
|
|
* unit-tests/measurement-set-analyzer-tests.js:
|
|
* unit-tests/privileged-api-tests.js:
|
|
* unit-tests/retry-failed-build-requests-tests.js:
|
|
* unit-tests/test-groups-tests.js:
|
|
|
|
2021-03-21 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
[perf dashboard] Perf dashboard should be compatible with newer version of postgres.
|
|
https://bugs.webkit.org/show_bug.cgi?id=223567
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Newer version of postgres requires explicit ROW expression while updating a single column
|
|
using multi-column update syntax. However, 'ROW' is not supported in postgres < 10. In order
|
|
to keep compatibility, using a separate query when only updating one row.
|
|
|
|
* public/include/db.php: Use 'column = value' when there is only one column to update.
|
|
|
|
2021-03-06 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
[perf dashboard] Use async/await in tests for TimeSeriesChart and InteractiveTimeSeriesChart
|
|
https://bugs.webkit.org/show_bug.cgi?id=222876
|
|
|
|
Reviewed by Sam Weinig.
|
|
|
|
Use async/await instead of chaining promises manually in the browser tests for
|
|
TimeSeriesChart and InteractiveTimeSeriesChart for better readability.
|
|
|
|
* browser-tests/interactive-time-series-chart-tests.js:
|
|
* browser-tests/time-series-chart-tests.js:
|
|
|
|
2021-03-06 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
[perf dashboard] Modernize TimeSeries and TimeSeriesView
|
|
https://bugs.webkit.org/show_bug.cgi?id=222872
|
|
|
|
Reviewed by Dewei Zhu.
|
|
|
|
Declare instance fields in class declarations, use const/let instead of var, and use generators
|
|
for forward and backward iterations instead of manually implementing the iterator protocol.
|
|
|
|
This patch also splits FilteredTimeSeriesView out of TimeSeriesView.
|
|
|
|
* public/v3/models/time-series.js:
|
|
(TimeSeries): Moved the declaration of _data instance field to the class declaration.
|
|
(TimeSeries.prototype.constructor): Deleted.
|
|
(TimeSeries.prototype.extendToFuture):
|
|
(TimeSeries.prototype.valuesBetweenRange):
|
|
(TimeSeries.prototype.findById):
|
|
(TimeSeries.prototype.findPointAfterTime):
|
|
(TimeSeriesView): Declared the instance fields in the class declaration.
|
|
(TimeSeriesView.prototype.constructor): Removed filteredData from the argument since it's split
|
|
out to FilteredTimeSeriesView now.
|
|
(TimeSeriesView.prototype.get _data): Added. An abstraction needed for FilteredTimeSeriesView.
|
|
(TimeSeriesView.prototype._findIndexForPoint): Ditto. Moved out of the constructor.
|
|
(TimeSeriesView.prototype.filter): Return a FilteredTimeSeriesView.
|
|
(TimeSeriesView.prototype.viewTimeRange): Use _subRange to return either TimeSeriesView or
|
|
FilteredTimeSeriesView which ever is needed.
|
|
(TimeSeriesView.prototype._subRange): An abstraction needed for FilteredTimeSeriesView.
|
|
(TimeSeriesView.prototype.Symbol.iterator): Made this a generator instead of implementing
|
|
the iterator protocol directly.
|
|
(TimeSeriesView.prototype._reverse): Ditto.
|
|
(FilteredTimeSeriesView): Added.
|
|
(FilteredTimeSeriesView.prototype.constructor): Added. Assert that afterEndingIndex is less than
|
|
the length of the filtered data. This assertion was missing in TimeSeries prior to this patch
|
|
when filteredData is specified.
|
|
(FilteredTimeSeriesView.prototype.get _data): Added.
|
|
(FilteredTimeSeriesView.prototype._subRange): Added. Instantiate FilteredTimeSeriesView with
|
|
the same filtered data.
|
|
(FilteredTimeSeriesView.prototype._findIndexForPoint): Moved from TimeSeriesView's constructor.
|
|
(FilteredTimeSeriesView.prototype._buildPointIndexMap): Moved from TimeSeriesView.
|
|
|
|
2021-03-06 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
[perf dashboard] Some browser tests are flaky or failing
|
|
https://bugs.webkit.org/show_bug.cgi?id=222874
|
|
|
|
Reviewed by Dewei Zhu.
|
|
|
|
There were two tests in TimeSeriesChart tests that were intermittently failing due to the test
|
|
not reliably waiting for the iframe's resize to take effect and not waiting for the time series'
|
|
fetching logic to run 'til completion before waiting for canvas charts to be re-drawn. Fixing
|
|
these by adding code to wait for these conditons.
|
|
|
|
All browser tests for markup-component.js was broken in r274036 as `require` function is not
|
|
available in browsers. Added a workaround in BrowsingContext to add a make assert.ok function
|
|
using expect(~).to.be.true().
|
|
|
|
* browser-tests/index.html:
|
|
(BrowsingContext.prototype.constructor):
|
|
(waitForElementResize): Added.
|
|
* browser-tests/time-series-chart-tests.js: Fixed bugs in the tests.
|
|
|
|
2021-03-06 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
[perf dashboard] Modernize DataModelObject and LabeledObject
|
|
https://bugs.webkit.org/show_bug.cgi?id=222871
|
|
|
|
Reviewed by Dewei Zhu.
|
|
|
|
Use const/let instead of var, async/await instead of Promise.then, and Map instead
|
|
of a regular object for a dictionary.
|
|
|
|
Also define instance fields in the class declaration instead of simply adding them
|
|
in the class constructors, and set the default parameter values instead of relying
|
|
on the unspecified argument being undefined.
|
|
|
|
* public/v3/models/data-model.js:
|
|
(DataModelObject.ensureSingleton):
|
|
(DataModelObject.namedStaticMap):
|
|
(DataModelObject.ensureNamedStaticMap):
|
|
(DataModelObject.findById):
|
|
(DataModelObject.listForStaticMap):
|
|
(DataModelObject.async cachedFetch):
|
|
(DataModelObject):
|
|
(LabeledObject.sortByName):
|
|
(DataModelObject.cachedFetch): Deleted.
|
|
|
|
2021-03-06 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
[perf dashboard] Modernize MeasurementSet
|
|
https://bugs.webkit.org/show_bug.cgi?id=222857
|
|
|
|
Reviewed by Dewei Zhu.
|
|
|
|
Modernized MeasurementSet by using new instance field syntax, let/const instead of var,
|
|
async/await instead of then/catch, and Map instead of an object as a dictionary.
|
|
|
|
* public/v3/models/measurement-set.js:
|
|
(Array.prototype.includes): Deleted this polyfill which was needed for an old node.js.
|
|
(MeasurementSet): Moved the initialization of instance variables here. Also use Map
|
|
for this._allFetches instead of using a regular object as a dictionary.
|
|
(MeasurementSet.findSet): Use Map for MeasurementSet mapping.
|
|
(MeasurementSet.prototype.findClusters): Use const and let instead of var.
|
|
(MeasurementSet.prototype.async fetchBetween): Use async & await instead of Promise.then.
|
|
(MeasurementSet.prototype._ensureClusterPromise): Use let/const instead of var.
|
|
(MeasurementSet.prototype._urlForCache): Renamed from _constructUrl and removed the argument
|
|
for useCache since this function is now only used for feteching JSON caches.
|
|
(MeasurementSet.async _fetchPrimaryCluster): Use async/await and let/const. Consolidated
|
|
the API call to re-generate new JSON files and inlined API path here.
|
|
(MeasurementSet.async _fetchSecondaryCluster): Use async/await.
|
|
(MeasurementSet._addFetchedCluster): Use let/const instead of var.
|
|
(MeasurementSet.async fetchSegmentation): Use async/await and let/const.
|
|
(MeasurementSet.async _cachedClusterSegmentation): Ditto.
|
|
(MeasurementSet.prototype.async _invokeSegmentationAlgorithm): Ditto.
|
|
* unit-tests/measurement-set-tests.js:
|
|
(beforeEach): Updated the logic to reset measurement sets since the static variable was
|
|
renamed in MeasurementSet.findSet above.
|
|
* unit-tests/resources/mock-v3-models.js:
|
|
(MockModels.inject): Ditto.
|
|
|
|
2021-03-06 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
Make server test run with new node version
|
|
https://bugs.webkit.org/show_bug.cgi?id=222463
|
|
|
|
Change assert.equal to assert.strictEqual since node deprecated this API
|
|
Add a new function console.assert to make sure it will throw an error
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
* public/v3/models/repository.js:
|
|
(Repository.sortByNamePreferringOnesWithURL):
|
|
(Repository):
|
|
* server-tests/admin-platforms-tests.js:
|
|
* server-tests/admin-reprocess-report-tests.js:
|
|
* server-tests/api-build-requests-tests.js:
|
|
(return.TestServer.remoteAPI.getJSON.string_appeared_here.then):
|
|
* server-tests/api-commits-tests.js:
|
|
(assertCommitIsSameAsOneSubmitted):
|
|
(return.TestServer.remoteAPI.getJSON.string_appeared_here.then):
|
|
* server-tests/api-manifest-tests.js:
|
|
(return.TestServer.remoteAPI.getJSON.string_appeared_here.then):
|
|
* server-tests/api-measurement-set-tests.js:
|
|
* server-tests/api-report-commits-tests.js:
|
|
(emptyReport.then):
|
|
(async initialReportCommits):
|
|
(async setUpTestsWithExpectedStatus):
|
|
(async testWithExpectedFailure):
|
|
* server-tests/api-report-tests.js:
|
|
(emptyReport.then):
|
|
* server-tests/api-test-groups.js:
|
|
* server-tests/api-update-triggerable-tests.js:
|
|
(update.then):
|
|
(then.response.db.selectAll.string_appeared_here.then):
|
|
(then.db.selectAll.string_appeared_here.then):
|
|
(then.Manifest.fetch.then):
|
|
* server-tests/api-upload-root-tests.js:
|
|
* server-tests/api-uploaded-file-tests.js:
|
|
(return.TestServer.remoteAPI.getJSON.string_appeared_here.then):
|
|
* server-tests/privileged-api-add-build-requests-tests.js:
|
|
(async createAnalysisTask):
|
|
(const.commitSet.of.updatedGroups.0.requestedCommitSets):
|
|
* server-tests/privileged-api-create-analysis-task-tests.js:
|
|
* server-tests/privileged-api-create-test-group-tests.js:
|
|
(createAnalysisTask):
|
|
(return.createAnalysisTask.string_appeared_here.then):
|
|
(return.addTriggerableAndCreateTask.string_appeared_here.then):
|
|
(string_appeared_here.then):
|
|
* server-tests/privileged-api-upate-run-status.js:
|
|
* server-tests/privileged-api-update-test-group-tests.js:
|
|
(async createAnalysisTask):
|
|
* server-tests/privileged-api-upload-file-tests.js:
|
|
(TestServer.testConfig.uploadFileLimitInMB.1.then):
|
|
* server-tests/resources/common-operations.js:
|
|
(async assertThrows):
|
|
* server-tests/resources/temporary-file.js:
|
|
(TemporaryFile.makeTemporaryFileOfSizeInMB):
|
|
* server-tests/tools-buildbot-triggerable-tests.js:
|
|
(assertRequestAndResolve):
|
|
(then.refetchManifest.then):
|
|
(getBuilderNameToIDMapPromise.then):
|
|
* server-tests/tools-os-build-fetcher-tests.js:
|
|
* server-tests/tools-sync-buildbot-integration-tests.js:
|
|
(assertAndResolveRequest):
|
|
* tools/js/assert-override.js: Added.
|
|
(makeConsoleAssertThrow):
|
|
* tools/js/buildbot-syncer.js:
|
|
(BuildbotBuildEntry.prototype.initialize):
|
|
(BuildbotBuildEntry.prototype.buildRequestStatusIfUpdateIsNeeded):
|
|
(BuildbotBuildEntry):
|
|
(BuildbotSyncer.prototype.scheduleRequest):
|
|
(BuildbotSyncer._loadConfig):
|
|
(BuildbotSyncer._parseRepositoryGroup):
|
|
(BuildbotSyncer._validateAndMergeConfig):
|
|
(BuildbotSyncer):
|
|
* tools/js/buildbot-triggerable.js:
|
|
(BuildbotTriggerable.prototype._validateRequests):
|
|
* tools/js/markup-component.js:
|
|
(const.MarkupDocument.new.MarkupDocument.prototype._idForClone):
|
|
(const.MarkupDocument.new.MarkupDocument.prototype.markup):
|
|
* tools/js/os-build-fetcher.js:
|
|
(prototype._addOwnedCommitsForBuild):
|
|
* tools/js/remote.js:
|
|
(NodeRemoteAPI.prototype.configure):
|
|
* tools/js/v3-models.js:
|
|
* unit-tests/commit-set-tests.js:
|
|
|
|
2021-02-18 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix a bug that a syncing script may try to reuse a delete root.
|
|
https://bugs.webkit.org/show_bug.cgi?id=222144
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
UploadedFile.deletedAt is not returned by API which makes UploadedFile instance always claims
|
|
the file it not deleted.
|
|
Fix a logical bug in CommitSet.areAllRootsAvailable.
|
|
|
|
* public/include/uploaded-file-helpers.php: Include 'deletedAt' filed in the API response.
|
|
* public/v3/models/commit-set.js:
|
|
(CommitSet.prototype.areAllRootsAvailable): Fixed an syntax error and a logical bug.
|
|
* server-tests/api-build-requests-tests.js: Added check on 'deletedAt' to be set on deleted files.
|
|
* unit-tests/commit-set-tests.js: Added unit tests for CommitSet.areAllRootsAvailable.
|
|
* unit-tests/resources/mock-v3-models.js: Cleared static map for UploadedFile.
|
|
|
|
2021-02-16 Dean Johnson <dean_johnson@apple.com>
|
|
|
|
[perf.webkit.org] Do not schedule jobs to Buildbot if the last job failed
|
|
https://bugs.webkit.org/show_bug.cgi?id=221943
|
|
|
|
Reviewed by Dewei Zhu.
|
|
|
|
* server-tests/resources/mock-data.js:
|
|
(MockData.sampleBuildData): Allow options.results to be specified.
|
|
* server-tests/tools-buildbot-triggerable-tests.js:
|
|
(async const): Add tests for new functionality. Existing tests still pass.
|
|
* tools/js/buildbot-syncer.js:
|
|
(BuildbotBuildEntry.prototype.initialize): Track the 'results' key from a build.
|
|
(BuildbotBuildEntry.prototype.result): Make the build result available.
|
|
(BuildbotSyncer): Track the last completed build.
|
|
(BuildbotSyncer.prototype.lastCompletedBuildSuccessful): Check if the last completed
|
|
build was successful.
|
|
(BuildbotSyncer.prototype.pullBuildbot):
|
|
* tools/js/buildbot-triggerable.js: Do not schedule a job to a builder who failed
|
|
its last completedd build.
|
|
(BuildbotTriggerable.prototype._scheduleRequestIfSlaveIsAvailable):
|
|
|
|
2021-02-11 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
'sync-commits.py' should be able to limit reporting scope to a specific branch on a Git repository.
|
|
https://bugs.webkit.org/show_bug.cgi?id=221799
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Fetching git commits with 'git log --all ...' may end up fetching commits from branches created for
|
|
pull requests. Add 'branch' variable to allow us to limit to a certain branch.
|
|
|
|
* tools/sync-commits.py: Added 'branch' variable to GitRepository so that we can fetch from a specific branch.
|
|
If branch is not specified, it will still use '--all' to list commits.
|
|
(load_repository):
|
|
(GitRepository.__init__):
|
|
(GitRepository._fetch_all_hashes):
|
|
|
|
2021-02-12 Roy Reapor <rreapor@apple.com>
|
|
|
|
perf.webkit.org/tools/js/analysis-results-notifier.js should allow sending of completion emails regardless of test name
|
|
https://bugs.webkit.org/show_bug.cgi?id=221712
|
|
|
|
Reviewed by Dewei Zhu.
|
|
|
|
Rule `platforms` and `tests` can be undefined, an empty array, or an array of strings. Undefined will match everything.
|
|
Empty array will match nothing. Array of strings will match items in the array.
|
|
|
|
Rule will not match if either `tests` or `platforms` is an empty array.
|
|
|
|
* tools/js/analysis-results-notifier.js:
|
|
(AnalysisResultsNotifier._validateRules.isUnderfinedOrEmptyArrayOrArrayOfStrings):
|
|
- `platforms` and `tests` can now be undefined or an empty array officially
|
|
(AnalysisResultsNotifier._validateRules):
|
|
- switched to `assert.ok()`. `console.assert()` no longer throws since node v10 (https://github.com/facebook/jest/issues/5634)
|
|
- both rule `platforms` and `tests` must pass `isUnderfinedOrEmptyArrayOrArrayOfStrings()`. previously, rules like `{tests: [1, 3], platforms: ['speedometer']}` passes validation.
|
|
(AnalysisResultsNotifier._applyUpdate):
|
|
- switched to `assert.ok()`. `console.assert()` no longer throws since node v10 (https://github.com/facebook/jest/issues/5634)
|
|
(AnalysisResultsNotifier._validateRules.isNonemptyArrayOfStrings): Deleted.
|
|
* unit-tests/analysis-results-notifier-tests.js:
|
|
- added a bunch of unittests
|
|
- specify the exact regex match for `assert.throws()` and `assert.doesNotThrow()` argument.
|
|
|
|
2021-01-20 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
BuildbotTriggerable should not update build requests from another triggerable.
|
|
https://bugs.webkit.org/show_bug.cgi?id=220762
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
BuildbotTriggerable._pullBuildbotOnAllSyncers assumes 'BuildRequest.all()' returns all build requests under current triggerable.
|
|
However, this assumption got broken when root reuse change was introduced because build requests under same analysis task are
|
|
fetched. Thus, 'BuildRequest.all()' may contain build requests those are not under current triggerable. And those build requests
|
|
will be updated to 'failedIfNotCompleted'.
|
|
Update 'api/build-requests' so that 'url' and 'status_description' fields are not cleared if update does not specify them.
|
|
|
|
* public/api/build-requests.php: Added logic to avoid updating 'url' and 'status_description' if they are not specified.
|
|
* server-tests/api-build-requests-tests.js: Added an unit test.
|
|
* server-tests/resources/mock-data.js:
|
|
(MockData.async set addMockBuildRequestsForTwoTriggerablesUnderOneAnalysisTask):
|
|
* server-tests/tools-buildbot-triggerable-tests.js: Added an unit test.
|
|
* tools/js/buildbot-triggerable.js:
|
|
(BuildbotTriggerable.prototype.async syncOnce): Fixed a typo.
|
|
(BuildbotTriggerable._pullBuildbotOnAllSyncers): Instead of iterating over 'BuildRequest.all()', only set 'failedIfNotCompleted'
|
|
for build requests those are under current triggerable and satisfy the condition.
|
|
|
|
2020-12-09 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
'AnalysisTask._commitSetsInSamePlatformGroup' should not fetch an invalid platform and metric config for a MeasurementSet.
|
|
https://bugs.webkit.org/show_bug.cgi?id=219721
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Selected test group on analysis task page may not highlight when 'AnalysisTask._commitSetsInSamePlatformGroup' fetches
|
|
an invalid platform and metric config for a MeasurementSet.
|
|
|
|
* public/v3/models/analysis-task.js: Added a logic to avoid fetching MeasurementSet with an invalid config.
|
|
(AnalysisTask.prototype._commitSetsInSamePlatformGroup):
|
|
|
|
2020-12-09 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Add max age for a root to be reused.
|
|
https://bugs.webkit.org/show_bug.cgi?id=219628
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
In order to prevent reusing a stale root, we should set a limit on the age of a root to be reused.
|
|
* public/include/manifest-generator.php: Added 'maxRootReuseAgeInDays' to manifest.
|
|
* public/v3/models/build-request.js: Added root age check.
|
|
(BuildRequest.prototype.async findBuildRequestWithSameRoots):
|
|
* public/v3/models/commit-set.js: Extended 'areAllRootsAvailable' with root age check.
|
|
(CommitSet.prototype.areAllRootsAvailable):
|
|
* public/v3/models/manifest.js:
|
|
(Manifest.fetch): Made it async.
|
|
(Manifest.async fetchRawResponse): Extract fetching raw manifest out so that 'maxRootReuseAgeInDays'
|
|
can be read without resetting other data models. Also added code to only fetch from API if requesting
|
|
/data/manifest.json returns 404.
|
|
(Manifest._didFetchManifest):
|
|
* server-tests/api-manifest-tests.js: Updated unit tests.
|
|
* unit-tests/build-request-tests.js: Updated unit tests and add new tests.
|
|
* unit-tests/manifest-test.js: Added unit tests.
|
|
|
|
2020-11-20 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
'run-analysis' script should schedule retries for A/B tests even after chart analysis failure.
|
|
https://bugs.webkit.org/show_bug.cgi?id=219116
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Anlyzing charts and schedule retries for A/B tests on run-analysis script are independent task.
|
|
It should not skip scheduling retries even when chart analysis part fails.
|
|
|
|
* tools/run-analysis.js:
|
|
(async analysisLoop): Change the logic so that chart analysis failure will not stop scheduling retries.
|
|
Fix a typo for 'notificationRemoteAPI'.
|
|
|
|
2020-11-18 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix a bug that platform groups cannot be updated on 'admin/platform'.
|
|
https://bugs.webkit.org/show_bug.cgi?id=219118
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Admins should be able to update platform group on 'admin/platform'.
|
|
Update the assertion on BuildbotTriggerable._pullBuildbotOnAllSyncers so that when there is no
|
|
corresponding entry in buildRequestByGroup, the test group for the request should be finished.
|
|
|
|
* public/admin/platforms.php:
|
|
* tools/js/buildbot-triggerable.js: Updated the assert statement.
|
|
(BuildbotTriggerable.prototype._pullBuildbotOnAllSyncers):
|
|
|
|
2020-11-16 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
BuildbotTriggerable should not process a completed build request from a completed test group.
|
|
https://bugs.webkit.org/show_bug.cgi?id=219016
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
BuildBotTriggerable._pullBuildbotOnAllSyncers relies on buildReqeustsByGroup to contain all build requests found by
|
|
BuildRequest.findById. However, since re-use root change is landed, above assumption is no longer valid. BuildRequest.all()
|
|
may includes build requests under same analysis task. Thus, `_pullBuildbotOnAllSyncers` will fail due to 'info' is undefined.
|
|
|
|
* server-tests/tools-buildbot-triggerable-tests.js: Added a unit test.
|
|
* tools/js/buildbot-triggerable.js:
|
|
(BuildbotTriggerable.prototype._pullBuildbotOnAllSyncers): Added logic to stop processing the build request if it's not
|
|
from incomplete build requests under a triggerable.
|
|
|
|
2020-10-30 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Performance dashboard should avoid building same configuration under one analysis task.
|
|
https://bugs.webkit.org/show_bug.cgi?id=218413
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Add logic in syncing script to reuse already built roots from same build request under current analysis task.
|
|
If there is another same build request scheduled/running, will defer scheduling current build request.
|
|
|
|
* public/admin/platforms.php: Fixed newer version of PHP warns on accessing invalid key in an array.
|
|
* public/admin/tests.php: Added a null check against $selected_parent.
|
|
* public/api/build-requests.php: Extended this API to allow reusing roots from existing build request.
|
|
* public/v3/models/build-request.js:
|
|
(BuildRequest.prototype.async findBuildRequestWithSameRoots): Find build type build request with same commit set
|
|
which can/will be reused under current analysis task.
|
|
* public/v3/models/commit-set.js:
|
|
(CommitSet.prototype.equalsIgnoringRoot): Added a helper function which checks commit set equality ignoring the root.
|
|
(CommitSet.prototype.equals): Use '_equalsOptionallyIgnoringRoot' as underlying implementation.
|
|
(CommitSet.prototype._equalsOptionallyIgnoringRoot): Implementation for both equals and equalsIngnoringRoot.
|
|
* server-tests/api-build-requests-tests.js: Added unit tests.
|
|
* server-tests/resources/mock-data.js: Added new mock data for new unit tests.
|
|
(MockData.addMockConfiguration):
|
|
(MockData.addMockData):
|
|
(MockData.set addMockBuildRequestsWithRoots):
|
|
(MockData.set addTwoMockTestGroupWithOwnedCommits):
|
|
(MockData.mockTestSyncConfigWithPatchAcceptingBuilder):
|
|
* server-tests/tools-buildbot-triggerable-tests.js: Added unit tests.
|
|
* tools/js/buildbot-triggerable.js:
|
|
(BuildbotTriggerable.prototype.async syncOnce):
|
|
(BuildbotTriggerable.prototype.async _scheduleRequest): A helper function to reuse the roots if there are built
|
|
roots available for same build type build request. If there is another build scheduled for same build request,
|
|
will defer scheduling the build request.
|
|
* unit-tests/build-request-tests.js: Add unit tests.
|
|
|
|
2020-10-27 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Refactor 'platforms' table to contain group information.
|
|
https://bugs.webkit.org/show_bug.cgi?id=193132
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Group 'platforms' so that bisecting can use commit sets from other platforms which are in the same platform group.
|
|
This will help to enhance the bisecting capability to higher granularity.
|
|
Added admin page to manage platform groups.
|
|
Updated platform admin page to allow update platform group.
|
|
SQL query to update existing database:
|
|
'''
|
|
BEGIN;
|
|
CREATE TABLE platform_groups (
|
|
platformgroup_id serial PRIMARY KEY,
|
|
platformgroup_name varchar(64) NOT NULL,
|
|
CONSTRAINT platform_group_name_must_be_unique UNIQUE (platformgroup_name));
|
|
|
|
ALTER TABLE platforms ADD COLUMN platform_group integer REFERENCES platform_groups DEFAULT NULL;
|
|
END;
|
|
'''
|
|
|
|
* init-database.sql: Added 'platform_group' column to 'platforms' table.
|
|
Added 'platform_groups' table.
|
|
* migrate-database.sql: Updated migration script accordingly.
|
|
* public/admin/platform-groups.php: Added a page to manage platform groups.
|
|
* public/admin/platforms.php: Added support to update platform group in admin page.
|
|
* public/include/admin-header.php: Added link to page that maneges platform groups.
|
|
* public/include/manifest-generator.php: Added 'platformGroup' in manifest.
|
|
* public/v3/index.html: Included 'platform-groups.js'.
|
|
* public/v3/models/analysis-task.js:
|
|
(AnalysisTask.prototype.async.commitSetsFromTestGroupsAndMeasurementSet):
|
|
Included measurement commit sets from other platforms in the same platform group.
|
|
(AnalysisTask.prototype._commitSetsInSamePlatformGroup):
|
|
Helper function to find measurement commit set for other platforms in same platform group.
|
|
* public/v3/models/manifest.js: Added step to build 'PlatformGroup' instances.
|
|
* public/v3/models/platform-group.js: Added 'PlatformGroup' to represent entries in 'platform_groups' table.
|
|
(PlatformGroup):
|
|
(PlatformGroup.prototype.addPlatform):
|
|
(PlatformGroup.prototype.platforms):
|
|
* public/v3/models/platform.js: Added itself to 'PlatformGroup' in constructor if it belongs
|
|
to a group.
|
|
(Platform.prototype.group): Return the platform group of current platform.
|
|
* public/v3/models/time-series.js: Added helper function to show view between a given time range.
|
|
(TimeSeries.prototype.viewBetweenTime):
|
|
* server-tests/api-manifest-tests.js: Updated unit test to also test platform group initialization.
|
|
* tools/js/database.js: Added prefix for 'platform_groups'.
|
|
* tools/js/v3-models.js: Added import for platform group.
|
|
|
|
2020-10-26 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix and update performance dashboard tests
|
|
https://bugs.webkit.org/show_bug.cgi?id=218222
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
* public/api/upload-root.php: Add a null check against empty array
|
|
when accessing invalid key which will show warning since php 7.4.
|
|
Per https://wiki.php.net/rfc/notice-for-non-valid-array-container.
|
|
* server-tests/tools-sync-buildbot-integration-tests.js:
|
|
Fixed a unit test that assumes build request IDs under one test group is
|
|
one after another. This assumption is wrong when 'StartServers' under
|
|
'mpm_prefork_module' is set more than one in apache config.
|
|
Fixed antoher incorrect unit test.
|
|
* unit-tests/analysis-results-notifier-tests.js:
|
|
Fixed unit tests which incorrectly used 'assert.throws' per
|
|
https://nodejs.org/docs/latest-v7.x/api/assert.html#assert_assert_throws_block_error_message.
|
|
|
|
2020-03-04 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
Test-freshness page table heaer misplaced
|
|
Some platform name is too long
|
|
https://bugs.webkit.org/show_bug.cgi?id=208617
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
* public/v3/pages/test-freshness-page.js:
|
|
(TestFreshnessPage.cssTemplate):
|
|
|
|
2019-12-15 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
Add power metric to perf dashboard
|
|
https://bugs.webkit.org/show_bug.cgi?id=205227
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
* public/v3/models/metric.js:
|
|
(Metric):
|
|
|
|
2019-12-05 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Custom analysis task page should allow schedule any triggerable accepted tests.
|
|
https://bugs.webkit.org/show_bug.cgi?id=204925
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Fix a bug that subtest will not show on custom analysis task page if both itself and parent test are
|
|
accepted by triggerable.
|
|
Order test list in alphabetical order.
|
|
|
|
* public/v3/components/custom-analysis-task-configurator.js:
|
|
(CustomAnalysisTaskConfigurator.prototype._renderTriggerableTests):
|
|
|
|
2019-10-28 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix a bug that cannot unhide a platform.
|
|
https://bugs.webkit.org/show_bug.cgi?id=203521
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Before this change, the there is no value in POST when 'hidden' checkbox is unchecked.
|
|
Then the update will fail because platform_hidden cannot be NULL.
|
|
|
|
* public/admin/platforms.php: Adapted 'update_boolean_field'.
|
|
* public/admin/triggerables.php: Adapted 'update_boolean_field'.
|
|
* public/include/admin-header.php: Added 'update_boolean_field' helper function to set explict
|
|
boolean value for update.
|
|
|
|
2019-10-25 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Add SSL support for peformance dashboard database connection.
|
|
https://bugs.webkit.org/show_bug.cgi?id=203426
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Performance dashboard should allow connecting Postgres database with SSL.
|
|
|
|
* public/include/db.php: Add SSL configuration to connection string if specified.
|
|
* tools/js/database.js: Add SSL configuration to connection string if specified.
|
|
(Database.prototype._prepareSSLConfig):
|
|
(Database.prototype.connect):
|
|
* unit-tests/checkconfig.js: Added unit tests for optional ssl fields.
|
|
|
|
2019-10-22 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Refactor "builds" table "build_number" row to "build_tag" to fit more generic use cases.
|
|
https://bugs.webkit.org/show_bug.cgi?id=203270
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Rename "build_number" to "build_tag" to fit more generic use cases.
|
|
Add support to be backward compatible to accept reports contain either
|
|
"buildNumber" or "buildTag".
|
|
|
|
* browser-tests/index.html:
|
|
* init-database.sql:
|
|
* migrate-database.sql: Updated migration sql for this change.
|
|
* public/admin/test-configurations.php:
|
|
* public/api/measurement-set.php:
|
|
* public/api/runs.php:
|
|
* public/api/upload-root.php: Added support for both "buildNumber" and "buildTag".
|
|
* public/include/report-processor.php: Added support for both "buildNumber" and "buildTag".
|
|
* public/v3/models/builder.js:
|
|
(Builder.prototype.urlForBuild):
|
|
(Builder):
|
|
(Build):
|
|
(Build.prototype.buildTag):
|
|
(Build.prototype.label):
|
|
(Build.prototype.url):
|
|
(Build.prototype.buildNumber): Deleted.
|
|
* public/v3/models/measurement-adaptor.js:
|
|
(MeasurementAdaptor):
|
|
(MeasurementAdaptor.prototype.applyTo.return.build):
|
|
* public/v3/pages/chart-pane-status-view.js:
|
|
* public/v3/pages/test-freshness-page.js:
|
|
(TestFreshnessPage.prototype._renderTooltip):
|
|
* server-tests/admin-platforms-tests.js:
|
|
(reportsForDifferentPlatforms):
|
|
* server-tests/admin-reprocess-report-tests.js:
|
|
* server-tests/api-commits-tests.js:
|
|
* server-tests/api-manifest-tests.js:
|
|
* server-tests/api-measurement-set-tests.js:
|
|
* server-tests/api-report-tests.js: Added unit tests for testing "buildNumber" and "buildTag".
|
|
(emptyReport):
|
|
(reportWitMismatchingCommitTime):
|
|
(reportWithOneSecondCommitTimeDifference):
|
|
(emptySlaveReport):
|
|
(makeReport):
|
|
(reportWithSameSubtestName):
|
|
* server-tests/api-upload-root-tests.js: Added unit tests for testing "buildNumber" and "buildTag".
|
|
* server-tests/privileged-api-add-build-requests-tests.js:
|
|
* server-tests/privileged-api-create-analysis-task-tests.js:
|
|
* server-tests/privileged-api-create-test-group-tests.js:
|
|
(createAnalysisTask):
|
|
* server-tests/privileged-api-upate-run-status.js:
|
|
* server-tests/privileged-api-update-test-group-tests.js:
|
|
(async.createAnalysisTask):
|
|
* server-tests/resources/mock-data.js:
|
|
(MockData.addMockConfiguration):
|
|
(MockData.sampleBuildData):
|
|
(MockData.finishedBuildData):
|
|
* server-tests/tools-sync-buildbot-integration-tests.js:
|
|
* tools/js/buildbot-syncer.js:
|
|
(BuildbotBuildEntry.prototype.initialize):
|
|
(BuildbotBuildEntry.prototype.buildTag):
|
|
(BuildbotBuildEntry.prototype.url):
|
|
(BuildbotSyncer.prototype.urlForBuildTag):
|
|
(BuildbotBuildEntry.prototype.buildNumber): Deleted.
|
|
(BuildbotSyncer.prototype.urlForBuildNumber): Deleted.
|
|
* unit-tests/analysis-task-tests.js:
|
|
(measurementCluster):
|
|
* unit-tests/buildbot-syncer-tests.js:
|
|
* unit-tests/measurement-adaptor-tests.js:
|
|
* unit-tests/measurement-set-analyzer-tests.js:
|
|
* unit-tests/measurement-set-tests.js:
|
|
* unit-tests/resources/mock-v3-models.js:
|
|
|
|
2019-10-11 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Improve test freshness page interaction experience.
|
|
https://bugs.webkit.org/show_bug.cgi?id=202684
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Change test freshness page show tooltip on click instead of popuping on mouse hover.
|
|
And clicking anywhere in 'page-with-heading' section except the tooltip can dismiss tooltip.
|
|
Add keyboard support to move focus around including 'Tab' key support.
|
|
Add support to use 'Enter' key to show or dismiss tooltip.
|
|
Add support to use 'Escape' key to dismiss tooltip.
|
|
|
|
* public/shared/common-component-base.js: Added support for link to specify 'tabindex'.
|
|
(CommonComponentBase.prototype.createLink):
|
|
(CommonComponentBase.createLink):
|
|
(CommonComponentBase):
|
|
* public/v3/components/base.js: Added support for customizing whether or not prevent default and stop propagation
|
|
while creating event handler.
|
|
(ComponentBase.prototype.createEventHandler):
|
|
(ComponentBase.createEventHandler):
|
|
(ComponentBase):
|
|
* public/v3/components/freshness-indicator.js:
|
|
(FreshnessIndicator): Removed 'url' property and removed customization for mouse event.
|
|
(FreshnessIndicator.prototype.update):
|
|
(FreshnessIndicator.prototype.didConstructShadowTree): Deleted.
|
|
* public/v3/pages/test-freshness-page.js:
|
|
(TestFreshnessPage): Changed to show tooltip on click and added key board event.
|
|
(TestFreshnessPage.prototype.didConstructShadowTree): Added key event support.
|
|
(TestFreshnessPage.prototype._findClosestIndicatorAnchorForCoordinate):
|
|
(TestFreshnessPage.prototype.render):
|
|
(TestFreshnessPage.prototype._renderTooltip):
|
|
(TestFreshnessPage.prototype._constructTableCell): Added tabIndex for each cell that contains freshness indicator.
|
|
(TestFreshnessPage.prototype._configureAnchorForIndicator):
|
|
(TestFreshnessPage.prototype._clearIndicatorState): Changed the color of links in tooltip to a more readable color.
|
|
Added styles when anchor for status cell and links on tooltip are focused.
|
|
(TestFreshnessPage.cssTemplate):
|
|
|
|
2019-10-04 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
[perf dashboard] Test fressness popover sometimes point to wrong place
|
|
https://bugs.webkit.org/show_bug.cgi?id=202606
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
* public/v3/pages/test-freshness-page.js: Use a invisable tooltip anchor to cacluate tooltip position. It also helps to get rid of caculation for determine the tooltip table position.
|
|
(TestFreshnessPage.prototype._renderTooltip):
|
|
(TestFreshnessPage.cssTemplate):
|
|
|
|
2019-10-04 Zhifei Fang <zhifei_fang@apple.com>
|
|
|
|
[perf dashboard] Make test fressness head and indicator perfect centered
|
|
https://bugs.webkit.org/show_bug.cgi?id=202602
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
* public/v3/components/freshness-indicator.js: make indicator margin auto, it will then horizontally centered in the container
|
|
(FreshnessIndicator.cssTemplate):
|
|
(FreshnessIndicator):
|
|
* public/v3/pages/test-freshness-page.js: make the table head transform based on the center left
|
|
(TestFreshnessPage.cssTemplate):
|
|
|
|
2019-10-02 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix a bug that warning icon causes infinite rendering when it has warning message.
|
|
https://bugs.webkit.org/show_bug.cgi?id=202502
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Fix the problem that a warning icon with a warning message will result in infinite rendering.
|
|
|
|
* public/v3/components/button-base.js:
|
|
(ButtonBase):
|
|
(ButtonBase.prototype.setButtonTitle): Fixed a typo in function name and moved the title update to
|
|
render function.
|
|
(ButtonBase.prototype.render): Added the logic to render title.
|
|
* public/v3/components/test-group-revision-table.js: Set warning message by invoking setButtonTitle.
|
|
* public/v3/components/warning-icon.js: Removed the warning messge related code and leave the responsibility
|
|
to ButtonBase.
|
|
(WarningIcon):
|
|
(WarningIcon.prototype.render):
|
|
|
|
2019-07-30 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Provide build request status description information on dashboard.
|
|
https://bugs.webkit.org/show_bug.cgi?id=199810
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Add build request status description to show detailed information for a build and show it in dashboard.
|
|
Update SQL for existing instance:
|
|
ALTER TABLE build_requests ADD COLUMN IF NOT EXISTS request_status_description varchar(1024) DEFAULT NULL;
|
|
|
|
* ReadMe.md: Updated instructions for initializing a database to include running 'migrate-database.sql'.
|
|
* init-database.sql: Added request_status_description column.
|
|
* migrate-database.sql: A file stores migration SQL for existing instance.
|
|
* public/api/build-requests.php: Added support for updating request_status_description.
|
|
* public/include/build-requests-fetcher.php: Exposed `statusDescription` to API.
|
|
* public/v3/components/test-group-revision-table.js: Added UI for showing build request status detail.
|
|
(TestGroupRevisionTable.prototype._renderTable):
|
|
(TestGroupRevisionTable.prototype._buildDescriptionCell):
|
|
(TestGroupRevisionTable.cssTemplate):
|
|
* public/v3/components/warning-icon.js: Extended warning icon to be able to customize information on hover.
|
|
(WarningIcon):
|
|
(WarningIcon.prototype.render):
|
|
* public/v3/components/button-base.js: Added a instance method to set button title.
|
|
(ButtonBase.prototype.setButtonTitle):
|
|
* public/v3/models/build-request.js: Added 'statusDescription' field.
|
|
(BuildRequest):
|
|
(BuildRequest.prototype.updateSingleton):
|
|
(BuildRequest.prototype.statusDescription):
|
|
* server-tests/api-build-requests-tests.js: Fixed unit tests.
|
|
* server-tests/resources/mock-data.js:
|
|
(MockData.set mockTestSyncConfigWithSingleBuilder): Added 'status_description' in buildbot mock data.
|
|
(MockData.sampleBuildData):
|
|
* server-tests/resources/test-server.js:
|
|
(TestServer.prototype.initDatabase): Added code to execute 'migrate-database.sql' on initialization.
|
|
* server-tests/tools-sync-buildbot-integration-tests.js: Added unit tests.
|
|
* tools/js/buildbot-syncer.js: Added 'statusDescription' field to 'BuildbotBuildEntry'.
|
|
(BuildbotBuildEntry.prototype.initialize):
|
|
(BuildbotBuildEntry.prototype.statusDescription):
|
|
* tools/js/buildbot-triggerable.js:
|
|
(BuildbotTriggerable.prototype._pullBuildbotOnAllSyncers):
|
|
* unit-tests/buildbot-syncer-tests.js: Added test code for BuildbotBuildEntry.statusDescription.
|
|
|
|
2019-07-26 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Dashboard should defaults to first dashboard page when summary page is not available.
|
|
https://bugs.webkit.org/show_bug.cgi?id=200180
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Fix a bug that charts page will become the default when there is no summary page but there
|
|
is at least one dashboard page.
|
|
|
|
* public/v3/main.js: Charts page and analysis category page should not be considered as summay pages.
|
|
(main):
|
|
|
|
2019-07-30 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Analysis task page should show build request author and creation time.
|
|
https://bugs.webkit.org/show_bug.cgi?id=200274
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Author and creation time of a build request should be visible in analysis task page.
|
|
|
|
* public/v3/pages/analysis-task-page.js: Added UI to show build request creation time and author.
|
|
(AnalysisTaskTestGroupPane.prototype._renderCurrentTestGroup):
|
|
|
|
2019-07-29 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Should not render latest build information if there is no data points for a config.
|
|
https://bugs.webkit.org/show_bug.cgi?id=200250
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Fix a bug test freshness page that tooltip cannot be rendered when a cell does not have
|
|
a data point.
|
|
|
|
* public/v3/pages/test-freshness-page.js: Added a null check on commit set before rendering
|
|
latest build informaiton.
|
|
(TestFreshnessPage.prototype._renderTooltip):
|
|
|
|
2019-07-25 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix a bug that cannot update builder password on builders administrative page.
|
|
https://bugs.webkit.org/show_bug.cgi?id=200154
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
'builders' administrative page should be able to update password for a builder.
|
|
|
|
* public/admin/builders.php: Should be able to update builder password.
|
|
|
|
2019-07-23 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Use 12 digits to show a git commit.
|
|
https://bugs.webkit.org/show_bug.cgi?id=200067
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Use 12 digits to show a git commit to reasonably descrease commit prefix collision probability
|
|
for repository with large amount of commits.
|
|
|
|
* public/v3/models/commit-log.js: Increase digits from 8 to 12 for git SHA.
|
|
(CommitLog.prototype.label):
|
|
(CommitLog.prototype.diff):
|
|
* unit-tests/commit-log-tests.js: Updated unit tests.
|
|
* unit-tests/commit-set-tests.js: Updated unit tests.
|
|
|
|
2019-07-03 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Test freshness page should expose revision information for latest build on tooltip.
|
|
https://bugs.webkit.org/show_bug.cgi?id=199483
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Added latest build revision information on test freshness page tooltip.
|
|
|
|
* public/v3/pages/test-freshness-page.js: Add build revision information on tooltip.
|
|
(TestFreshnessPage.prototype.didConstructShadowTree):
|
|
(TestFreshnessPage.prototype._fetchTestResults):
|
|
(TestFreshnessPage.prototype.render):
|
|
(TestFreshnessPage.prototype._renderTooltip):
|
|
(TestFreshnessPage.cssTemplate):
|
|
|
|
2019-06-26 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
commit api should not return 'AmbiguousRevisionPrefix' if there is an exact revision match
|
|
https://bugs.webkit.org/show_bug.cgi?id=199227
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
When prefix match is specified, api should check whether there is an exact match when multiple commits
|
|
match the prefix.
|
|
|
|
* public/include/commit-log-fetcher.php: Added the logic to check if there is an exact match when multiple matches are found.
|
|
* server-tests/api-commits-tests.js: Added an unit test.
|
|
|
|
2019-06-24 Dean Johnson <dean_johnson@apple.com>
|
|
|
|
[perf.webkit.org] Update summary page calculations to use mean instead of median
|
|
https://bugs.webkit.org/show_bug.cgi?id=199050
|
|
|
|
Reviewed by Dewei Zhu.
|
|
|
|
* public/v3/pages/summary-page.js:
|
|
(SummaryPageConfigurationGroup): Updated 'median' references to 'mean'.
|
|
(SummaryPageConfigurationGroup.set _startAndEndPointForTimeRange): Factored out logic for finding data
|
|
points in a timeSeries, within a specified timeRange.
|
|
(SummaryPageConfigurationGroup.set _meanForTimeRange): New. Returns the mean of a timeSeries across a
|
|
given timeRange.
|
|
|
|
2019-06-20 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix a bug that 'test_metrics' and 'tests' tables are not joined correctly in CommitLogFetcher.fetch_latest_for_platform
|
|
https://bugs.webkit.org/show_bug.cgi?id=199062
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
'test_metrics' and 'tests' should be joined based on 'metric_test' and 'test_id'.
|
|
|
|
* public/include/commit-log-fetcher.php: Fix the typo in the query.
|
|
* server-tests/api-commits-tests.js: Added a unit test for this change.
|
|
|
|
2019-06-17 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Customizable test group form should allow user to supply a revision prefix of a commit and revision starts with 'r'.
|
|
https://bugs.webkit.org/show_bug.cgi?id=198940
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Customizable test group form should adapt prefix matching when fetching for a commit.
|
|
|
|
* browser-tests/customizable-test-group-form-tests.js: Updated and added unit tests.
|
|
* public/v3/components/customizable-test-group-form.js: Removed loggings those a unintentionally committed.
|
|
* public/v3/models/commit-set.js: Adapted prefix matching API when fetching a commit.
|
|
(IntermediateCommitSet.prototype._fetchCommitLogAndOwnedCommits):
|
|
* unit-tests/commit-set-tests.js: Updated unit tests accordingly.
|
|
|
|
2019-06-13 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Custom analysis task configurator should allow supplying commit prefix and revision starts 'r'.
|
|
https://bugs.webkit.org/show_bug.cgi?id=198847
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Custom analysis task configurator should not require full SHA to start an A/B test.
|
|
Custom analysis task configurator should accept svn revision starts with 'r'.
|
|
|
|
* browser-tests/custom-analysis-task-configurator-tests.js: Added a unit test for this change.
|
|
* public/api/commits.php: Extend this API to allow prefix matching when fethcing a single commit.
|
|
* public/include/commit-log-fetcher.php: Added a function to fetch a commit with prefix.
|
|
* public/v3/components/custom-analysis-task-configurator.js: Add UI support for accepting partial revision.
|
|
(CustomAnalysisTaskConfigurator.prototype._computeCommitSet):
|
|
(CustomAnalysisTaskConfigurator.prototype.async._resolveRevision):
|
|
(CustomAnalysisTaskConfigurator.prototype._buildTestabilityList):
|
|
* public/v3/models/commit-log.js:
|
|
(CommitLog.async.fetchForSingleRevision): Added third argument to specify prefix matching which defaults to false.
|
|
* server-tests/api-commits-tests.js: Added unit tests.
|
|
* unit-tests/commit-log-tests.js: Added a unit test.
|
|
|
|
2019-05-15 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Perf dashboard erroneously rejects a build request to build owned components when there are no patches.
|
|
https://bugs.webkit.org/show_bug.cgi?id=197928
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Fix a bug that build type build request that only builds owned components failed to pass sanity check when there
|
|
is no repository accepts patch in triggerable repository group.
|
|
Add a sanity check to throw an error when build request type is build but there is no repository group template.
|
|
|
|
* tools/js/buildbot-syncer.js:
|
|
(BuildbotSyncer.prototype._propertiesForBuildRequest): Changed sanity check the always requires repository accepts patch when there is a build to make it also works for build request only builds owned components.
|
|
(BuildbotSyncer._parseRepositoryGroup): Added check for repository group templates not null when build requiest type is build.
|
|
* unit-tests/buildbot-syncer-tests.js: Added unit tests for this change.
|
|
* unit-tests/resources/mock-v3-models.js: Added mock date for unit tests.
|
|
|
|
2019-05-14 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Pruning old file logic should not stop after removing 10 files if there are more files to be removed.
|
|
https://bugs.webkit.org/show_bug.cgi?id=197870
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Pruning old file logic should keep removing removable files to make enough space for a new file upload.
|
|
It should only attempt to remve the files that have not been removed.
|
|
|
|
* public/include/uploaded-file-helpers.php: Modified 'prune_old_files' to allow to remove more than 10 files.
|
|
Fixed a bug that a removed file keep getting removed but never free up new space.
|
|
* server-tests/privileged-api-upload-file-tests.js:
|
|
(makeRandomAlnumStringForLength): Helper function to generate random content for a given length.
|
|
* server-tests/resources/test-server.js: Update total file size limit for this change.
|
|
(TestServer.prototype.testConfig):
|
|
|
|
2019-03-25 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Primary cluster of measurement set should always contain latest point.
|
|
https://bugs.webkit.org/show_bug.cgi?id=196243
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Fix a bug in measurement-set api that primary cluster may not contain latest data point as
|
|
'carry_over' row may not be updated.
|
|
|
|
* public/api/measurement-set.php: Should always keep 'carry_over' data points up to date.
|
|
* server-tests/api-measurement-set-tests.js: Added an unit test for this change.
|
|
Fixed a typo.
|
|
|
|
2019-03-21 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
'custom-configuration-test-group-form' should update test name when selected test or platform changes.
|
|
https://bugs.webkit.org/show_bug.cgi?id=196114
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
r240104 fixes commit sets unnecessarily get updated even there is no change.
|
|
However, this made changing test or platform no longer triggers 'commitSetChange' action.
|
|
Test name should change not only when 'commitSet' gets change, but also platform or test changes.
|
|
Renaming the action name from 'commitSetChange' to a more accurate description 'testConfigChange'.
|
|
Dispatch 'testConfigChange' when platform or test changes.
|
|
|
|
* browser-tests/custom-analysis-task-configurator-tests.js: Changed action name to 'commitSetChange'.
|
|
* public/v3/components/custom-analysis-task-configurator.js:
|
|
(CustomAnalysisTaskConfigurator.prototype._didUpdateSelectedPlatforms): Should dispatch 'commitSetChange' action.
|
|
(CustomAnalysisTaskConfigurator.prototype._updateCommitSetMap): Changed action name to 'commitSetChange'.
|
|
* public/v3/components/custom-configuration-test-group-form.js: Added a unit test for this change.
|
|
(CustomConfigurationTestGroupForm.prototype.didConstructShadowTree):
|
|
|
|
2019-03-18 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix a bug from r226303 that latest build time is not correctly calculated.
|
|
https://bugs.webkit.org/show_bug.cgi?id=195912
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Time series is ordered by revision time which does not grantee the build time is
|
|
monotonically increasing.
|
|
|
|
* public/v3/pages/test-freshness-page.js: Use the latest build time instead of the build time of
|
|
last point on the chart.
|
|
|
|
2019-03-13 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Test freshness page should improve the ability to correlating issues from same builder.
|
|
https://bugs.webkit.org/show_bug.cgi?id=195242
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Added the ability to highlight indicators with same builder when mouse is hovering over one indicator.
|
|
This is a very useful visualization for correlating issues specific to a builder.
|
|
Added tooltip with latest build link when hovering over an indicator.
|
|
|
|
* public/v3/components/freshness-indicator.js:
|
|
(FreshnessIndicator): Removed 'summary' field as it's no longer needed.
|
|
Added 'highlighted' field.
|
|
(FreshnessIndicator.prototype.update): Added 'highlighted' argument.
|
|
(FreshnessIndicator.prototype.didConstructShadowTree): Make indicator to dispatch mouse enter and leave
|
|
messages so that UI can highlight corresponding cells.
|
|
(FreshnessIndicator.prototype.render):
|
|
(FreshnessIndicator.cssTemplate):
|
|
* public/v3/pages/test-freshness-page.js: Added tooltip to show latest build time and build link.
|
|
Added logic to manually compute table body height.
|
|
(TestFreshnessPage):
|
|
(TestFreshnessPage.prototype.didConstructShadowTree):
|
|
(TestFreshnessPage.prototype._fetchTestResults):
|
|
(TestFreshnessPage.prototype.render):
|
|
(TestFreshnessPage.prototype._renderTooltip):
|
|
(TestFreshnessPage.prototype._constructTableCell):
|
|
(TestFreshnessPage.cssTemplate):
|
|
|
|
2019-02-26 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
The table head of test freshness page should not scroll with the page.
|
|
https://bugs.webkit.org/show_bug.cgi?id=195092
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Fix the location of the freshness table head to make it easier to corelate cell with test.
|
|
|
|
* public/v3/pages/test-freshness-page.js: Changed some style rules to make the table head fixed.
|
|
(TestFreshnessPage.prototype._renderTable):
|
|
(TestFreshnessPage.cssTemplate):
|
|
|
|
2019-01-17 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Analyzing a chart that does not exist should not halt whole run-analysis script.
|
|
https://bugs.webkit.org/show_bug.cgi?id=193563
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Halting whole run-analysis script while there is any invalid chart specified in Manifest makes the script fragile.
|
|
Run-analysis is also responsible for adding retry and sending notification which should not be block by this error.
|
|
Skipping analyzing the corresponding configuration seems reasonable.
|
|
|
|
* public/v3/models/measurement-set.js:
|
|
(MeasurementSet.prototype._ensureClusterPromise): Only add callback when callback is specified.
|
|
This will help to fix 'UnhandledPromiseRejectionWarning' while running the test.
|
|
* tools/js/measurement-set-analyzer.js:
|
|
(MeasurementSetAnalyzer.prototype.async._analyzeMeasurementSet): Catch the exception while failing to fetch a measurement set and skip the analysis for this config.
|
|
* unit-tests/measurement-set-analyzer-tests.js: Added unit tests for this.
|
|
|
|
2019-01-17 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Updating commit in OSBuildFetcher should respect revision range in config.
|
|
https://bugs.webkit.org/show_bug.cgi?id=193558
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
OSBuildFetcher._fetchAvailableBuilds should filter out commits those are not in
|
|
revision range specified by cofnig.
|
|
|
|
* server-tests/tools-os-build-fetcher-tests.js: Added a unit test for this change.
|
|
* tools/js/os-build-fetcher.js:
|
|
(prototype.async._fetchAvailableBuilds): Filter out commits from update list if commit
|
|
revision is out of range.
|
|
|
|
2018-12-31 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Test group results notification should not say a build request to build had failed even when it had successfully completed.
|
|
https://bugs.webkit.org/show_bug.cgi?id=193064
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Should show 'Build completed' or 'Build failed' for build type build requests.
|
|
|
|
* browser-tests/test-group-result-page-tests.js: Added a unit test to guard this bug.
|
|
* tools/js/test-group-result-page.js: Show 'Build completed' or 'Build failed' for build type build requests.
|
|
|
|
2018-12-21 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Add UI in analysis task page to show commit testability information.
|
|
https://bugs.webkit.org/show_bug.cgi?id=192972
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Add UI in custom analysis task configuration and customizable test group form to show testability information.
|
|
Fix a bug in 'CustomAnalysisTaskConfigurator._updateCommitSetMap' that 'currentComparison' is incorrectly set.
|
|
SQL to update existing database:
|
|
ALTER TABLE commits ADD COLUMN IF NOT EXISTS commit_testability varchar(128) DEFAULT NULL;
|
|
|
|
* browser-tests/custom-analysis-task-configurator-tests.js: Added a unit test for the bug in
|
|
'CustomAnalysisTaskConfigurator._updateCommitSetMap'.
|
|
Added a unit test to make sure 'CustomAnalysisTaskConfigurator' still works when commit fetching never returns.
|
|
* browser-tests/index.html: Imported ''custom-analysis-task-configurator-tests.js'.
|
|
* init-database.sql: Increase 'commit_testability' field length from 64 characters to 128.
|
|
* public/v3/components/custom-analysis-task-configurator.js: Added UI to show testability information.
|
|
(CustomAnalysisTaskConfigurator):
|
|
(CustomAnalysisTaskConfigurator.prototype._didUpdateSelectedPlatforms): Should reset related field for corresponding
|
|
repositories that user does not specify revision.
|
|
(CustomAnalysisTaskConfigurator.prototype._updateMapFromSpecifiedRevisionsForConfiguration): A helper function
|
|
to update '_specifiedCommits' and '_invalidRevisionsByConfiguration' per '_specifiedRevisions'.
|
|
(CustomAnalysisTaskConfigurator.prototype.render):
|
|
(CustomAnalysisTaskConfigurator.prototype._updateCommitSetMap): Fixed a bug that 'currentComparison' is incorrectly set.
|
|
(CustomAnalysisTaskConfigurator.prototype._computeCommitSet):
|
|
(CustomAnalysisTaskConfigurator.prototype.async._fetchCommitsForConfiguration):
|
|
(CustomAnalysisTaskConfigurator.prototype.async._resolveRevision):
|
|
(CustomAnalysisTaskConfigurator.prototype._buildRevisionTable):
|
|
(CustomAnalysisTaskConfigurator.prototype._buildTestabilityList):
|
|
(CustomAnalysisTaskConfigurator.prototype._selectRepositoryGroup):
|
|
(CustomAnalysisTaskConfigurator.prototype._buildRevisionInput):
|
|
(CustomAnalysisTaskConfigurator.cssTemplate):
|
|
* public/v3/components/customizable-test-group-form.js: Added UI to show testability information.
|
|
(CustomizableTestGroupForm.prototype._renderCustomRevisionTable):
|
|
(CustomizableTestGroupForm.prototype._constructTestabilityRows.):
|
|
(CustomizableTestGroupForm.prototype._constructTestabilityRows):
|
|
(CustomizableTestGroupForm.prototype._constructRevisionRadioButtons):
|
|
Changing either revision editor or radio button should trigger a re-render as testability
|
|
information for updated revision may change.
|
|
(CustomizableTestGroupForm.cssTemplate):
|
|
* public/v3/models/commit-set.js:
|
|
(IntermediateCommitSet.prototype.commitsWithTestability): Renamed from 'commitsWithTestabilityWarnings'.
|
|
(IntermediateCommitSet.prototype.commitsWithTestabilityWarnings): Deleted.
|
|
|
|
2018-12-14 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Extend commits table to contain testability information.
|
|
https://bugs.webkit.org/show_bug.cgi?id=191557
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Added the ability to store testability message in commits table.
|
|
Refactored '/api/report-commits' to support updating commit only.
|
|
Updated os version syncing script to be able to update testability information.
|
|
|
|
* init-database.sql: Added 'commit_testability' field to 'commits' table.
|
|
* public/api/report-commits.php: Refactor this api to allow only update existing commits.
|
|
* public/include/commit-log-fetcher.php: Expose testability warning information in this API.
|
|
* public/include/commit-updater.php: Added 'CommitUpdater' to manage commit insert and update.
|
|
* public/v3/models/commit-log.js: CommitLog object should expose testability warning information.
|
|
(CommitLog.prototype.updateSingleton):
|
|
(CommitLog.prototype.testability):
|
|
* public/v3/models/commit-set.js: Added 'commitsWithTestability' and 'commits' to CommitSet and
|
|
IntermediateCommitSet instances.
|
|
(CommitSet.prototype.commitsWithTestability):
|
|
(CommitSet.prototype.commits):
|
|
(IntermediateCommitSet.prototype.commitsWithTestability):
|
|
(IntermediateCommitSet.prototype.commits):
|
|
* server-tests/api-report-commits-tests.js: Added unit tests for '/api/report-commits' when `insert=false`.
|
|
* server-tests/tools-os-build-fetcher-tests.js: Added and updated unit tests.
|
|
* tools/js/os-build-fetcher.js: Added the ability to update commit testability warnings.
|
|
(async.fetchReportAndUpdateCommits):
|
|
(prototype.async.fetchReportAndUpdateBuilds):
|
|
(prototype.async._fetchAvailableBuilds):
|
|
(prototype.async._commitsForAvailableBuilds):
|
|
(prototype._commitsWithinRange):
|
|
(prototype.async._reportCommits):
|
|
(fetchAndReportAllInOrder): Deleted.
|
|
(prototype.fetchAndReportNewBuilds): Deleted.
|
|
(prototype._fetchAvailableBuilds): Deleted.
|
|
(prototype._commitsForAvailableBuilds): Deleted.
|
|
(prototype._submitCommits): Deleted.
|
|
* tools/sync-os-versions.js:
|
|
* unit-tests/commit-log-tests.js: Added a unit test for 'testability'.
|
|
* unit-tests/commit-set-tests.js: Added unit tests for 'commitsWithTestability'.
|
|
|
|
2018-11-16 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
Manifest file can contain a test metric which references a non-existent test
|
|
https://bugs.webkit.org/show_bug.cgi?id=191796
|
|
|
|
Reviewed by Dewei Zhu.
|
|
|
|
The bug was caused by a race condition between the manifest file fetching the list of tests and test metrics
|
|
and new tests and test metrics being added. Because we would fetch tests before test metrics, it was possible
|
|
for new test metrics which references a test not included in the fetched tests to be present in the test metrics.
|
|
|
|
Fixed the bug by changing the order of the queries so that test metrics are fetched before tests. This guarantees
|
|
that any test referenced by a test metric always exists and thefore included in the manifest file.
|
|
|
|
Unfortunately no new tests beucase this involes a race condition.
|
|
|
|
* public/include/manifest-generator.php:
|
|
|
|
2018-11-13 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Add cache for CommitLog objects to avoid refetching same commit.
|
|
https://bugs.webkit.org/show_bug.cgi?id=191621
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Added a cache for fully fetched commit log objects to avoid refetching.
|
|
|
|
* public/v3/models/commit-log.js:
|
|
(CommitLog): Added assertion for id.
|
|
Removed unused 'remoteId' as it has been removed since r198479.
|
|
(CommitLog.async.fetchBetweenRevisions): Turned it into async function.
|
|
(CommitLog.async.fetchForSingleRevision): Added the logic to check cache before fetching.
|
|
(CommitLog._constructFromRawData): Added logic to add entries to cache.
|
|
* public/v3/models/repository.js: Added the ability to track fetched commit for certain repository.
|
|
(Repository.commitForRevision): Fixed measurement set not passing commit id while constructing a
|
|
commit log object.
|
|
(Repository.setCommitForRevision): Sets commit for a given revision.
|
|
* public/v3/models/commit-set.js: Fixed unit tests.
|
|
* unit-tests/commit-log-tests.js: Added unit tests for this change.
|
|
Fixed existing tests.
|
|
* unit-tests/commit-set-range-bisector-tests.js: Fixed unit tests.
|
|
* unit-tests/commit-set-tests.js: Fixed unit tests.
|
|
|
|
2018-11-08 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
commit time returned by '/api/measurement-set' should match the one returned by '/api/commits'.
|
|
https://bugs.webkit.org/show_bug.cgi?id=191457
|
|
|
|
Reviewed by Dean Jackson and Ryosuke Niwa.
|
|
|
|
Commit time returned by '/api/measurement-set' sometimes is calculated by 'epoch from ..'.
|
|
This function may return a floating number with 5 or 6 decimal digits due to double precision limitations.
|
|
However, some commits may be reported with 6 decimal decimal.
|
|
So the commit time for those commits will sometime be rounded to 5 decimal digits.
|
|
In order to avoid front end assertion failure in CommitLog, Database::to_js_time need to round to 5 digits.
|
|
|
|
* public/include/db.php: Change the behavior to match that of postgres.
|
|
Added logic to avoid losing precision in php.
|
|
* server-tests/api-measurement-set-tests.js: Added unit tests for this bug.
|
|
(queryPlatformAndMetric): Fix a bug that arguments are not used at all.
|
|
|
|
2018-11-07 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
"/api/report" does not check commit time correctly.
|
|
https://bugs.webkit.org/show_bug.cgi?id=191351
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Test result report API does not convert formated time string to timestamp correctly
|
|
which result in not checking commit time correctly.
|
|
|
|
* public/include/report-processor.php: Use 'strtotime' instead of 'floatval'.
|
|
Accepts the time delta within 1 seconds.
|
|
* server-tests/api-report-tests.js: Added unit tests.
|
|
(reportWitMismatchingCommitTime):
|
|
(reportWithOneSecondCommitTimeDifference):
|
|
|
|
2018-11-06 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Custom test group form should use commit set map before customization as the behavior of radio buttons.
|
|
https://bugs.webkit.org/show_bug.cgi?id=191347
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
The radio button behavior should always set the same revision while editing the revision input.
|
|
That means we should not use the intermediate commit set map but use the commit set map before
|
|
"Customize" link is clicked.
|
|
|
|
* browser-tests/customizable-test-group-form-tests.js: Added a unit test for this bug.
|
|
* public/v3/components/customizable-test-group-form.js: Pass uncustomized commit set so that the radio button
|
|
behavoir preserves.
|
|
(CustomizableTestGroupForm):
|
|
(CustomizableTestGroupForm.prototype.setCommitSetMap):
|
|
(CustomizableTestGroupForm.prototype.didConstructShadowTree):
|
|
(CustomizableTestGroupForm.prototype.render):
|
|
(CustomizableTestGroupForm.prototype._renderCustomRevisionTable):
|
|
(CustomizableTestGroupForm.prototype._constructTableBodyList):
|
|
(CustomizableTestGroupForm.prototype._constructTableRowForCommitsWithoutOwner):
|
|
(CustomizableTestGroupForm.prototype._constructTableRowForCommitsWithOwner):
|
|
(CustomizableTestGroupForm.prototype._constructRevisionRadioButtons):
|
|
|
|
2018-11-06 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Customizable test group form should not reset manually edited commit value sometimes.
|
|
https://bugs.webkit.org/show_bug.cgi?id=190863
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
After changing the radio button and manually editing the commit value, commit value should not be reset
|
|
while changing the name of the test group.
|
|
Add the logic to prompt warning when manually typed commit does not exist.
|
|
|
|
* browser-tests/customizable-test-group-form-tests.js: Added a unit test for this bug.
|
|
* browser-tests/index.html:
|
|
* public/v3/components/customizable-test-group-form.js: Should always update commit set as long as
|
|
the repository of that row does not have a owner repository.
|
|
(CustomizableTestGroupForm.prototype._constructTableRowForCommitsWithoutOwner):
|
|
(CustomizableTestGroupForm.prototype._constructTableRowForCommitsWithOwner):
|
|
(CustomizableTestGroupForm.prototype._constructRevisionRadioButtons):
|
|
|
|
2018-10-16 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Unreviewed, rolling out r236996.
|
|
|
|
Temporarily rollout to fix a manifest generation bug.
|
|
"lastModified" field for certain platform & metric configurations may be missing.
|
|
|
|
Reverted changeset:
|
|
|
|
"ManifestGenerator shouldn't need more than 1GB of memory or
|
|
run for 30 seconds"
|
|
https://bugs.webkit.org/show_bug.cgi?id=190393
|
|
https://trac.webkit.org/changeset/236996
|
|
|
|
2018-10-12 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
Perf dashboard: add a test for aggregating subtests without a matching metric in /api/report
|
|
https://bugs.webkit.org/show_bug.cgi?id=190544
|
|
|
|
Rubber-stamped by Keith Miller and unofficially reviewed by Dewei Zhu.
|
|
|
|
Added tests for reporting results to /api/report where a test with aggregated metrics has a subtest
|
|
without a matching metric type. The aggregation should simply skip such a subtest instead of returning
|
|
an error or aggregating with a mismatching metric type.
|
|
|
|
* server-tests/api-report-tests.js:
|
|
(.makeReport): Extracted out of a test case.
|
|
|
|
2018-10-11 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
Build fix after r236956. Use array_get to avoid warnings.
|
|
|
|
* public/include/report-processor.php:
|
|
|
|
2018-10-09 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Performance dashboard should show added iterations due failed build requests.
|
|
https://bugs.webkit.org/show_bug.cgi?id=190419
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Added UI to show added build requests due to previous failed build requests.
|
|
Updated the retry/bisect button to default to initial repetition count when test group is created.
|
|
|
|
* public/v3/pages/analysis-task-page.js: Added a div to show added build requests.
|
|
Retry and bisect button should default to initial repetion count.
|
|
(AnalysisTaskTestGroupPane.prototype._renderCurrentTestGroup):
|
|
(AnalysisTaskTestGroupPane.cssTemplate):
|
|
|
|
2018-10-09 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
ManifestGenerator shouldn't need more than 1GB of memory or run for 30 seconds
|
|
https://bugs.webkit.org/show_bug.cgi?id=190393
|
|
|
|
Reviewed by Antti Koivisto and unofficially reviewed by Dewei Zhu.
|
|
|
|
This patch reduces the runtime of /api/manifest from 13s to 7s and reduces the memory requirement from
|
|
1GB to 400MB for the internal dashboard in my local testing.
|
|
|
|
The biggest perf win comes from avoid running a complex query over test_configurations to compute
|
|
the latest modified date across different test configuration types ("current" vs. "baseline").
|
|
Instead, we now fetch the entire table row by row and compute the latest modified date in memory.
|
|
|
|
Also call intval in many more places to avoid generating double quotes, which is a pretty significant
|
|
proportion of the JSON file size at this point.
|
|
|
|
Finally, use references in more places to avoid deep copying of arrays.
|
|
|
|
* public/include/manifest-generator.php:
|
|
(ManifestGenerator::generate): Skip the generation of "dashboard" since it's only used by v1 UI.
|
|
(ManifestGenerator::tests): Don't copy each row.
|
|
(ManifestGenerator::metrics): Ditto.
|
|
(ManifestGenerator::platforms): Implement the aforementioned optimization. Instead of grouping
|
|
test configurations for a given metric and platform together, fetch them all and do in-memory
|
|
processing in PHP. Avoid more copying as well.
|
|
(ManifestGenerator::repositories): Avoid more copying.
|
|
(ManifestGenerator::bug_trackers): Ditto.
|
|
(ManifestGenerator::fetch_triggerables): Ditto.
|
|
|
|
2018-10-08 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
/api/report takes 15+ minutes submitting some test results
|
|
https://bugs.webkit.org/show_bug.cgi?id=190382
|
|
|
|
Rubber-stamped by Alexey Proskuryakov and unofficially reviewed by Dewei Zhu.
|
|
|
|
The issue was that recursively_ensure_tests would issue thousands of dependent queries.
|
|
|
|
Since most reporting of results would be happening after all the tests and test metrics had been created,
|
|
simply fetch the list of all tests and test metrics upfront in memory.
|
|
|
|
This would slow-down the reporting of other test results but in practice doesn't matter (an extra few seconds
|
|
of overhead) but for slow reporting, it can significantly reduce the runtime from ~10 minutes to ~10 seconds.
|
|
|
|
* public/include/report-processor.php:
|
|
(ReportProcessor::process): Call fetch_tests before recursively_ensure_tests.
|
|
(ReportProcessor::fetch_tests): Added. This builds up a mapping of tests based on a parent test ID as well as
|
|
a mapping of metrics per test based on its name and then its aggregator's name.
|
|
(ReportProcessor::recursively_ensure_tests): Added. Use the in-memory maps built in fetch_tests when possible.
|
|
(ReportProcessor::aggregator_list_if_exists): Take a reference instead of passing it by value.
|
|
(TestRunsGenerator::add_aggregated_metric): Now takes metric ID. The code to add the test metric had been moved
|
|
to recursively_ensure_tests.
|
|
|
|
2018-10-01 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Add retry for test groups with failed build requests.
|
|
https://bugs.webkit.org/show_bug.cgi?id=190188
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Added retry logic in run-analysis script.
|
|
Current retry logic will only be triggered when there is at least one successful build request for each commit set
|
|
in a test group.
|
|
|
|
* init-database.sql: Added 'testgroup_initial_repetition_count' and 'testgroup_may_need_more_requests'.
|
|
SQL to update existing database:
|
|
'''
|
|
BEGIN;
|
|
ALTER TABLE analysis_test_groups
|
|
ADD COLUMN testgroup_initial_repetition_count integer DEFAULT NULL,
|
|
ADD COLUMN testgroup_may_need_more_requests boolean DEFAULT FALSE;
|
|
UPDATE analysis_test_groups SET testgroup_initial_repetition_count = (
|
|
SELECT DISTINCT(COUNT(*)) FROM build_requests WHERE request_group = testgroup_id AND request_order >= 0 GROUP BY request_commit_set
|
|
);
|
|
ALTER TABLE analysis_test_groups ALTER COLUMN testgroup_initial_repetition_count DROP DEFAULT, ALTER COLUMN testgroup_may_need_more_requests SET NOT NULL;
|
|
END;
|
|
'''
|
|
'testgroup_initial_repetition_count' represents the number of successful build request for each commit set when
|
|
test group is created.
|
|
'testgroup_may_need_more_requests' will be set when any build request in test group is set to 'failed'.
|
|
* public/api/build-requests.php: Added the logic to set 'testgroup_may_need_more_requests'.
|
|
* public/api/test-groups.php: Updated 'ready-for-notification' to 'ready-for-further-processing' so that it returns finished test
|
|
groups those either have 'needs_notification' or 'may_need_more_requests' set.
|
|
* public/include/commit-sets-helpers.php: Set 'initial_repetition_count' to repetition count.
|
|
* public/privileged-api/update-test-group.php: Added APIs to add build request for a test group and
|
|
update 'may_need_more_requests' flag.
|
|
* public/v3/models/test-group.js:
|
|
(TestGroup): Added '_mayNeedMoreRequests' and '_initialRepetitionCount' field.
|
|
Refactored code that interacts with '/api/update-test-group'.
|
|
(TestGroup.prototype.updateSingleton):
|
|
(TestGroup.prototype.mayNeedMoreRequests):
|
|
(TestGroup.prototype.initialRepetitionCount):
|
|
(TestGroup.prototype.async._updateBuildRequest):
|
|
(TestGroup.prototype.updateName):
|
|
(TestGroup.prototype.updateHiddenFlag):
|
|
(TestGroup.prototype.async.didSendNotification):
|
|
(TestGroup.prototype.async.addMoreBuildRequests):
|
|
(TestGroup.prototype.async.clearMayNeedMoreBuildRequests): Added API to clear 'may_need_more_requests' flag.
|
|
(TestGroup.fetchAllReadyForFurtherProcessing): Refactored 'TestGroup.fetchAllWithNotificationReady' to return test groups either
|
|
have 'needs_notification' or 'may_need_more_requests' set.
|
|
(TestGroup.fetchAllThatMayNeedMoreRequests): Fetches test groups those may need more build requests.
|
|
* server-tests/api-test-groups.js: Added unit tests.
|
|
* server-tests/privileged-api-add-build-requests-tests.js: Added unit tests for 'add-build-requests' API.
|
|
* server-tests/privileged-api-update-test-group-tests.js: Added unit tests.
|
|
* server-tests/resources/mock-data.js:
|
|
(MockData.addMockData):
|
|
* server-tests/resources/test-server.js:
|
|
(TestServer.prototype._determinePgsqlDirectory): Fixed a bug that 'childProcess.execFileSync' may return a buffer.
|
|
* tools/run-analysis.js: Added logic to add extra build request before sennding notification.
|
|
* tools/js/retry-failed-build-requests.js:
|
|
(async.createAdditionalBuildRequestsForTestGroupsWithFailedRequests): Module that add extra build requests.
|
|
* unit-tests/retry-failed-build-requests-tests.js: Added.
|
|
* unit-tests/test-groups-tests.js: Added unit tests.
|
|
|
|
2018-09-21 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Apache can return a corrupt manifest file while ManifestGenerator::store is running
|
|
https://bugs.webkit.org/show_bug.cgi?id=189822
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Updating a file on performance dashboard should be transactional between php and apache.
|
|
Otherwise, partial content may be served.
|
|
|
|
* public/api/measurement-set.php: Adapted invocation of 'generate_json_date_with_elapsed_time_if_needed'.
|
|
* public/api/runs.php: Adapted invocation of 'generate_json_date_with_elapsed_time_if_needed'.
|
|
* public/include/db.php: Make creating file transactionaly by taking advantage of
|
|
'move/rename' operation is atomic in OS.
|
|
Added logic to avoid overwriting file if all content except specified filed are identical.
|
|
* public/include/json-header.php: Added a helper function that added 'status' but does not
|
|
convert content to json.
|
|
* public/include/manifest-generator.php: Adapted invocation of 'generate_json_date_with_elapsed_time_if_needed'.
|
|
* public/shared/statistics.js: Removed unnecessary logging.
|
|
(Statistics.new.sampleMeanAndVarianceFromMultipleSamples):
|
|
* server-tests/api-manifest-tests.js: Updated one unit test.
|
|
|
|
2018-08-22 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Show t-test results based on individual measurements to analysis task page.
|
|
https://bugs.webkit.org/show_bug.cgi?id=188425
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Added comparison for individual iterations in analysis task page.
|
|
Added comparison for individual iterations for notification on A/B tests completion.
|
|
Refactored t-distribution inverse lookup to any degree of freedom with 5 significant figures.
|
|
|
|
* public/shared/statistics.js: Refactored t-distribution inverse lookup function and adapted this
|
|
change to all invocations.
|
|
(Statistics.new.this.supportedConfidenceIntervalProbabilities):
|
|
(Statistics.new.this.supportedOneSideTTestProbabilities):
|
|
(Statistics.new.this.confidenceIntervalDelta):
|
|
(Statistics.new.sampleMeanAndVarianceForMultipleSamples):
|
|
(Statistics.new.this.probabilityRangeForWelchsT):
|
|
(Statistics.new.this.probabilityRangeForWelchsTFromTwoSampleSets):
|
|
(Statistics.new.this._determinetwoSidedProbabilityBoundaryForWelchsT):
|
|
(Statistics.new.this.computeWelchsT):
|
|
(Statistics.new.this._computeWelchsTFromStatistics):
|
|
(Statistics.new.this.minimumTForOneSidedProbability): Function that does t-distribution inverse lookup.
|
|
* public/v3/components/analysis-results-viewer.js: Adapted TestGroup.compareTestResults change.
|
|
(AnalysisResultsViewer.TestGroupStackingBlock.prototype._measurementsForCommitSet):
|
|
(AnalysisResultsViewer.TestGroupStackingBlock.prototype._computeTestGroupStatus):
|
|
(AnalysisResultsViewer.TestGroupStackingBlock.prototype._valuesForCommitSet): Deleted.
|
|
* public/v3/components/test-group-results-viewer.js: Show both comparisions for both individual and mean.
|
|
(TestGroupResultsViewer.prototype._renderResultsTable):
|
|
(TestGroupResultsViewer.prototype._buildRowForMetric.):
|
|
(TestGroupResultsViewer.prototype._buildValueMap):
|
|
* public/v3/models/test-group.js:
|
|
(TestGroup.compareTestResults): Added comparison for individual iterations.
|
|
* tools/js/test-group-result-page.js:
|
|
(TestGroupResultPage.prototype._constructTableForMetric):
|
|
(TestGroupResultPage.prototype.get styleTemplate):
|
|
(TestGroupResultPage):
|
|
(TestGroupResultPage.prototype._URLForAnalysisTask): Renamed to '_resultsForTestGroup'
|
|
* unit-tests/statistics-tests.js: Updated and added unit tests.
|
|
|
|
2018-07-13 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
CustomConfigurationTestGroupForm should dispatch different arguments based on whether analysis task is created.
|
|
https://bugs.webkit.org/show_bug.cgi?id=187675
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
This change will fix the bug that no notification will be sent for any test groups except the
|
|
first one in any custom perf-try A/B task.
|
|
|
|
* public/v3/components/custom-configuration-test-group-form.js:
|
|
(CustomConfigurationTestGroupForm.prototype.startTesting): Conditionally includes taskName based on
|
|
whether or not analysis task is created.
|
|
|
|
2018-07-03 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
MeasurementSet should merge last four segments into two if values are identical.
|
|
https://bugs.webkit.org/show_bug.cgi?id=187311
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
If last four segments has the same value, MeasurmentSet should merge them.
|
|
|
|
* public/v3/models/measurement-set.js: Added the logic to conditionally merge last segments.
|
|
(MeasurementSet.prototype.fetchSegmentation):
|
|
* unit-tests/measurement-set-tests.js: Added a unit test for this change.
|
|
|
|
2018-06-29 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Manifest.reset should clear static map for BugTracker and Bug objects.
|
|
https://bugs.webkit.org/show_bug.cgi?id=187186
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
If static maps of BugTracker and Bug objects are not cleared up, updating singleton
|
|
of Bug object will fail assertion.
|
|
|
|
* public/v3/models/manifest.js: Clear static map for BugTracker and Bug.
|
|
(Manifest.reset):
|
|
* server-tests/api-manifest-tests.js: Added a unit test for this change.
|
|
|
|
2018-06-29 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix a bug in range bisector that start commit may be counted twice.
|
|
https://bugs.webkit.org/show_bug.cgi?id=187205
|
|
|
|
Reviewed by Darin Adler.
|
|
|
|
Range bisector counted start commit twice if start commit is the same as end commit.
|
|
|
|
* public/v3/commit-set-range-bisector.js:
|
|
(CommitSetRangeBisector.async.commitSetClosestToMiddleOfAllCommits):
|
|
* unit-tests/commit-set-range-bisector-tests.js: Added a unit test for this change.
|
|
|
|
2018-06-28 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix a bug ComponentBase that wrong content template may be used.
|
|
https://bugs.webkit.org/show_bug.cgi?id=187159
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
ComponentBase uses '_parsed' to mark whether content and style templates of a class
|
|
is parsed. However, derived class parsing will be skipped as 'Derive._parsed' is available
|
|
via prototype chain whenever the base class is parsed.
|
|
|
|
* browser-tests/component-base-tests.js: Added unit tests.
|
|
* public/v3/components/base.js: Added 'hasOwnProperty' to make sure current class is parsed.
|
|
(ComponentBase.prototype._ensureShadowTree):
|
|
|
|
2018-06-25 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
MeasurementSetAnalyzer should check triggerable availability before creating confirming A/B tests.
|
|
https://bugs.webkit.org/show_bug.cgi?id=187028
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
If the triggerable is not available, MeasurmentSetAnalyzer should only create analysis task without
|
|
confirming A/B tests.
|
|
|
|
* tools/js/measurement-set-analyzer.js: Added logic to check triggerable availability.
|
|
(MeasurementSetAnalyzer.prototype.async._analyzeMeasurementSet):
|
|
(MeasurementSetAnalyzer):
|
|
* unit-tests/measurement-set-analyzer-tests.js: Updated unit tests and added a new unit test for this change.
|
|
|
|
2018-06-11 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Extend test group rule to support 'userInitiated' field.
|
|
https://bugs.webkit.org/show_bug.cgi?id=186544
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Added support for rule specifying whether or not test group is user initiated.
|
|
|
|
* tools/js/analysis-results-notifier.js: Rule now support 'userInitiated' field.
|
|
(AnalysisResultsNotifier.prototype.async.sendNotificationsForTestGroups):
|
|
(AnalysisResultsNotifier.prototype._applyRules):
|
|
(AnalysisResultsNotifier._matchesRule):
|
|
* unit-tests/analysis-results-notifier-tests.js: Added unit tests for this change.
|
|
|
|
2018-05-29 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
CommitSet range bisector should use commits occur in commit sets which specify the range as valid commits for commits without ordering.
|
|
https://bugs.webkit.org/show_bug.cgi?id=186062
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
For commits without ordering, we should use the commits occurs in the commit sets which specify the range as valid commits.
|
|
Commit sets in range should only contain those valid commits for corresponding repositories.
|
|
|
|
* public/v3/commit-set-range-bisector.js: Updated logic to add check on commits without ordering.
|
|
(CommitSetRangeBisector.async.commitSetClosestToMiddleOfAllCommits):
|
|
* unit-tests/commit-set-range-bisector-tests.js: Added a unit test for this case.
|
|
|
|
2018-06-07 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Related task may not have a metric or platform.
|
|
https://bugs.webkit.org/show_bug.cgi?id=186426
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Related task in the related task list can be a custom analysis task which
|
|
may not have platform or metric.
|
|
|
|
* public/v3/pages/analysis-task-page.js: Added null checks for platform and metric.
|
|
(AnalysisTaskPage.prototype._renderRelatedTasks):
|
|
|
|
2018-06-07 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Fix browser test failed assertions and a bug in 'common-component-base'
|
|
https://bugs.webkit.org/show_bug.cgi?id=186423
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Fixed serveral assertion failures in browser tests.
|
|
Fixed a bug in common-component-base that null/undefined as attribute value is not allowed.
|
|
|
|
* browser-tests/chart-revision-range-tests.js: Should not import 'lazily-evaluated-function.js' twice.
|
|
* browser-tests/chart-status-evaluator-tests.js: Should not import 'lazily-evaluated-function.js' twice.
|
|
* browser-tests/component-base-tests.js: Added a unit test for element attributes being null or undefined.
|
|
* browser-tests/index.html: Make mocked data from makeSampleCluster also contains commit_order.
|
|
* public/shared/common-component-base.js: Make it allow to take null as attribute value.
|
|
(CommonComponentBase.createElement):
|
|
|
|
2018-05-24 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Added sending notification feature when test group finishes.
|
|
https://bugs.webkit.org/show_bug.cgi?id=184340
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Added 'testgroup_needs_notification' filed to 'analysis_test_group' table to indicate whether a test group
|
|
has a pending notification.
|
|
Added 'testgroup_notification_sent_at' to record the last notification sent time.
|
|
SQL queries to update existing database are:
|
|
'ALTER TABLE analysis_test_groups ADD COLUMN testgroup_needs_notification boolean NOT NULL DEFAULT FALSE;'
|
|
'ALTER TABLE analysis_test_groups ADD COLUMN testgroup_notification_sent_at timestamp DEFAULT NULL;'
|
|
Updated 'run-analysis' script to be able to send notification when test group finishes.
|
|
Added 'Notify on completion' checkbox while creating/retrying/bisecting a test group.
|
|
|
|
* browser-tests/test-group-form-tests.js: Updated existing tests and added a new test.
|
|
* browser-tests/test-group-result-page-tests.js: Added unit tests for TestGroupResultPage.
|
|
* init-database.sql: Added 'testgroup_needs_notification' filed to 'analysis_test_group' table.
|
|
* public/api/test-groups.php: Added '/api/test-groups/ready-for-notification' API to 'test-group' to show all
|
|
test groups that need to send notification. Only the ones with 'completed', 'failed' or 'cancelled' status and its
|
|
'testgroup_needs_notification' is true will be returned by this API.
|
|
* public/include/build-requests-fetcher.php: Added 'fetch_requests_for_groups' to return test groups with given ids.
|
|
* public/include/commit-sets-helpers.php: Updated the logic to support setting 'testgroup_needs_notification'
|
|
while create an analysis_test_groups.
|
|
* public/privileged-api/create-analysis-task.php: Updated the logic to support setting 'testgroup_needs_notification'.
|
|
* public/privileged-api/create-test-group.php: Updated the logic to support setting 'testgroup_needs_notification'.
|
|
* public/privileged-api/update-test-group.php: Updated the logic to support updating 'testgroup_needs_notification'.
|
|
Extended this API to allow authentication both from CSRF token and slave.
|
|
* public/v3/components/custom-configuration-test-group-form.js:
|
|
(CustomConfigurationTestGroupForm.prototype.startTesting): Pass 'notifyOnCompletion' information which represents
|
|
'testgroup_needs_notification' from API perspective.
|
|
* public/v3/components/customizable-test-group-form.js:
|
|
(CustomizableTestGroupForm.prototype.startTesting): Pass 'notifyOnCompletion' information which represents
|
|
'testgroup_needs_notification' from API perspective.
|
|
(CustomizableTestGroupForm.cssTemplate): Added space between 'Notify on completion' checkbox and test group iteration selection list.
|
|
* public/v3/components/test-group-form.js:
|
|
(TestGroupForm): Added '_notifyOnCompletion' instance variable.
|
|
(TestGroupForm.prototype.didConstructShadowTree): Added 'onchange' event for notify on completion checkbox.
|
|
(TestGroupForm.prototype.startTesting): Pass 'notifyOnCompletion' information which represents
|
|
'testgroup_needs_notification' from API perspective.
|
|
(TestGroupForm.cssTemplate): Added space between 'Notify on completion' checkbox and test group iteration selection list.
|
|
* public/v3/models/analysis-results.js: Export 'AnalysisResults'.
|
|
(AnalysisResults.fetch): Update API path to use absolute url.
|
|
(AnalysisResults):
|
|
* public/v3/models/analysis-task.js:
|
|
(AnalysisTask.async.create): Extend this function to take notifyOnCompletion as argument which will be used as
|
|
'needsNotification' to send to server.
|
|
(AnalysisTask):
|
|
* public/v3/models/test-group.js:
|
|
(TestGroup): Added '_needsNotification' field.
|
|
(TestGroup.prototype.updateSingleton): Added logic to update '_needsNotification' field.
|
|
(TestGroup.prototype.needsNotification): Returns '_needsNotification' field.
|
|
(TestGroup.prototype.author): Returns author information.
|
|
(TestGroup.prototype.async.didSendNotification): API that updates 'testgroup_needs_notification' to true.
|
|
(TestGroup.prototype.async.fetchTask): API to fetch the task when it has not been fetched.
|
|
(TestGroup.createWithTask): Updated this function to accept 'notifyOnCompletion' which will be used as
|
|
'needsNotification' to send to server.
|
|
(TestGroup.createWithCustomConfiguration): Updated this function to accept 'notifyOnCompletion' which will be used as
|
|
'needsNotification' to send to server.
|
|
(TestGroup.createAndRefetchTestGroups): Updated this function to accept 'notifyOnCompletion' which will be used as
|
|
'needsNotification' to send to server.
|
|
(TestGroup.fetchAllWithNotificationReady): New function that invokes '/api/test-groups/ready-for-notification'.
|
|
* public/v3/pages/analysis-task-page.js: Update logic to 'notifyOnCompletion' around
|
|
(AnalysisTaskChartPane.prototype.didConstructShadowTree):
|
|
(AnalysisTaskResultsPane.prototype.didConstructShadowTree):
|
|
(AnalysisTaskTestGroupPane.prototype.didConstructShadowTree):
|
|
(AnalysisTaskPage.prototype.didConstructShadowTree):
|
|
(AnalysisTaskPage.prototype._retryCurrentTestGroup):
|
|
(AnalysisTaskPage.prototype.async._bisectCurrentTestGroup):
|
|
(AnalysisTaskPage.prototype._createTestGroupAfterVerifyingCommitSetList.set const):
|
|
(AnalysisTaskPage.prototype._createTestGroupAfterVerifyingCommitSetList):
|
|
(AnalysisTaskPage.prototype._createCustomTestGroup):
|
|
* public/v3/pages/chart-pane.js: Added 'Notify on completion' checkbox.
|
|
(ChartPane.prototype.didConstructShadowTree):
|
|
(ChartPane.prototype.async._analyzeRange):
|
|
* public/v3/pages/create-analysis-task-page.js: Adapted API change.
|
|
(CreateAnalysisTaskPage.prototype._createAnalysisTaskWithGroup):
|
|
* server-tests/api-test-groups.js: Added tests for '/api/test-groups/ready-for-notification'.
|
|
* server-tests/privileged-api-create-analysis-task-tests.js: Updated tests to adapt this change.
|
|
Added new tests.
|
|
* server-tests/privileged-api-create-test-group-tests.js: Added new tests.
|
|
* server-tests/privileged-api-update-test-group-tests.js: Added unit test for 'update-test-group' API.
|
|
* server-tests/resources/mock-data.js: addMockData should set 'testgroup_needs_notification' to be true.
|
|
* server-tests/tools-sync-buildbot-integration-tests.js: Updated tests to adapt this change.
|
|
(async.createTestGroupWihPatch):
|
|
(createTestGroupWihOwnedCommit):
|
|
* tools/js/analysis-results-notifier.js: Added notifier to send notification for completed test groups.
|
|
(AnalysisResultsNotifier):
|
|
(AnalysisResultsNotifier.prototype.async.sendNotificationsForTestGroups):
|
|
(AnalysisResultsNotifier.prototype._sendNotification): Invoke remote API to send notification.
|
|
(AnalysisResultsNotifier.prototype._constructMessageByRules):
|
|
(AnalysisResultsNotifier._matchesRule):
|
|
(AnalysisResultsNotifier._applyUpdate):
|
|
(AnalysisResultsNotifier.async._messageForTestGroup): Build html as message body for a test group.
|
|
(AnalysisResultsNotifier._URLForAnalysisTask): Returns URL for an analysis task.
|
|
(AnalysisResultsNotifier._instantiateNotificationTemplate):
|
|
* tools/js/test-group-result-page.js: Added 'TestGroupResultPage' and 'BarGraph' to show test group result.
|
|
(TestGroupResultPage):
|
|
(TestGroupResultPage.prototype.async.setTestGroup):
|
|
(TestGroupResultPage._urlForAnalysisTask):
|
|
(TestGroupResultPage.prototype._URLForAnalysisTask):
|
|
(TestGroupResultPage.prototype.constructTables):
|
|
(TestGroupResultPage.prototype._constructTableForMetric):
|
|
(TestGroupResultPage.):
|
|
(TestGroupResultPage.prototype.get pageContent):
|
|
(TestGroupResultPage.prototype.get styleTemplate):
|
|
(BarGraph):
|
|
(BarGraph.prototype.setWidth):
|
|
(BarGraph.prototype._constructBarGraph):
|
|
(BarGraph.prototype.get pageContent):
|
|
(BarGraph.prototype.get styleTemplate):
|
|
* tools/js/measurement-set-analyzer.js: Adapted 'AnalysisTask.create' change.
|
|
(MeasurementSetAnalyzer.prototype.async._analyzeMeasurementSet):
|
|
(MeasurementSetAnalyzer):
|
|
* tools/js/v3-models.js:
|
|
* tools/run-analysis.js: Added the logic that sends notification for completed test groups.
|
|
(main):
|
|
(async.analysisLoop):
|
|
* unit-tests/analysis-task-tests.js:
|
|
* unit-tests/analysis-results-notifier-tests.js: Added a unit test for 'AnalysisResultsNotifier' and 'NotificationService'.
|
|
* unit-tests/measurement-set-analyzer-tests.js: Updated unit tests per this change.
|
|
* unit-tests/test-groups-tests.js: Added unit tests for 'TestGroup.needsNotification'.
|
|
* unit-tests/resources/mock-remote-api.js: Only set 'privilegedAPI' when it exits.
|
|
|
|
2018-06-07 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
Add the basic support for writing components in node.js
|
|
https://bugs.webkit.org/show_bug.cgi?id=186299
|
|
|
|
Reviewed by Antti Koivisto.
|
|
|
|
Add the basic support for writing components in node.js for generating rich email notifications.
|
|
|
|
To do this, this patch introduces MarkupComponentBase and MarkupPage which implement similar API
|
|
to ComponentBase and Page classes of v3 UI code. This enables us to share code between frontend
|
|
and the backend in the future. Because there is no support for declarative custom elements or
|
|
shadow root in HTML, MarkupComponentBase uses a similar but distinct concept of "content" tree
|
|
to represent the "DOM" tree for a component. When generating the HTML, MarkupComponentBase and
|
|
MarkupPage collectively transforms stylesheets and flattens the tree into a single HTML. In order
|
|
to keep this flatteneing logic simple, MarkupComponentBase only supports a very small subset of
|
|
CSS selectors to select elements by their local names and class names.
|
|
|
|
Specifically, each class name and element name based selectors are replaced by a globally unique
|
|
class name based selector, and each element which matches the selector is applied of the same
|
|
globally unique class name. The transformation is applied when constructing the "content" tree
|
|
as well as calls to renderReplace.
|
|
|
|
Because much of v3 frontend code relies on DOM API, this patch also implements the simplest form
|
|
of a fake DOM API as MarkupNode, MarkupParentNode, MarkupElement, and MarkupText. In order to avoid
|
|
reimplementing HTML & CSS parsers, this patch introduces the concept of content and style templates
|
|
to ComponentBase which are JSON alternatives to HTML & CSS template strings which can be used in
|
|
both frontend & backend.
|
|
|
|
* browser-tests/close-button-tests.js: Include CommonComponentBase.
|
|
* browser-tests/commit-log-viewer-tests.js: Ditto.
|
|
* browser-tests/component-base-tests.js: Ditto. Added a test cases for content & style templates.
|
|
(async.importComponentBase): Added.
|
|
* browser-tests/editable-text-tests.js: Include CommonComponentBase.
|
|
* browser-tests/index.html:
|
|
* browser-tests/markup-page-tests.js: Added.
|
|
* browser-tests/page-router-tests.js: Include CommonComponentBase.
|
|
* browser-tests/page-tests.js: Ditto.
|
|
* browser-tests/test-group-form-tests.js: Ditto.
|
|
* public/shared/common-component-base.js: Added.
|
|
(CommonComponentBase): Extracted out of ComponentBase.
|
|
(CommonComponentBase.prototype.renderReplace): Added.
|
|
(CommonComponentBase.renderReplace): Moved from ComponentBase.
|
|
(CommonComponentBase.prototype._recursivelyUpgradeUnknownElements): Moved and renamed from
|
|
ComponentBase's _recursivelyReplaceUnknownElementsByComponents.
|
|
(CommonComponentBase.prototype._upgradeUnknownElement): Extracted out of the same function.
|
|
(CommonComponentBase._constructStylesheetFromTemplate): Added.
|
|
(CommonComponentBase._constructNodeTreeFromTemplate): Added.
|
|
(CommonComponentBase.prototype.createElement): Added.
|
|
(CommonComponentBase.createElement): Moved from ComponentBase.
|
|
(CommonComponentBase._addContentToElement): Moved from ComponentBase.
|
|
(CommonComponentBase.prototype.createLink): Added.
|
|
(CommonComponentBase.createLink): Moved from ComponentBase.
|
|
(CommonComponentBase._context): Added. Set to document in a browser and MarkupDocument in node.js.
|
|
(CommonComponentBase._isNode): Added. Set to a function which does instanceof Node/MarkupNode check.
|
|
(CommonComponentBase._baseClass): Added. Set to ComponentBase or MarkupComponentBase.
|
|
* public/v3/components/base.js:
|
|
(ComponentBase):
|
|
(ComponentBase.prototype._ensureShadowTree): Added the support for the content and style templates.
|
|
Also avoid parsing the html template each time a component is instantiated by caching the result.
|
|
* public/v3/index.html:
|
|
* tools/js/markup-component.js: Added.
|
|
(MarkupDocument): Added. A fake Document.
|
|
(MarkupDocument.prototype.createContentRoot): A substitude for attachShadow.
|
|
(MarkupDocument.prototype.createElement):
|
|
(MarkupDocument.prototype.createTextNode):
|
|
(MarkupDocument.prototype._idForClone):
|
|
(MarkupDocument.prototype.reset):
|
|
(MarkupDocument.prototype.markup):
|
|
(MarkupDocument.prototype.escapeAttributeValue):
|
|
(MarkupDocument.prototype.escapeNodeData):
|
|
(MarkupNode): Added. A fake Node. Each node gets an unique ID.
|
|
(MarkupNode.prototype._markup):
|
|
(MarkupNode.prototype.clone): Implemented by the leave class.
|
|
(MarkupNode.prototype._cloneNodeData):
|
|
(MarkupNode.prototype.remove):
|
|
(MarkupParentNode): Added. An equivalent of ContainerNode in WebCore.
|
|
(MarkupParentNode.prototype.get childNodes):
|
|
(MarkupParentNode.prototype._cloneNodeData):
|
|
(MarkupParentNode.prototype.appendChild):
|
|
(MarkupParentNode.prototype.removeChild):
|
|
(MarkupParentNode.prototype.removeAllChildren):
|
|
(MarkupParentNode.prototype.replaceChild):
|
|
(MarkupContentRoot): Added. Used like a shadow tree.
|
|
(MarkupContentRoot.prototype._markup): Added.
|
|
(MarkupElement): Added. A fake Element. It also implements a subset of IDL attributes implemented by
|
|
subclasses such as HTMLInputElement for simplicity.
|
|
(MarkupElement.prototype.get id): Added.
|
|
(MarkupElement.prototype.get localName): Added.
|
|
(MarkupElement.prototype.clone): Added.
|
|
(MarkupElement.prototype.appendChild): Added.
|
|
(MarkupElement.prototype.addEventListener): Added.
|
|
(MarkupElement.prototype.setAttribute): Added.
|
|
(MarkupElement.prototype.getAttribute): Added.
|
|
(MarkupElement.prototype.get attributes): Added.
|
|
(MarkupElement.prototype.get textContent): Added.
|
|
(MarkupElement.prototype.set textContent): Added.
|
|
(MarkupElement.prototype._serializeStyle): Added.
|
|
(MarkupElement.prototype._markup): Added. Flattens the tree with content tree like copy & paste so
|
|
this can't be used to implement innerHTML.
|
|
(MarkupElement.prototype.get value): Added.
|
|
(MarkupElement.prototype.set value): Added.
|
|
(MarkupElement.prototype.get style): Added. Returns a fake writeonly CSSStyleDeclaration.
|
|
(MarkupElement.prototype.set style): Added.
|
|
(MarkupElement.get selfClosingNames): Added. A small list of self-closing tags for the HTML generation.
|
|
(MarkupText): Added.
|
|
(MarkupText.prototype.clone): Added.
|
|
(MarkupText.prototype._markup): Added.
|
|
(MarkupText.prototype.get data): Added.
|
|
(MarkupText.prototype.set data): Added.
|
|
(MarkupComponentBase): Added.
|
|
(MarkupComponentBase.prototype.element): Added. Like ComponentBase's element.
|
|
(MarkupComponentBase.prototype.content): Added. Like ComponentBase's content.
|
|
(MarkupComponentBase.prototype._findElementRecursivelyById): Added. A fake getElementById.
|
|
(MarkupComponentBase.prototype.render): Added. Like ComponentBase's render.
|
|
(MarkupComponentBase.prototype.runRenderLoop): Added. In ComponentBase, we use requestAnimationFrame.
|
|
In MarkupComponentBase, we keep rendering until the queue drains empty.
|
|
(MarkupComponentBase.prototype.renderReplace): Added. Like ComponentBase's renderReplace but applies
|
|
the transformation of classes to workaround the lack of shadow tree support in scriptless HTML.
|
|
(MarkupComponentBase.prototype._applyStyleOverrides): Added. Recursively applies the transformation.
|
|
(MarkupComponentBase.prototype._ensureContentTree): Added. Like ComponentBase's _ensureShadowTree.
|
|
(MarkupComponentBase.reset): Added.
|
|
(MarkupComponentBase._parseTemplates): Added. Parses the content & style templates, and generates the
|
|
transformed fake DOM tree and stylesheet text whereby selectors in each component is modified to be
|
|
unique across all components. The function to apply the necessary changes to an element is saved in
|
|
the global map of components, and later used in renderReplace via _applyStyleOverrides.
|
|
(MarkupComponentBase.defineElement): Added. Like ComponentBase's defineElement.
|
|
(MarkupComponentBase.prototype.createEventHandler): Added.
|
|
(MarkupComponentBase.createEventHandler): Added.
|
|
(MarkupPage): Added. The top-level component responsible for generating a DOCTYPE, head, and body.
|
|
(MarkupPage.prototype.pageTitle): Added.
|
|
(MarkupPage.prototype.content): Added. Overrides the one in MarkupComponentBase to return what would
|
|
be the content of the body element as opposed to the html element for the connivance of subclasses,
|
|
and to match the behavior of the frontend Page class.
|
|
(MarkupPage.prototype.render): Added.
|
|
(MarkupPage.prototype._updateComponentsStylesheet): Added. Concatenates the transformed stylesheet of
|
|
all components used.
|
|
(MarkupPage.get contentTemplate): Added.
|
|
(MarkupPage.prototype.generateMarkup): Added. Enqueues the page to render, spin the render loop, and
|
|
generates the HTML. We enqueue the page twice in order to invoke _updateComponentsStylesheet after
|
|
all subcomponent had finished rendering.
|
|
* unit-tests/markup-component-base-tests.js: Added.
|
|
* unit-tests/markup-element-tests.js: Added.
|
|
(.createElement): Added.
|
|
* unit-tests/markup-page-tests.js: Added.
|
|
|
|
2018-05-23 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
OSBuildFetcher should respect maxRevision while finding OS builds to report.
|
|
https://bugs.webkit.org/show_bug.cgi?id=185925
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
* server-tests/tools-os-build-fetcher-tests.js: Fix a typo in the unit tests.
|
|
Added unit tests for this change. Aslo convert an existing test using async.
|
|
* tools/js/os-build-fetcher.js:
|
|
(prototype._fetchAvailableBuilds): It should also use 'maxRevision' to filter builds to be reported.
|
|
It should use 'minRevisionOrder' when no commit has ever been submitted.
|
|
(prototype._commitsForAvailableBuilds): Takes 'maxOrder' as fifth argument.
|
|
'minOrder' and 'maxOrder' should be inclusive.
|
|
|
|
2018-05-11 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Update ChartPane per change r231087.
|
|
https://bugs.webkit.org/show_bug.cgi?id=185570
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
On r231087 we change the return type of AnalysisTask.create, ChartPane needs to adapt
|
|
this change.
|
|
|
|
* public/v3/pages/chart-pane.js: Adapted the change that AnalysisTask.create now returns
|
|
an AnalysisTask object.
|
|
(ChartPane.prototype.async._analyzeRange):
|
|
|
|
2018-05-10 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
CommitLogViewer._preceedingCommit should not always be null
|
|
https://bugs.webkit.org/show_bug.cgi?id=185540
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Fix the bug introduced in r227746 that CommitLogViewer._preceedingCommit is always null.
|
|
|
|
* browser-tests/index.html: Fix expected measurement-set url.
|
|
* public/v3/components/commit-log-viewer.js:
|
|
(CommitLogViewer.prototype._fetchCommitLogs): CommitLogViewer._preceedingCommit should be set
|
|
when fetching for preceeding revision succeeds.
|
|
|
|
2018-05-03 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Range bisector should check the commits for repositories without change in specified range.
|
|
https://bugs.webkit.org/show_bug.cgi?id=185269
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
For repositories without a change in the specified range, we still need to use them to filter commit
|
|
sets. Before this change, code does not apply filtering by those repositories against commit set. As
|
|
a result, commit sets with different commits for those repositories may be chosen as bisecting commit set.
|
|
|
|
* public/v3/commit-set-range-bisector.js: Updated the logic to verify range for repositories without
|
|
change in range.
|
|
(CommitSetRangeBisector.async.commitSetClosestToMiddleOfAllCommits):
|
|
* unit-tests/commit-set-range-bisector-tests.js: Added a unit test to guard against this change.
|
|
|
|
2018-05-02 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Create analysis task should sync analysis task status after creation.
|
|
https://bugs.webkit.org/show_bug.cgi?id=185222
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
* public/v3/models/analysis-task.js:
|
|
(AnalysisTask.async.create): Fetch newly-created analysis task right about its creation.
|
|
(AnalysisTask):
|
|
* tools/js/measurement-set-analyzer.js:
|
|
(MeasurementSetAnalyzer.prototype.async._analyzeMeasurementSet): Adjust as 'AnalysisTask.create' now
|
|
returns an anlysis task instance.
|
|
(MeasurementSetAnalyzer):
|
|
* unit-tests/analysis-task-tests.js: Added a unit test for this change.
|
|
(async):
|
|
* unit-tests/measurement-set-analyzer-tests.js: Update unit tests accordingly.
|
|
Fix a typo in one previous unit test.
|
|
(async):
|
|
|
|
2018-05-01 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
Write a script that detects chart changes by using v3 API.
|
|
https://bugs.webkit.org/show_bug.cgi?id=184419
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
Added a script that detects chart changes and schedule confirming analysis task.
|
|
|
|
* browser-tests/async-task-tests.js: Added a unit test for 'AsyncTask'.
|
|
* browser-tests/index.html: Added import for 'AsyncTask' for testing.
|
|
* public/shared/statistics.js: Make 'findRangesForChangeDetectionsWithWelchsTTest' defaults to 0.99 one sided possibility.
|
|
(Statistics.new.this.findRangesForChangeDetectionsWithWelchsTTest):
|
|
* public/v3/async-task.js:
|
|
(AsyncTask.isAvailable): Helper function to determine whether AsyncTask is available or not as 'Worker' is
|
|
not available in nodejs.
|
|
(AsyncTask):
|
|
* public/v3/models/bug.js: Export as a module.
|
|
* public/v3/models/measurement-set.js:
|
|
(MeasurementSet.prototype._invokeSegmentationAlgorithm): Added a check to avoid using AsyncTask when running in NodeJs.
|
|
(MeasurementSet):
|
|
* server-tests/resources/common-operations.js: Added a helper function to assert certain exception is thrown.
|
|
(async.assertThrows):
|
|
* tools/js/measurement-set-analyzer.js: Added 'MeasurementSetAnalyzer' module for analyzing measurement set.
|
|
(MeasurementSetAnalyzer):
|
|
(MeasurementSetAnalyzer.prototype.async.analyzeOnce):
|
|
(MeasurementSetAnalyzer.measurementSetListForAnalysis):
|
|
(MeasurementSetAnalyzer.prototype.async._analyzeMeasurementSet):
|
|
* tools/js/v3-models.js: Added import for 'Bug' object.
|
|
* tools/run-analysis.js: Added this script to detect measurement set changes.
|
|
(main):
|
|
(async.analysisLoop):
|
|
* unit-tests/measurement-set-analyzer-tests.js: Added unit tests for 'MeasurementSetAnalyzer'.
|
|
* unit-tests/resources/mock-v3-models.js: Reset 'MeasurementSet._set' every time.
|
|
Update mock platform to include lastModifiedByMetric information.
|
|
(MockModels.inject):
|
|
|
|
2018-04-30 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
Creating a custom analysis task after fetching all analysis tasks fail
|
|
https://bugs.webkit.org/show_bug.cgi?id=184641
|
|
|
|
Reviewed by Saam Barati.
|
|
|
|
The bug was caused by AnalysisTask._fetchSubset not fetching the analysis task when all analysis tasks
|
|
had previously been fetched (AnlaysisTask._fetchAllPromise is set) even when noCache is set to true.
|
|
Fixed it by ignornig _fetchAllPromise when noCache is set to true.
|
|
|
|
This patch also adds noCache argument to AnalysisTask.fetchById and reverts the inadvertent change in
|
|
r226836 to always set noCache to true in this function.
|
|
|
|
* public/v3/models/analysis-task.js:
|
|
(AnalysisTask.fetchById): Added noCache argument instead of always specifying true, and modernized the code.
|
|
(AnalysisTask._fetchSubset): Fixed the bug. See above description.
|
|
* public/v3/models/test-group.js:
|
|
(TestGroup.createWithTask): Set noCache to true when calling AnalysisTask.fetchById here.
|
|
* unit-tests/analysis-task-tests.js: Added test cases for AnalysisTask.fetchById, including a test
|
|
to make sure it doesn't fetch the specified analysis task when noCache is set to false and all analysis
|
|
tasks had previously been fetched for the aforementioned revert of the inadvertent change in r226836.
|
|
(sampleAnalysisTasks): Renamed from sampleAnalysisTasks as the result contains multiple analysis tasks.
|
|
* unit-tests/test-groups-tests.js: Added a test case for TestGroup.createWithTask
|
|
|
|
2018-04-30 Ryosuke Niwa <rniwa@webkit.org>
|
|
|
|
REGRESSION(r230960): Browser tests under TimeSeriesChart fetchMeasurementSets all fail
|
|
https://bugs.webkit.org/show_bug.cgi?id=185125
|
|
|
|
Reviewed by Saam Barati.
|
|
|
|
The bug was caused by mock-remote-api.js always loading PrivilegedAPI using require, which doesn't work in a browser.
|
|
Fixed the bug by explicitly requiring the right kind of PrivilegedAPI in each unit test instead.
|
|
|
|
* unit-tests/analysis-task-tests.js:
|
|
* unit-tests/buildbot-syncer-tests.js:
|
|
* unit-tests/commit-log-tests.js:
|
|
* unit-tests/commit-set-range-bisector-tests.js:
|
|
* unit-tests/commit-set-tests.js:
|
|
* unit-tests/measurement-set-tests.js:
|
|
* unit-tests/privileged-api-tests.js:
|
|
* unit-tests/resources/mock-remote-api.js:
|
|
(MockRemoteAPI.inject): Take PrivilegedAPI instead of the type string. Also fixed a bug that _token wasn't unset
|
|
after each unit test, and superfluous initializations of originalRemoteAPI and originalPrivilegedAPI.
|
|
* unit-tests/test-groups-tests.js:
|
|
|
|
2018-04-30 Dewei Zhu <dewei_zhu@apple.com>
|
|
|
|
MeasurementSet._constructUrl should construct absolute url.
|
|
https://bugs.webkit.org/show_bug.cgi?id=185137
|
|
|
|
Reviewed by Ryosuke Niwa.
|
|
|
|
MeasurementSet._constructUrl should not construct an url with relative path.
|
|
|
|
* public/v3/models/measurement-set.js: Should use '/api/measurement-set...' and '/data/measurement-set-...'
|
|
for uncached and cached fetching.
|
|
* unit-tests/measurement-set-tests.js: Updated unit tests.
|
|
(const.set MeasurementSet):
|
|
|
|
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 ==
|