diff options
Diffstat (limited to 'Tools/TestResultServer/static-dashboards')
5 files changed, 129 insertions, 41 deletions
diff --git a/Tools/TestResultServer/static-dashboards/builders.js b/Tools/TestResultServer/static-dashboards/builders.js index e9f45f1d9..9d3567423 100644 --- a/Tools/TestResultServer/static-dashboards/builders.js +++ b/Tools/TestResultServer/static-dashboards/builders.js @@ -46,6 +46,9 @@ BuilderMaster.prototype.builderJsonPath = function() }; CHROMIUM_BUILDER_MASTER = new BuilderMaster('Chromium', 'http://build.chromium.org/p/chromium/'); +CHROMIUM_WIN_BUILDER_MASTER = new BuilderMaster('ChromiumWin', 'http://build.chromium.org/p/chromium.win/'); +CHROMIUM_MAC_BUILDER_MASTER = new BuilderMaster('ChromiumMac', 'http://build.chromium.org/p/chromium.mac/'); +CHROMIUM_LINUX_BUILDER_MASTER = new BuilderMaster('ChromiumLinux', 'http://build.chromium.org/p/chromium.linux/'); CHROMIUMOS_BUILDER_MASTER = new BuilderMaster('ChromiumChromiumOS', 'http://build.chromium.org/p/chromium.chromiumos/'); CHROMIUM_GPU_BUILDER_MASTER = new BuilderMaster('ChromiumGPU', 'http://build.chromium.org/p/chromium.gpu/'); CHROMIUM_GPU_FYI_BUILDER_MASTER = new BuilderMaster('ChromiumGPUFYI', 'http://build.chromium.org/p/chromium.gpu.fyi/'); @@ -61,20 +64,36 @@ var LEGACY_BUILDER_MASTERS_TO_GROUPS = { 'webkit.org': '@ToT - webkit.org' }; -function BuilderGroup(isToTWebKit, builders) +function BuilderGroup(isToTWebKit) { this.isToTWebKit = isToTWebKit; // Map of builderName (the name shown in the waterfall) to builderPath (the // path used in the builder's URL) this.builders = {}; + this.groups = 0; + this.expectedGroups = 0; +} + +BuilderGroup.prototype.setbuilder = function(builder, flags) { + this.builders[builder] = builder.replace(/[ .()]/g, '_'); + // FIXME: Remove this at some point, we don't actually use DEFAULT_BUILDER + // in any meaningful way anymore. We always just default to the + // first builder in alphabetical order. + if (flags & BuilderGroup.DEFAULT_BUILDER) + this.defaultBuilder = builder; +}; + +BuilderGroup.prototype.append = function(builders) { builders.forEach(function(builderAndFlags) { var builder = builderAndFlags[0]; var flags = builderAndFlags[1]; - - this.builders[builder] = builder.replace(/[ .()]/g, '_'); - if (flags & BuilderGroup.DEFAULT_BUILDER) - this.defaultBuilder = builder; + this.setbuilder(builder, flags); }, this); + this.groups += 1; +}; + +BuilderGroup.prototype.loaded = function() { + return this.groups >= this.expectedGroups; } BuilderGroup.prototype.setup = function() @@ -98,22 +117,29 @@ function associateBuildersWithMaster(builders, master) }); } -function requestBuilderList(builderGroups, builderFilter, master, groupName, groupEnum) +function doXHR(url, onLoad, builderGroups, groupName) { - var onLoad = partial(onBuilderListLoad, builderGroups, builderFilter, master, groupName, groupEnum); var xhr = new XMLHttpRequest(); - var url = master.builderJsonPath(); xhr.open('GET', url, true); xhr.onload = function() { if (xhr.status == 200) onLoad(JSON.parse(xhr.response)); else - onErrorLoadingBuilderList(url); + onErrorLoadingBuilderList(url, builderGroups, groupName); }; - xhr.onerror = function() { onErrorLoadingBuilderList(url); }; + xhr.onerror = function() { onErrorLoadingBuilderList(url, builderGroups, groupName); }; xhr.send(); } +function requestBuilderList(builderGroups, builderFilter, master, groupName, groupEnum, builderGroup) +{ + if (!builderGroups[groupName]) + builderGroups[groupName] = builderGroup; + var onLoad = partial(onBuilderListLoad, builderGroups, builderFilter, master, groupName, groupEnum); + doXHR(master.builderJsonPath(), onLoad, builderGroups, groupName); + builderGroups[groupName].expectedGroups += 1; +} + function isChromiumDepsGpuTestRunner(builder) { return true; @@ -179,56 +205,70 @@ function onBuilderListLoad(builderGroups, builderFilter, master, groupName, grou { var builders = generateBuildersFromBuilderList(Object.keys(json), builderFilter); associateBuildersWithMaster(builders, master); - builderGroups[groupName] = new BuilderGroup(groupEnum, builders); - g_handleBuildersListLoaded(); + builderGroups[groupName].append(builders); + if (builderGroups[groupName].loaded()) + g_handleBuildersListLoaded(); } -function onErrorLoadingBuilderList(url) +function onErrorLoadingBuilderList(url, builderGroups, groupName) { - alert('Could not load list of builders from ' + url + '. Try reloading.'); + builderGroups[groupName].groups += 1; + console.log('Could not load list of builders from ' + url + '. Try reloading.'); } -function loadBuildersList(group, testType) { +function loadBuildersList(groupName, testType) { if (testType == 'gpu_tests') { - switch(group) { + switch(groupName) { case '@DEPS - chromium.org': - requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumDepsGpuTestRunner, CHROMIUM_GPU_BUILDER_MASTER, group, BuilderGroup.DEPS_WEBKIT); + var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT); + requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumDepsGpuTestRunner, CHROMIUM_GPU_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup); break; case '@DEPS FYI - chromium.org': - requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumDepsFyiGpuTestRunner, CHROMIUM_GPU_FYI_BUILDER_MASTER, group, BuilderGroup.DEPS_WEBKIT); + var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT); + requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumDepsFyiGpuTestRunner, CHROMIUM_GPU_FYI_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup); break; case '@ToT - chromium.org': - requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumTipOfTreeGpuTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, group, BuilderGroup.TOT_WEBKIT); + var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT); + requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumTipOfTreeGpuTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.TOT_WEBKIT, builderGroup); break; } } else if (testType == 'layout-tests') { - switch(group) { + switch(groupName) { case '@ToT - chromium.org': - requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitTipOfTreeTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, group, BuilderGroup.TOT_WEBKIT); + var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT); + requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitTipOfTreeTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.TOT_WEBKIT, builderGroup); break; case '@ToT - webkit.org': - requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isWebkitTestRunner, WEBKIT_BUILDER_MASTER, group, BuilderGroup.TOT_WEBKIT); + var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT); + requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isWebkitTestRunner, WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.TOT_WEBKIT, builderGroup); break; case '@DEPS - chromium.org': - requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitDepsTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, group, BuilderGroup.DEPS_WEBKIT); + var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT); + requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitDepsTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup); break; } } else { - switch(group) { + switch(groupName) { case '@DEPS - chromium.org': - requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsGTestRunner, CHROMIUM_BUILDER_MASTER, group, BuilderGroup.DEPS_WEBKIT); + var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT); + requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsGTestRunner, CHROMIUM_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup); + requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsGTestRunner, CHROMIUM_WIN_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup); + requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsGTestRunner, CHROMIUM_MAC_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup); + requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsGTestRunner, CHROMIUM_LINUX_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup); break; case '@DEPS CrOS - chromium.org': - requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsCrosGTestRunner, CHROMIUMOS_BUILDER_MASTER, group, BuilderGroup.DEPS_WEBKIT); + var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT); + requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsCrosGTestRunner, CHROMIUMOS_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup); break; case '@ToT - chromium.org': - requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumTipOfTreeGTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, group, BuilderGroup.TOT_WEBKIT); + var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT); + requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumTipOfTreeGTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.TOT_WEBKIT, builderGroup); break; } } diff --git a/Tools/TestResultServer/static-dashboards/dashboard_base.js b/Tools/TestResultServer/static-dashboards/dashboard_base.js index 34e546e4d..9d47a8f9e 100644 --- a/Tools/TestResultServer/static-dashboards/dashboard_base.js +++ b/Tools/TestResultServer/static-dashboards/dashboard_base.js @@ -542,7 +542,8 @@ function pathToBuilderResultsFile(builderName) } // FIXME: Make the dashboard understand different ports' expectations files. -var CHROMIUM_EXPECTATIONS_URL = 'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/chromium/test_expectations.txt'; +var CHROMIUM_EXPECTATIONS_URL = 'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/chromium/TestExpectations'; +var LEGACY_CHROMIUM_EXPECTATIONS_URL = 'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/chromium/test_expectations.txt'; function requestExpectationsFile() { @@ -552,7 +553,13 @@ function requestExpectationsFile() handleResourceLoad(); }, function() { - console.error('Could not load expectations file from ' + CHROMIUM_EXPECTATIONS_URL); + request(LEGACY_CHROMIUM_EXPECTATIONS_URL, function(xhr) { + g_waitingOnExpectations = false; + g_expectations = xhr.responseText; + handleResourceLoad(); + }, function() { + console.error('Could not load expectations file from ' + CHROMIUM_EXPECTATIONS_URL + ' or ' + LEGACY_CHROMIUM_EXPECTATIONS_URL); + }); }); } diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js index 0e6311a07..59b2ba946 100644 --- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js +++ b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js @@ -39,7 +39,7 @@ var TEST_RESULTS_BASE_PATH = 'http://build.chromium.org/f/chromium/layout_test_r var GPU_RESULTS_BASE_PATH = 'http://chromium-browser-gpu-tests.commondatastorage.googleapis.com/runs/' // FIXME: These platform names should probably be changed to match the directories in LayoutTests/platform -// instead of matching the values we use in the test_expectations.txt file. +// instead of matching the values we use in the TestExpectations file. var PLATFORMS = ['LION', 'SNOWLEOPARD', 'LEOPARD', 'XP', 'VISTA', 'WIN7', 'LUCID', 'APPLE_LION', 'APPLE_LEOPARD', 'APPLE_SNOWLEOPARD', 'APPLE_XP', 'APPLE_WIN7', 'GTK_LINUX', 'QT_LINUX']; var PLATFORM_UNIONS = { 'MAC': ['LEOPARD', 'SNOWLEOPARD', 'LION'], @@ -211,7 +211,7 @@ var g_perBuilderFailures = {}; // but have for that builder. var g_perBuilderWithExpectationsButNoFailures = {}; // Map of builder to arrays of paths that are skipped. This shows the raw -// path used in test_expectations.txt rather than the test path since we +// path used in TestExpectations rather than the test path since we // don't actually have any data here for skipped tests. var g_perBuilderSkippedPaths = {}; // Maps test path to an array of {builder, testResults} objects. @@ -820,7 +820,7 @@ function processMissingAndExtraExpectations(resultsForTest) extraExpectations = expectationsArray.filter( function(element) { // FIXME: Once all the FAIL lines are removed from - // test_expectations.txt, delete all the legacyExpectationsSemantics + // TestExpectations, delete all the legacyExpectationsSemantics // code. if (g_currentState.legacyExpectationsSemantics) { if (element == 'FAIL') { @@ -841,7 +841,7 @@ function processMissingAndExtraExpectations(resultsForTest) for (var i = 0; i < expectationsArray.length; i++) { var expectation = expectationsArray[i]; // FIXME: Once all the FAIL lines are removed from - // test_expectations.txt, delete all the legacyExpectationsSemantics + // TestExpectations, delete all the legacyExpectationsSemantics // code. if (g_currentState.legacyExpectationsSemantics) { if (expectation == 'FAIL') { @@ -1076,7 +1076,7 @@ function htmlForTestsWithExpectationsButNoFailures(builder) var tests = g_perBuilderWithExpectationsButNoFailures[builder]; var skippedPaths = g_perBuilderSkippedPaths[builder]; var showUnexpectedPassesLink = linkHTMLToToggleState('showUnexpectedPasses', 'tests that have not failed in last ' + g_resultsByBuilder[builder].buildNumbers.length + ' runs'); - var showSkippedLink = linkHTMLToToggleState('showSkipped', 'skipped tests in test_expectations.txt'); + var showSkippedLink = linkHTMLToToggleState('showSkipped', 'skipped tests in TestExpectations'); var html = ''; diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js index 0da199725..bc2bc4d08 100644 --- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js +++ b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js @@ -169,7 +169,7 @@ test('platformAndBuildType', 88, function() { runPlatformAndBuildTypeTest('Chromium Linux Release (Tests)', 'LUCID', 'RELEASE'); runPlatformAndBuildTypeTest('Chromium Mac Release (Tests)', 'SNOWLEOPARD', 'RELEASE'); - // FIXME: These platforms should match whatever we use in the test_expectations.txt format. + // FIXME: These platforms should match whatever we use in the TestExpectations format. runPlatformAndBuildTypeTest('Lion Release (Tests)', 'APPLE_LION', 'RELEASE'); runPlatformAndBuildTypeTest('Lion Debug (Tests)', 'APPLE_LION', 'DEBUG'); runPlatformAndBuildTypeTest('Leopard Intel Release (Tests)', 'APPLE_LEOPARD', 'RELEASE'); @@ -630,18 +630,57 @@ test('addBuilderLoadErrors', 1, function() { test('builderGroupIsToTWebKitAttribute', 2, function() { var dummyMaster = new BuilderMaster('dummy.org', 'http://build.dummy.org'); var testBuilderGroups = { - '@ToT - dummy.org': null, - '@DEPS - dummy.org': null, + '@ToT - dummy.org': new BuilderGroup(BuilderGroup.TOT_WEBKIT), + '@DEPS - dummy.org': new BuilderGroup(BuilderGroup.DEPS_WEBKIT), } - var testJSONData = "{ \"Dummy Builder 1\": null, \"Dummy Builder 2\": null }"; + testBuilderGroups['@ToT - dummy.org'].expectedGroups = 1; + testBuilderGroups['@DEPS - dummy.org'].expectedGroups = 1; + var testJSONData = "{ \"Dummy Builder 1\": null, \"Dummy Builder 2\": null }"; onBuilderListLoad(testBuilderGroups, function() { return true; }, dummyMaster, '@ToT - dummy.org', BuilderGroup.TOT_WEBKIT, JSON.parse(testJSONData)); equal(testBuilderGroups['@ToT - dummy.org'].isToTWebKit, true); - onBuilderListLoad(testBuilderGroups, function() { return true; }, dummyMaster, '@DEPS - dummy.org', BuilderGroup.DEPS_WEBKIT, JSON.parse(testJSONData)); equal(testBuilderGroups['@DEPS - dummy.org'].isToTWebKit, false); }); +test('builderGroupExpectedGroups', 4, function() { + var dummyMaster = new BuilderMaster('dummy.org', 'http://build.dummy.org'); + var testBuilderGroups = { + '@ToT - dummy.org': new BuilderGroup(BuilderGroup.TOT_WEBKIT), + } + testBuilderGroups['@ToT - dummy.org'].expectedGroups = 3; + + var testJSONData = "{ \"Dummy Builder 1\": null }"; + equal(testBuilderGroups['@ToT - dummy.org'].expectedGroups, 3); + onBuilderListLoad(testBuilderGroups, function() { return true; }, dummyMaster, '@ToT - dummy.org', BuilderGroup.TOT_WEBKIT, JSON.parse(testJSONData)); + equal(testBuilderGroups['@ToT - dummy.org'].groups, 1); + var testJSONData = "{ \"Dummy Builder 2\": null }"; + onBuilderListLoad(testBuilderGroups, function() { return true; }, dummyMaster, '@ToT - dummy.org', BuilderGroup.TOT_WEBKIT, JSON.parse(testJSONData)); + equal(testBuilderGroups['@ToT - dummy.org'].groups, 2); + onErrorLoadingBuilderList('http://build.dummy.org', testBuilderGroups, '@ToT - dummy.org'); + equal(testBuilderGroups['@ToT - dummy.org'].groups, 3); +}); + +test('requestBuilderListAddsBuilderGroupEntry', 2, function() { + var testBuilderGroups = { '@ToT - dummy.org': null }; + + var oldDoXHR = doXHR; + try { + doXHR = function() {}; + var builderFilter = null; + var master = { builderJsonPath: function() {} }; + var groupName = '@ToT - dummy.org'; + var groupEnum = null; + var builderGroup = { expectedGroups: 0 }; + requestBuilderList(testBuilderGroups, builderFilter, master, groupName, groupEnum, builderGroup); + + equal(testBuilderGroups['@ToT - dummy.org'], builderGroup); + equal(testBuilderGroups['@ToT - dummy.org'].expectedGroups, 1); + } finally { + doXHR = oldDoXHR; + } +}) + test('sortTests', 4, function() { var test1 = createResultsObjectForTest('foo/test1.html', 'dummyBuilder'); var test2 = createResultsObjectForTest('foo/test2.html', 'dummyBuilder'); diff --git a/Tools/TestResultServer/static-dashboards/run-unittests.html b/Tools/TestResultServer/static-dashboards/run-unittests.html index b7451b5f0..5fd81d5ad 100644 --- a/Tools/TestResultServer/static-dashboards/run-unittests.html +++ b/Tools/TestResultServer/static-dashboards/run-unittests.html @@ -52,9 +52,11 @@ function g_handleBuildersListLoaded() {}; <script> window.location.href = '#useTestData=true'; -var builderGroup = '@ToT - chromium.org'; +var groupName = '@ToT - chromium.org'; var builders = {'Webkit Linux': '', 'Webkit Linux (dbg)': '', 'Webkit Mac10.5': '', 'Webkit Win': ''}; -onBuilderListLoad(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitTipOfTreeTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, builderGroup, BuilderGroup.TOT_WEBKIT, builders); +LAYOUT_TESTS_BUILDER_GROUPS[groupName] = new BuilderGroup(BuilderGroup.TOT_WEBKIT); +LAYOUT_TESTS_BUILDER_GROUPS[groupName].expectedGroups = 4; +onBuilderListLoad(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitTipOfTreeTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.TOT_WEBKIT, builders); initBuilders(); </script> |