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

Side by Side Diff: Tools/GardeningServer/scripts/controllers.js

Issue 358173003: Remove rebaseline logic from GOM (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 11 matching lines...) Expand all
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE. 23 * THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 var controllers = controllers || {}; 26 var controllers = controllers || {};
27 27
28 (function(){ 28 (function(){
29 29
30 var kCheckoutUnavailableMessage = 'Failed! Garden-o-matic needs a local server t o modify your working copy. Please run "webkit-patch garden-o-matic" start the l ocal server.'; 30 var kCheckoutUnavailableMessage = 'Failed! Garden-o-matic needs a local server t o modify your working copy. Please run "webkit-patch garden-o-matic" start the l ocal server.';
31 31
32 // FIXME: Where should this function go?
33 function rebaselineWithStatusUpdates(failureInfoList, resultsByTest)
34 {
35 var statusView = new ui.StatusArea('Rebaseline');
36 var id = statusView.newId();
37
38 var failuresToRebaseline = [];
39 var testNamesLogged = [];
40 failureInfoList.forEach(function(failureInfo) {
41 if (isAnyReftest(failureInfo.testName, resultsByTest)) {
42 if (testNamesLogged.indexOf(failureInfo.testName) == -1) {
43 statusView.addMessage(id, failureInfo.testName + ' is a ref test , skipping');
44 testNamesLogged.push(failureInfo.testName);
45 }
46 } else {
47 failuresToRebaseline.push(failureInfo);
48 if (testNamesLogged.indexOf(failureInfo.testName) == -1) {
49 statusView.addMessage(id, 'Rebaselining ' + failureInfo.testName + '...');
50 testNamesLogged.push(failureInfo.testName);
51 }
52 }
53 });
54
55 if (failuresToRebaseline.length) {
56 // FIXME: checkout.rebaseline() accepts only 3 arguments, we pass 5.
57 checkout.rebaseline(failuresToRebaseline, function(response) {
58 try {
59 var json = JSON.parse(response);
60 if (!json.result_code) {
61 statusView.addFinalMessage(id, 'Rebaseline done! Please comm it locally and land with "git cl dcommit".');
62 } else {
63 statusView.addMessage(id, 'Rebaseline failed (code=' + json. result_code + ')!');
64 statusView.addFinalMessage(id, json.output);
65 }
66 } catch (e) {
67 statusView.addFinalMessage(id, 'Invalid response received: "' + response + '"');
68 }
69 }, function(failureInfo) {
70 statusView.addMessage(id, failureInfo.testName + ' on ' + ui.display NameForBuilder(failureInfo.builderName));
71 }, function() {
72 statusView.addFinalMessage(id, kCheckoutUnavailableMessage);
73 }, function(failureInfo) {
74 statusView.addMessage(id, 'Skipping rebaseline for ' + failureInfo.t estName + ' on ' + ui.displayNameForBuilder(failureInfo.builderName) + ' because we only rebaseline from release bots.');
75 });
76 } else {
77 statusView.addFinalMessage(id, 'No non-reftests left to rebaseline!')
78 }
79 }
80
81 // FIXME: This is duplicated from ui/results.js :(. 32 // FIXME: This is duplicated from ui/results.js :(.
82 function isAnyReftest(testName, resultsByTest) 33 function isAnyReftest(testName, resultsByTest)
83 { 34 {
84 return Object.keys(resultsByTest[testName]).map(function(builder) { 35 return Object.keys(resultsByTest[testName]).map(function(builder) {
85 return resultsByTest[testName][builder]; 36 return resultsByTest[testName][builder];
86 }).some(function(resultNode) { 37 }).some(function(resultNode) {
87 return resultNode.reftest_type && resultNode.reftest_type.length; 38 return resultNode.reftest_type && resultNode.reftest_type.length;
88 }); 39 });
89 } 40 }
90 41
(...skipping 18 matching lines...) Expand all
109 init: function(view, resultsByTest) 60 init: function(view, resultsByTest)
110 { 61 {
111 this._view = view; 62 this._view = view;
112 this._resultsByTest = resultsByTest; 63 this._resultsByTest = resultsByTest;
113 this._view.setResultsByTest(resultsByTest); 64 this._view.setResultsByTest(resultsByTest);
114 65
115 this._view.firstResult(); 66 this._view.firstResult();
116 67
117 $(this._view).bind('next', this.onNext.bind(this)); 68 $(this._view).bind('next', this.onNext.bind(this));
118 $(this._view).bind('previous', this.onPrevious.bind(this)); 69 $(this._view).bind('previous', this.onPrevious.bind(this));
119 $(this._view).bind('rebaseline', this.onRebaseline.bind(this));
120 $(this._view).bind('expectfailure', this.onUpdateExpectations.bind(this) ); 70 $(this._view).bind('expectfailure', this.onUpdateExpectations.bind(this) );
121 }, 71 },
122 onNext: function() 72 onNext: function()
123 { 73 {
124 this._view.nextResult(); 74 this._view.nextResult();
125 }, 75 },
126 onPrevious: function() 76 onPrevious: function()
127 { 77 {
128 this._view.previousResult(); 78 this._view.previousResult();
129 }, 79 },
130 _failureInfoList: function() 80 _failureInfoList: function()
131 { 81 {
132 var testName = this._view.currentTestName(); 82 var testName = this._view.currentTestName();
133 return Object.keys(this._resultsByTest[testName]).map(function(builderNa me) { 83 return Object.keys(this._resultsByTest[testName]).map(function(builderNa me) {
134 return results.failureInfoForTestAndBuilder(this._resultsByTest, tes tName, builderName); 84 return results.failureInfoForTestAndBuilder(this._resultsByTest, tes tName, builderName);
135 }.bind(this)); 85 }.bind(this));
136 }, 86 },
137 onRebaseline: function()
138 {
139 rebaselineWithStatusUpdates(this._failureInfoList(), this._resultsByTest );
140 this._view.nextTest();
141 },
142 onUpdateExpectations: function() 87 onUpdateExpectations: function()
143 { 88 {
144 updateExpectationsWithStatusUpdates(this._failureInfoList()); 89 updateExpectationsWithStatusUpdates(this._failureInfoList());
145 } 90 }
146 }); 91 });
147 92
148 controllers.ExpectedFailures = base.extends(Object, { 93 controllers.ExpectedFailures = base.extends(Object, {
149 init: function(model, view, delegate) 94 init: function(model, view, delegate)
150 { 95 {
151 this._model = model; 96 this._model = model;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 update: function(failureAnalysis) 141 update: function(failureAnalysis)
197 { 142 {
198 var key = this._keyFor(failureAnalysis); 143 var key = this._keyFor(failureAnalysis);
199 var failure = this._testFailures.get(key); 144 var failure = this._testFailures.get(key);
200 if (!failure) { 145 if (!failure) {
201 failure = this._createFailureView(failureAnalysis); 146 failure = this._createFailureView(failureAnalysis);
202 this._view.add(failure); 147 this._view.add(failure);
203 $(failure).bind('examine', function() { 148 $(failure).bind('examine', function() {
204 this.onExamine(failure); 149 this.onExamine(failure);
205 }.bind(this)); 150 }.bind(this));
206 $(failure).bind('rebaseline', function() {
207 this.onRebaseline(failure);
208 }.bind(this));
209 $(failure).bind('expectfailure', function() { 151 $(failure).bind('expectfailure', function() {
210 this.onUpdateExpectations(failure); 152 this.onUpdateExpectations(failure);
211 }.bind(this)); 153 }.bind(this));
212 } 154 }
213 failure.addFailureAnalysis(failureAnalysis); 155 failure.addFailureAnalysis(failureAnalysis);
214 this._testFailures.update(key, failure); 156 this._testFailures.update(key, failure);
215 return failure; 157 return failure;
216 }, 158 },
217 purge: function() { 159 purge: function() {
218 this._testFailures.purge(function(failure) { 160 this._testFailures.purge(function(failure) {
(...skipping 16 matching lines...) Expand all
235 return testNameList.indexOf(key) != -1; 177 return testNameList.indexOf(key) != -1;
236 }); 178 });
237 179
238 var controller = new controllers.ResultsDetails(resultsView, failuresByT est); 180 var controller = new controllers.ResultsDetails(resultsView, failuresByT est);
239 this._delegate.showResults(resultsView); 181 this._delegate.showResults(resultsView);
240 }, 182 },
241 _toFailureInfoList: function(failures) 183 _toFailureInfoList: function(failures)
242 { 184 {
243 return base.flattenArray(failures.testNameList().map(model.unexpectedFai lureInfoForTestName)); 185 return base.flattenArray(failures.testNameList().map(model.unexpectedFai lureInfoForTestName));
244 }, 186 },
245 onRebaseline: function(failures)
246 {
247 var testNameList = failures.testNameList();
248 var failuresByTest = base.filterDictionary(
249 this._resultsFilter(this._model.resultsByBuilder),
250 function(key) {
251 return testNameList.indexOf(key) != -1;
252 });
253
254 rebaselineWithStatusUpdates(this._toFailureInfoList(failures), failuresB yTest);
255 },
256 onUpdateExpectations: function(failures) 187 onUpdateExpectations: function(failures)
257 { 188 {
258 updateExpectationsWithStatusUpdates(this._toFailureInfoList(failures)); 189 updateExpectationsWithStatusUpdates(this._toFailureInfoList(failures));
259 } 190 }
260 }); 191 });
261 192
262 controllers.UnexpectedFailures = base.extends(FailureStreamController, { 193 controllers.UnexpectedFailures = base.extends(FailureStreamController, {
263 _resultsFilter: results.unexpectedFailuresByTest, 194 _resultsFilter: results.unexpectedFailuresByTest,
264 195
265 _impliedFirstFailingRevision: function(failureAnalysis) 196 _impliedFirstFailingRevision: function(failureAnalysis)
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 this._notification = new ui.notifications.BuildersFailing(this._mess age); 255 this._notification = new ui.notifications.BuildersFailing(this._mess age);
325 this._view.add(this._notification); 256 this._view.add(this._notification);
326 } 257 }
327 // FIXME: We should provide regression ranges for the failing builders. 258 // FIXME: We should provide regression ranges for the failing builders.
328 // This doesn't seem to happen often enough to worry too much about that , however. 259 // This doesn't seem to happen often enough to worry too much about that , however.
329 this._notification.setFailingBuilders(failuresList); 260 this._notification.setFailingBuilders(failuresList);
330 } 261 }
331 }); 262 });
332 263
333 })(); 264 })();
OLDNEW
« no previous file with comments | « Tools/GardeningServer/scripts/checkout_unittests.js ('k') | Tools/GardeningServer/scripts/model.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698