summaryrefslogtreecommitdiff
path: root/Tools/TestResultServer/static-dashboards
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/TestResultServer/static-dashboards')
-rw-r--r--Tools/TestResultServer/static-dashboards/builders.js94
-rw-r--r--Tools/TestResultServer/static-dashboards/dashboard_base.js11
-rw-r--r--Tools/TestResultServer/static-dashboards/flakiness_dashboard.js10
-rw-r--r--Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js49
-rw-r--r--Tools/TestResultServer/static-dashboards/run-unittests.html6
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>