Merge from Chromium at DEPS revision r213371
This commit was generated by merge_to_master.py.
Change-Id: I03fae1c1dae6e5de12e56e0a6c3780252291bfae
diff --git a/Tools/TestResultServer/model/datastorefile.py b/Tools/TestResultServer/model/datastorefile.py
index 8dca34d..6161c37 100755
--- a/Tools/TestResultServer/model/datastorefile.py
+++ b/Tools/TestResultServer/model/datastorefile.py
@@ -32,7 +32,7 @@
from google.appengine.ext import blobstore
from google.appengine.ext import db
-MAX_DATA_ENTRY_PER_FILE = 20
+MAX_DATA_ENTRY_PER_FILE = 30
MAX_ENTRY_LEN = 1000 * 1000
diff --git a/Tools/TestResultServer/model/jsonresults.py b/Tools/TestResultServer/model/jsonresults.py
index 35b56c9..9976b67 100755
--- a/Tools/TestResultServer/model/jsonresults.py
+++ b/Tools/TestResultServer/model/jsonresults.py
@@ -449,7 +449,7 @@
aggregated_json[builder][FAILURE_MAP_KEY] = CHAR_TO_FAILURE
is_debug_builder = re.search(r"(Debug|Dbg)", builder, re.I)
- run_time_pruning_threshold = 2 * JSON_RESULTS_MIN_TIME if is_debug_builder else JSON_RESULTS_MIN_TIME
+ run_time_pruning_threshold = 3 * JSON_RESULTS_MIN_TIME if is_debug_builder else JSON_RESULTS_MIN_TIME
cls._normalize_results(aggregated_json[builder][TESTS_KEY], num_runs, run_time_pruning_threshold)
return cls._generate_file_data(aggregated_json, sort_keys), 200
diff --git a/Tools/TestResultServer/model/jsonresults_unittest.py b/Tools/TestResultServer/model/jsonresults_unittest.py
index def7004..cef590b 100755
--- a/Tools/TestResultServer/model/jsonresults_unittest.py
+++ b/Tools/TestResultServer/model/jsonresults_unittest.py
@@ -848,7 +848,7 @@
{"builds": ["2", "1"],
"tests": {"001.html": {
"results": [[200, PASS]],
- "times": [[200, 2 * jsonresults.JSON_RESULTS_MIN_TIME]]},
+ "times": [[200, 3 * jsonresults.JSON_RESULTS_MIN_TIME]]},
"002.html": {
"results": [[10, TEXT]],
"times": [[10, 0]]}}},
@@ -867,7 +867,7 @@
{"builds": ["3", "2", "1"],
"tests": {"001.html": {
"results": [[201, PASS]],
- "times": [[1, 1], [200, 2 * jsonresults.JSON_RESULTS_MIN_TIME]]},
+ "times": [[1, 1], [200, 3 * jsonresults.JSON_RESULTS_MIN_TIME]]},
"002.html": {
"results": [[1, PASS], [10, TEXT]],
"times": [[11, 0]]}}})
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js
index c944b4c..b426032 100644
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js
+++ b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js
@@ -31,7 +31,6 @@
//////////////////////////////////////////////////////////////////////////////
var FORWARD = 'forward';
var BACKWARD = 'backward';
-var GTEST_MODIFIERS = ['FLAKY', 'FAILS', 'MAYBE', 'DISABLED'];
var TEST_URL_BASE_PATH_FOR_BROWSING = 'http://src.chromium.org/viewvc/blink/trunk/LayoutTests/';
var TEST_URL_BASE_PATH_FOR_XHR = 'http://src.chromium.org/blink/trunk/LayoutTests/';
var TEST_RESULTS_BASE_PATH = 'http://build.chromium.org/f/chromium/layout_test_results/';
@@ -110,7 +109,8 @@
function() {
// Get all possible headers since the actual used set of headers
// depends on the values in historyInstance.dashboardSpecificState, which are currently being set.
- var headers = tableHeaders(true);
+ var getAllTableHeaders = true;
+ var headers = tableHeaders(getAllTableHeaders);
for (var i = 0; i < headers.length; i++) {
if (value == sortColumnFromTableHeader(headers[i]))
return true;
@@ -315,29 +315,16 @@
return individualTestsForSubstringList();
}
-function substringList()
+function splitTestList()
{
- // Convert windows slashes to unix slashes.
- var tests = g_history.dashboardSpecificState.tests.replace(/\\/g, '/');
- var separator = string.contains(tests, ' ') ? ' ' : ',';
- var testList = tests.split(separator);
-
- if (g_history.isLayoutTestResults())
- return testList;
-
- var testListWithoutModifiers = [];
- testList.forEach(function(path) {
- GTEST_MODIFIERS.forEach(function(modifier) {
- path = path.replace('.' + modifier + '_', '.');
- });
- testListWithoutModifiers.push(path);
- });
- return testListWithoutModifiers;
+ // Convert windows slashes to unix slashes and spaces/newlines to commas.
+ var tests = g_history.dashboardSpecificState.tests.replace(/\\/g, '/').replace('\n', ' ').replace(/\s+/g, ',');
+ return tests.split(',');
}
function individualTestsForSubstringList()
{
- var testList = substringList();
+ var testList = splitTestList();
// If listing a lot of tests, assume you've passed in an explicit list of tests
// instead of patterns to match against. The matching code below is super slow.
//
@@ -662,19 +649,15 @@
return html;
}
-function htmlForSingleTestRow(test)
+function htmlForSingleTestRow(test, showBuilderNames)
{
var headers = tableHeaders();
var html = '';
for (var i = 0; i < headers.length; i++) {
var header = headers[i];
if (string.startsWith(header, 'test') || string.startsWith(header, 'builder')) {
- // If isCrossBuilderView() is true, we're just viewing a single test
- // with results for many builders, so the first column is builder names
- // instead of test paths.
- var testCellClassName = 'test-link' + (isCrossBuilderView() ? ' builder-name' : '');
- var testCellHTML = isCrossBuilderView() ? test.builder : '<span class="link" onclick="g_history.setQueryParameter(\'tests\',\'' + test.test +'\');">' + test.test + '</span>';
-
+ var testCellClassName = 'test-link' + (showBuilderNames ? ' builder-name' : '');
+ var testCellHTML = showBuilderNames ? test.builder : '<span class="link" onclick="g_history.setQueryParameter(\'tests\',\'' + test.test +'\');">' + test.test + '</span>';
html += '<tr><td class="' + testCellClassName + '">' + testCellHTML;
} else if (string.startsWith(header, 'bugs'))
// FIXME: linkify bugs.
@@ -812,7 +795,8 @@
var shownBuilders = [];
for (var j = 0; j < testResults.length; j++) {
shownBuilders.push(testResults[j].builder);
- html += htmlForSingleTestRow(testResults[j]);
+ var showBuilderNames = true;
+ html += htmlForSingleTestRow(testResults[j], showBuilderNames);
}
var skippedBuilders = []
@@ -1061,7 +1045,7 @@
expectationsContainer.appendChild(container);
for (var i = 0; i < failureIndexes.length; i++) {
// FIXME: This doesn't seem to work anymore. Did the paths change?
- // Once that's resolved, see if we need to try each GTEST_MODIFIERS prefix as well.
+ // Once that's resolved, see if we need to try each gtest modifier prefix as well.
var buildNumber = g_resultsByBuilder[builder].buildNumbers[failureIndexes[i]];
var pathToLog = builders.master(builder).logPath(builder, buildNumber) + pathToFailureLog(test);
appendNonWebKitResults(container, pathToLog, 'non-webkit-results');
@@ -1276,8 +1260,9 @@
var testsHTML = '';
if (filteredResults.length) {
var tableRowsHTML = '';
+ var showBuilderNames = false;
for (var i = 0; i < filteredResults.length; i++)
- tableRowsHTML += htmlForSingleTestRow(filteredResults[i])
+ tableRowsHTML += htmlForSingleTestRow(filteredResults[i], showBuilderNames)
testsHTML = htmlForTestTable(tableRowsHTML);
} else {
if (g_history.isLayoutTestResults())
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js
index a9c39c9..bcccd2f 100644
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js
+++ b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js
@@ -62,17 +62,12 @@
var FAILURE_MAP = {"A": "AUDIO", "C": "CRASH", "F": "TEXT", "I": "IMAGE", "O": "MISSING",
"N": "NO DATA", "P": "PASS", "T": "TIMEOUT", "Y": "NOTRUN", "X": "SKIP", "Z": "IMAGE+TEXT"}
-test('substringList', 2, function() {
+test('splitTestList', 1, function() {
var historyInstance = new history.History(flakinessConfig);
// FIXME(jparent): Remove this once global isn't used.
g_history = historyInstance;
- historyInstance.crossDashboardState.testType = 'gtest';
- historyInstance.dashboardSpecificState.tests = 'test.FLAKY_foo test.FAILS_foo1 test.DISABLED_foo2 test.MAYBE_foo3 test.foo4';
- equal(substringList().toString(), 'test.foo,test.foo1,test.foo2,test.foo3,test.foo4');
-
- historyInstance.crossDashboardState.testType = 'layout-tests';
- historyInstance.dashboardSpecificState.tests = 'foo/bar.FLAKY_foo.html';
- equal(substringList().toString(), 'foo/bar.FLAKY_foo.html');
+ historyInstance.dashboardSpecificState.tests = 'test.foo test.foo1\ntest.foo2\ntest.foo3,foo\\bar\\baz.html';
+ equal(splitTestList().toString(), 'test.foo,test.foo1,test.foo2,test.foo3,foo/bar/baz.html');
});
test('headerForTestTableHtml', 1, function() {
@@ -147,7 +142,7 @@
'<th sortValue=flakiness colspan=10000><div class=table-header-content><span></span><span class=header-text>flakiness (numbers are runtimes in seconds)</span></div></th>' +
'</tr></thead>' +
'<tbody><tr>' +
- '<td class="test-link"><span class="link" onclick="g_history.setQueryParameter(\'tests\',\'dummytest.html\');">dummytest.html</span>' +
+ '<td class="test-link builder-name">WebKit Linux' +
'<td class=options-container>' +
'<div><a href="http://crbug.com/1234">crbug.com/1234</a></div>' +
'<div><a href="http://webkit.org/5678">webkit.org/5678</a></div>' +