Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2032)

Unified Diff: Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js

Issue 13712005: Move GardeningServer out of BuildSlaveSupport (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js
deleted file mode 100644
index 94e16d7b9b74fd6bdd18d6e731ff46f87bc04a0e..0000000000000000000000000000000000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-var controllers = controllers || {};
-
-(function(){
-
-var kCheckoutUnavailableMessage = 'Failed! Garden-o-matic needs a local server to modify your working copy. Please run "webkit-patch garden-o-matic" start the local server.';
-
-// FIXME: Where should this function go?
-function rebaselineWithStatusUpdates(failureInfoList, resultsByTest)
-{
- var statusView = new ui.StatusArea('Rebaseline');
- var id = statusView.newId();
-
- var failuresToRebaseline = [];
- var testNamesLogged = [];
- failureInfoList.forEach(function(failureInfo) {
- if (isAnyReftest(failureInfo.testName, resultsByTest)) {
- if (testNamesLogged.indexOf(failureInfo.testName) == -1) {
- statusView.addMessage(id, failureInfo.testName + ' is a ref test, skipping');
- testNamesLogged.push(failureInfo.testName);
- }
- } else {
- failuresToRebaseline.push(failureInfo);
- if (testNamesLogged.indexOf(failureInfo.testName) == -1) {
- statusView.addMessage(id, 'Rebaselining ' + failureInfo.testName + '...');
- testNamesLogged.push(failureInfo.testName);
- }
- }
- });
-
- if (failuresToRebaseline.length) {
- checkout.rebaseline(failuresToRebaseline, function() {
- statusView.addFinalMessage(id, 'Rebaseline done! Please land with "webkit-patch land-cowhand".');
- }, function(failureInfo) {
- statusView.addMessage(id, failureInfo.testName + ' on ' + ui.displayNameForBuilder(failureInfo.builderName));
- }, function() {
- statusView.addFinalMessage(id, kCheckoutUnavailableMessage);
- });
- } else {
- statusView.addFinalMessage(id, 'No non-reftests left to rebaseline!')
- }
-}
-
-// FIXME: This is duplicated from ui/results.js :(.
-function isAnyReftest(testName, resultsByTest)
-{
- return Object.keys(resultsByTest[testName]).map(function(builder) {
- return resultsByTest[testName][builder];
- }).some(function(resultNode) {
- return resultNode.reftest_type && resultNode.reftest_type.length;
- });
-}
-
-// FIXME: Where should this function go?
-function updateExpectationsWithStatusUpdates(failureInfoList)
-{
- var statusView = new ui.StatusArea('Expectations Update');
- var id = statusView.newId();
-
- var testNames = base.uniquifyArray(failureInfoList.map(function(failureInfo) { return failureInfo.testName; }));
- var testName = testNames.length == 1 ? testNames[0] : testNames.length + ' tests';
- statusView.addMessage(id, 'Updating expectations of ' + testName + '...');
-
- checkout.updateExpectations(failureInfoList, function() {
- statusView.addFinalMessage(id, 'Expectations update done! Please land with "webkit-patch land-cowhand".');
- }, function() {
- statusView.addFinalMessage(id, kCheckoutUnavailableMessage);
- });
-}
-
-controllers.ResultsDetails = base.extends(Object, {
- init: function(view, resultsByTest)
- {
- this._view = view;
- this._resultsByTest = resultsByTest;
- this._view.setResultsByTest(resultsByTest);
-
- this._view.firstResult();
-
- $(this._view).bind('next', this.onNext.bind(this));
- $(this._view).bind('previous', this.onPrevious.bind(this));
- $(this._view).bind('rebaseline', this.onRebaseline.bind(this));
- $(this._view).bind('expectfailure', this.onUpdateExpectations.bind(this));
- },
- onNext: function()
- {
- this._view.nextResult();
- },
- onPrevious: function()
- {
- this._view.previousResult();
- },
- _failureInfoList: function()
- {
- var testName = this._view.currentTestName();
- return Object.keys(this._resultsByTest[testName]).map(function(builderName) {
- return results.failureInfoForTestAndBuilder(this._resultsByTest, testName, builderName);
- }.bind(this));
- },
- onRebaseline: function()
- {
- rebaselineWithStatusUpdates(this._failureInfoList(), this._resultsByTest);
- this._view.nextTest();
- },
- onUpdateExpectations: function()
- {
- updateExpectationsWithStatusUpdates(this._failureInfoList());
- }
-});
-
-controllers.ExpectedFailures = base.extends(Object, {
- init: function(model, view, delegate)
- {
- this._model = model;
- this._view = view;
- this._delegate = delegate;
- },
- update: function()
- {
- var expectedFailures = results.expectedFailuresByTest(this._model.resultsByBuilder);
- var failingTestsList = Object.keys(expectedFailures);
-
- $(this._view).empty();
- base.forEachDirectory(failingTestsList, function(label, testsFailingInDirectory) {
- var listItem = new ui.failures.ListItem(label, testsFailingInDirectory);
- this._view.appendChild(listItem);
- $(listItem).bind('examine', function() {
- this.onExamine(testsFailingInDirectory);
- }.bind(this));
- }.bind(this));
- },
- onExamine: function(failingTestsList)
- {
- var resultsView = new ui.results.View({
- fetchResultsURLs: results.fetchResultsURLs
- });
- var failuresByTest = base.filterDictionary(
- results.expectedFailuresByTest(this._model.resultsByBuilder),
- function(key) {
- return failingTestsList.indexOf(key) != -1;
- });
- var controller = new controllers.ResultsDetails(resultsView, failuresByTest);
- this._delegate.showResults(resultsView);
- }
-});
-
-var FailureStreamController = base.extends(Object, {
- _resultsFilter: null,
- _keyFor: function(failureAnalysis) { throw "Not implemented!"; },
- _createFailureView: function(failureAnalysis) { throw "Not implemented!"; },
-
- init: function(model, view, delegate)
- {
- this._model = model;
- this._view = view;
- this._delegate = delegate;
- this._testFailures = new base.UpdateTracker();
- },
- update: function(failureAnalysis)
- {
- var key = this._keyFor(failureAnalysis);
- var failure = this._testFailures.get(key);
- if (!failure) {
- failure = this._createFailureView(failureAnalysis);
- this._view.add(failure);
- $(failure).bind('examine', function() {
- this.onExamine(failure);
- }.bind(this));
- $(failure).bind('rebaseline', function() {
- this.onRebaseline(failure);
- }.bind(this));
- $(failure).bind('expectfailure', function() {
- this.onUpdateExpectations(failure);
- }.bind(this));
- }
- failure.addFailureAnalysis(failureAnalysis);
- this._testFailures.update(key, failure);
- return failure;
- },
- purge: function() {
- this._testFailures.purge(function(failure) {
- failure.dismiss();
- });
- this._testFailures.forEach(function(failure) {
- failure.purge();
- });
- },
- onExamine: function(failures)
- {
- var resultsView = new ui.results.View({
- fetchResultsURLs: results.fetchResultsURLs
- });
-
- var testNameList = failures.testNameList();
- var failuresByTest = base.filterDictionary(
- this._resultsFilter(this._model.resultsByBuilder),
- function(key) {
- return testNameList.indexOf(key) != -1;
- });
-
- var controller = new controllers.ResultsDetails(resultsView, failuresByTest);
- this._delegate.showResults(resultsView);
- },
- _toFailureInfoList: function(failures)
- {
- return base.flattenArray(failures.testNameList().map(model.unexpectedFailureInfoForTestName));
- },
- onRebaseline: function(failures)
- {
- var testNameList = failures.testNameList();
- var failuresByTest = base.filterDictionary(
- this._resultsFilter(this._model.resultsByBuilder),
- function(key) {
- return testNameList.indexOf(key) != -1;
- });
-
- rebaselineWithStatusUpdates(this._toFailureInfoList(failures), failuresByTest);
- },
- onUpdateExpectations: function(failures)
- {
- updateExpectationsWithStatusUpdates(this._toFailureInfoList(failures));
- }
-});
-
-controllers.UnexpectedFailures = base.extends(FailureStreamController, {
- _resultsFilter: results.unexpectedFailuresByTest,
-
- _impliedFirstFailingRevision: function(failureAnalysis)
- {
- return failureAnalysis.newestPassingRevision + 1;
- },
- _keyFor: function(failureAnalysis)
- {
- return failureAnalysis.newestPassingRevision + "+" + failureAnalysis.oldestFailingRevision;
- },
- _createFailureView: function(failureAnalysis)
- {
- var failure = new ui.notifications.FailingTestsSummary();
- model.commitDataListForRevisionRange(this._impliedFirstFailingRevision(failureAnalysis), failureAnalysis.oldestFailingRevision).forEach(function(commitData) {
- var suspiciousCommit = failure.addCommitData(commitData);
- $(suspiciousCommit).bind('rollout', function() {
- this.onRollout(commitData.revision, failure.testNameList());
- }.bind(this));
- $(failure).bind('blame', function() {
- this.onBlame(failure, commitData);
- }.bind(this));
- }, this);
-
- return failure;
- },
- update: function(failureAnalysis)
- {
- var failure = FailureStreamController.prototype.update.call(this, failureAnalysis);
- failure.updateBuilderResults(model.buildersInFlightForRevision(this._impliedFirstFailingRevision(failureAnalysis)));
- },
- length: function()
- {
- return this._testFailures.length();
- },
- onBlame: function(failure, commitData)
- {
- failure.pinToCommitData(commitData);
- $('.action', failure).each(function() {
- // FIXME: This isn't the right way of finding and disabling this action.
- if (this.textContent == 'Blame')
- this.disabled = true;
- });
- },
- onRollout: function(revision, testNameList)
- {
- checkout.rollout(revision, ui.rolloutReasonForTestNameList(testNameList), $.noop, function() {
- // FIXME: We should have a better error UI.
- alert(kCheckoutUnavailableMessage);
- });
- }
-});
-
-controllers.Failures = base.extends(FailureStreamController, {
- _resultsFilter: results.expectedFailuresByTest,
-
- _keyFor: function(failureAnalysis)
- {
- return base.dirName(failureAnalysis.testName);
- },
- _createFailureView: function(failureAnalysis)
- {
- return new ui.notifications.FailingTests();
- },
-});
-
-controllers.FailingBuilders = base.extends(Object, {
- init: function(view, message)
- {
- this._view = view;
- this._message = message;
- this._notification = null;
- },
- hasFailures: function()
- {
- return !!this._notification;
- },
- update: function(failuresList)
- {
- if (Object.keys(failuresList).length == 0) {
- if (this._notification) {
- this._notification.dismiss();
- this._notification = null;
- }
- return;
- }
- if (!this._notification) {
- this._notification = new ui.notifications.BuildersFailing(this._message);
- this._view.add(this._notification);
- }
- // FIXME: We should provide regression ranges for the failing builders.
- // This doesn't seem to happen often enough to worry too much about that, however.
- this._notification.setFailingBuilders(failuresList);
- }
-});
-
-})();

Powered by Google App Engine
This is Rietveld 408576698