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

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

Issue 173133003: Convert garden-o-matic guts over to promises where appropriate (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: update to ToT Created 6 years, 10 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 for (var i = individualBuilderStatus.cachedBuilds.length - 1; i >= 0; --i) { 64 for (var i = individualBuilderStatus.cachedBuilds.length - 1; i >= 0; --i) {
65 var buildNumber = individualBuilderStatus.cachedBuilds[i]; 65 var buildNumber = individualBuilderStatus.cachedBuilds[i];
66 if (individualBuilderStatus.currentBuilds.indexOf(buildNumber) == -1) 66 if (individualBuilderStatus.currentBuilds.indexOf(buildNumber) == -1)
67 return buildNumber; 67 return buildNumber;
68 } 68 }
69 69
70 return null; 70 return null;
71 } 71 }
72 72
73 var g_buildInfoCache = new base.AsynchronousCache(function(key, callback) { 73 var g_buildInfoCache = new base.AsynchronousCache(function(key) {
74 var explodedKey = key.split('\n'); 74 var explodedKey = key.split('\n');
75 net.json(urlForBuildInfo(explodedKey[0], explodedKey[1])).then(callback); 75 return net.json(urlForBuildInfo(explodedKey[0], explodedKey[1]));
76 }); 76 });
77 77
78 builders.clearBuildInfoCache = function() 78 builders.clearBuildInfoCache = function()
79 { 79 {
80 g_buildInfoCache.clear(); 80 g_buildInfoCache.clear();
81 }; 81 };
82 82
83 function fetchMostRecentBuildInfoByBuilder(callback) 83 function fetchMostRecentBuildInfoByBuilder()
84 { 84 {
85 net.json(config.buildConsoleURL + '/json/builders').then(function(builderSta tus) { 85 var buildInfoByBuilder = {};
86 var buildInfoByBuilder = {}; 86 var requestPromises = [];
87 return net.json(config.buildConsoleURL + '/json/builders').then(function(bui lderStatus) {
87 var builderNames = Object.keys(builderStatus); 88 var builderNames = Object.keys(builderStatus);
88 var requestTracker = new base.RequestTracker(builderNames.length, callba ck, [buildInfoByBuilder]);
89 builderNames.forEach(function(builderName) { 89 builderNames.forEach(function(builderName) {
90 if (!config.builderApplies(builderName)) { 90 if (!config.builderApplies(builderName))
91 requestTracker.requestComplete();
92 return; 91 return;
93 }
94 92
95 var buildNumber = mostRecentCompletedBuildNumber(builderStatus[build erName]); 93 var buildNumber = mostRecentCompletedBuildNumber(builderStatus[build erName]);
96 if (!buildNumber) { 94 if (!buildNumber)
97 buildInfoByBuilder[builderName] = null;
98 requestTracker.requestComplete();
99 return; 95 return;
100 }
101 96
102 g_buildInfoCache.get(builderName + '\n' + buildNumber, function(buil dInfo) { 97 requestPromises.push(g_buildInfoCache.get(builderName + '\n' + build Number)
103 buildInfoByBuilder[builderName] = buildInfo; 98 .then(function(buildInfo) {
104 requestTracker.requestComplete(); 99 buildInfoByBuilder[builderName] = buildInfo ;
105 }); 100 }));
101 });
102
103 return Promise.all(requestPromises).then(function() {
104 return buildInfoByBuilder;
106 }); 105 });
107 }); 106 });
108 } 107 }
109 108
110 builders.buildersFailingNonLayoutTests = function(callback) 109 builders.buildersFailingNonLayoutTests = function()
111 { 110 {
112 fetchMostRecentBuildInfoByBuilder(function(buildInfoByBuilder) { 111 return fetchMostRecentBuildInfoByBuilder().then(function(buildInfoByBuilder) {
113 var failureList = {}; 112 var failureList = {};
114 $.each(buildInfoByBuilder, function(builderName, buildInfo) { 113 $.each(buildInfoByBuilder, function(builderName, buildInfo) {
115 if (!buildInfo) 114 if (!buildInfo)
116 return; 115 return;
117 var failures = failingSteps(buildInfo); 116 var failures = failingSteps(buildInfo);
118 if (failures.length) 117 if (failures.length)
119 failureList[builderName] = failures.map(function(failure) { retu rn failure.name; }); 118 failureList[builderName] = failures.map(function(failure) { retu rn failure.name; });
120 }); 119 });
121 callback(failureList); 120 return failureList;
122 }); 121 });
123 }; 122 };
124 123
125 builders.mostRecentBuildForBuilder = function(builderName, callback) { 124 builders.mostRecentBuildForBuilder = function(builderName) {
126 net.json(config.buildConsoleURL + '/json/builders/' + builderName).then(func tion(builderStatus) { 125 return net.json(config.buildConsoleURL + '/json/builders/' + builderName).th en(function(builderStatus) {
127 var cachedBuilds = builderStatus.cachedBuilds; 126 var cachedBuilds = builderStatus.cachedBuilds;
128 var mostRecentBuild = Math.max.apply(Math, cachedBuilds); 127 var mostRecentBuild = Math.max.apply(Math, cachedBuilds);
129 callback(mostRecentBuild); 128 return mostRecentBuild;
130 }); 129 });
131 }; 130 };
132 131
133 })(); 132 })();
OLDNEW
« no previous file with comments | « Tools/GardeningServer/scripts/base_unittests.js ('k') | Tools/GardeningServer/scripts/builders_unittests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698