diff options
Diffstat (limited to 'Tools/TestResultServer/static-dashboards/loader.js')
-rw-r--r-- | Tools/TestResultServer/static-dashboards/loader.js | 85 |
1 files changed, 53 insertions, 32 deletions
diff --git a/Tools/TestResultServer/static-dashboards/loader.js b/Tools/TestResultServer/static-dashboards/loader.js index c74890161..9504e9317 100644 --- a/Tools/TestResultServer/static-dashboards/loader.js +++ b/Tools/TestResultServer/static-dashboards/loader.js @@ -31,13 +31,13 @@ var loader = loader || {}; (function() { -var TEST_RESULTS_SERVER = 'http://test-results.appspot.com/'; +var TEST_RESULTS_SERVER = 'http://webkit-test-results.appspot.com/'; var CHROMIUM_EXPECTATIONS_URL = 'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/chromium/TestExpectations'; function pathToBuilderResultsFile(builderName) { return TEST_RESULTS_SERVER + 'testfile?builder=' + builderName + '&master=' + builderMaster(builderName).name + - '&testtype=' + g_crossDashboardState.testType + '&name='; + '&testtype=' + g_history.crossDashboardState.testType + '&name='; } loader.request = function(url, success, error, opt_isBinaryData) @@ -64,6 +64,32 @@ loader.Loader = function() this._loadResultsFiles, this._loadExpectationsFiles, ]; + + this._buildersThatFailedToLoad = []; + this._staleBuilders = []; + this._errors = new ui.Errors(); + // TODO(jparent): Pass in the appropriate history obj per db. + this._history = g_history; +} + +// TODO(aboxhall): figure out whether this is a performance bottleneck and +// change calling code to understand the trie structure instead if necessary. +loader.Loader._flattenTrie = function(trie, prefix) +{ + var result = {}; + for (var name in trie) { + var fullName = prefix ? prefix + "/" + name : name; + var data = trie[name]; + if ("results" in data) + result[fullName] = data; + else { + var partialResult = loader.Loader._flattenTrie(data, fullName); + for (var key in partialResult) { + result[key] = partialResult[key]; + } + } + } + return result; } loader.Loader.prototype = { @@ -71,34 +97,36 @@ loader.Loader.prototype = { { this._loadNext(); }, + showErrors: function() + { + this._errors.show(); + }, _loadNext: function() { var loadingStep = this._loadingSteps.shift(); if (!loadingStep) { - resourceLoadingComplete(); + this._addErrors(); + this._history.initialize(); return; } loadingStep.apply(this); }, _loadBuildersList: function() { - loadBuildersList(g_crossDashboardState.group, g_crossDashboardState.testType); - initBuilders(); + loadBuildersList(currentBuilderGroupName(), this._history.crossDashboardState.testType); this._loadNext(); }, _loadResultsFiles: function() { - parseParameters(); - - for (var builderName in g_builders) + for (var builderName in currentBuilders()) this._loadResultsFileForBuilder(builderName); }, _loadResultsFileForBuilder: function(builderName) { var resultsFilename; - if (isTreeMap()) + if (history.isTreeMap()) resultsFilename = 'times_ms.json'; - else if (g_crossDashboardState.showAllRuns) + else if (this._history.crossDashboardState.showAllRuns) resultsFilename = 'results.json'; else resultsFilename = 'results-small.json'; @@ -114,7 +142,7 @@ loader.Loader.prototype = { }, _handleResultsFileLoaded: function(builderName, fileData) { - if (isTreeMap()) + if (history.isTreeMap()) this._processTimesJSONData(builderName, fileData); else this._processResultsJSONData(builderName, fileData); @@ -151,10 +179,10 @@ loader.Loader.prototype = { continue; if ((Date.now() / 1000) - lastRunSeconds > ONE_DAY_SECONDS) - g_staleBuilders.push(builderName); + this._staleBuilders.push(builderName); if (json_version >= 4) - builds[builderName][TESTS_KEY] = flattenTrie(builds[builderName][TESTS_KEY]); + builds[builderName][TESTS_KEY] = loader.Loader._flattenTrie(builds[builderName][TESTS_KEY]); g_resultsByBuilder[builderName] = builds[builderName]; } }, @@ -163,26 +191,11 @@ loader.Loader.prototype = { console.error('Failed to load results file for ' + builderName + '.'); // FIXME: loader shouldn't depend on state defined in dashboard_base.js. - g_buildersThatFailedToLoad.push(builderName); + this._buildersThatFailedToLoad.push(builderName); // Remove this builder from builders, so we don't try to use the // data that isn't there. - delete g_builders[builderName]; - - // Change the default builder name if it has been deleted. - if (g_defaultBuilderName == builderName) { - g_defaultBuilderName = null; - for (var availableBuilderName in g_builders) { - g_defaultBuilderName = availableBuilderName; - g_defaultDashboardSpecificStateValues.builder = availableBuilderName; - break; - } - if (!g_defaultBuilderName) { - var error = 'No tests results found for ' + g_crossDashboardState.testType + '. Reload the page to try fetching it again.'; - console.error(error); - addError(error); - } - } + delete currentBuilders()[builderName]; // Proceed as if the resource had loaded. this._handleResourceLoad(); @@ -194,7 +207,7 @@ loader.Loader.prototype = { }, _haveResultsFilesLoaded: function() { - for (var builder in g_builders) { + for (var builder in currentBuilders()) { if (!g_resultsByBuilder[builder]) return false; } @@ -202,7 +215,7 @@ loader.Loader.prototype = { }, _loadExpectationsFiles: function() { - if (!isFlakinessDashboard() && !g_crossDashboardState.useTestData) { + if (!isFlakinessDashboard() && !this._history.crossDashboardState.useTestData) { this._loadNext(); return; } @@ -232,6 +245,14 @@ loader.Loader.prototype = { partial(function(platformName, xhr) { console.error('Could not load expectations file for ' + platformName); }, platformWithExpectations)); + }, + _addErrors: function() + { + if (this._buildersThatFailedToLoad.length) + this._errors.addError('ERROR: Failed to get data from ' + this._buildersThatFailedToLoad.toString() +'.'); + + if (this._staleBuilders.length) + this._errors.addError('ERROR: Data from ' + this._staleBuilders.toString() + ' is more than 1 day stale.'); } } |