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

Side by Side Diff: webkit/tools/layout_tests/flakiness_dashboard.html

Issue 434088: Add confirmation for each update before adding it to the auto-update of test_... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE HTML> 1 <!DOCTYPE HTML>
2 <html> 2 <html>
3 3
4 <head> 4 <head>
5 <title>Webkit Layout Test History</title> 5 <title>Webkit Layout Test History</title>
6 <style> 6 <style>
7 body { 7 body {
8 font-family: arial; 8 font-family: arial;
9 font-size: 13px; 9 font-size: 13px;
10 } 10 }
(...skipping 974 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 var rawResults = resultsForTest.rawResults; 985 var rawResults = resultsForTest.rawResults;
986 986
987 // If the first result is no-data that means the test is skipped or is 987 // If the first result is no-data that means the test is skipped or is
988 // being run on a different builder (e.g. moved from one shard to another). 988 // being run on a different builder (e.g. moved from one shard to another).
989 // Ignore these results since we have no real data about what's going on. 989 // Ignore these results since we have no real data about what's going on.
990 if (rawResults[0][1] == 'N') 990 if (rawResults[0][1] == 'N')
991 return; 991 return;
992 992
993 // Only consider flake if it doesn't happen twice in a row. 993 // Only consider flake if it doesn't happen twice in a row.
994 var MIN_RUNS_FOR_FLAKE = 2; 994 var MIN_RUNS_FOR_FLAKE = 2;
995 var unexpectedExpectations = [];
996 var resultsMap = {} 995 var resultsMap = {}
997 var numResultsSeen = 0; 996 var numResultsSeen = 0;
998 var haveSeenNonFlakeResult = false; 997 var haveSeenNonFlakeResult = false;
999 var numRealResults = 0; 998 var numRealResults = 0;
1000 var failedCount = 0; 999 var failedCount = 0;
1001 1000
1002 var seenResults = {}; 1001 var seenResults = {};
1003 for (var i = 0; 1002 for (var i = 0;
1004 i < rawResults.length && numResultsSeen < getMaxResults(); 1003 i < rawResults.length && numResultsSeen < getMaxResults();
1005 i++) { 1004 i++) {
(...skipping 18 matching lines...) Expand all
1024 continue; 1023 continue;
1025 } 1024 }
1026 1025
1027 var expectation = getExpectationsFileStringForResult(result); 1026 var expectation = getExpectationsFileStringForResult(result);
1028 resultsMap[expectation] = true; 1027 resultsMap[expectation] = true;
1029 numRealResults++; 1028 numRealResults++;
1030 } 1029 }
1031 1030
1032 resultsForTest.isFlaky = numRealResults > 1; 1031 resultsForTest.isFlaky = numRealResults > 1;
1033 // Calculate the % of times the test failed - how flaky is it? 1032 // Calculate the % of times the test failed - how flaky is it?
1034 resultsForTest.percentFailed = Math.round(failedCount / numResultsSeen * 100 ); 1033 resultsForTest.percentFailed =
1034 Math.round(failedCount / numResultsSeen * 100);
1035 1035
1036 var expectationsArray = resultsForTest.expectations ? 1036 var expectationsArray = resultsForTest.expectations ?
1037 resultsForTest.expectations.split(' ') : []; 1037 resultsForTest.expectations.split(' ') : [];
1038 var extraExpectations = expectationsArray.filter( 1038 var extraExpectations = expectationsArray.filter(
1039 function(element) { 1039 function(element) {
1040 // TODO(ojan): Once all the FAIL lines are removed from 1040 // TODO(ojan): Once all the FAIL lines are removed from
1041 // test_expectations.txt, delete all the legacyExpectationsSemantics 1041 // test_expectations.txt, delete all the legacyExpectationsSemantics
1042 // code. 1042 // code.
1043 if (currentState.legacyExpectationsSemantics) { 1043 if (currentState.legacyExpectationsSemantics) {
1044 if (element == 'FAIL') { 1044 if (element == 'FAIL') {
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
1482 } 1482 }
1483 1483
1484 for (var builder in builders) { 1484 for (var builder in builders) {
1485 var tests = perBuilderWithExpectationsButNoFailures[builder] 1485 var tests = perBuilderWithExpectationsButNoFailures[builder]
1486 for (var i = 0; i < tests.length; i++) { 1486 for (var i = 0; i < tests.length; i++) {
1487 addUpdate(testsNeedingUpdate, tests[i].test, builder, 1487 addUpdate(testsNeedingUpdate, tests[i].test, builder,
1488 null, tests[i].expectations + ' ' + tests[i].modifiers); 1488 null, tests[i].expectations + ' ' + tests[i].modifiers);
1489 } 1489 }
1490 } 1490 }
1491 1491
1492 appendHTML(JSON.stringify(testsNeedingUpdate)); 1492 var confirmedTests = {};
1493 hideLoadingUI(); 1493 var NUM_UPDATES_BEFORE_BREAK = 20;
1494 var i = 0;
1495 for (test in testsNeedingUpdate) {
1496 i++
1497 // To maintain sanity when doing updates, give a chance to break out of
1498 // the confirm loop every once in a while.
1499 if (!(i % NUM_UPDATES_BEFORE_BREAK)) {
1500 if (!confirm('Processed ' + i +
1501 ' updates. Continue processing updates?'))
1502 break;
1503 }
1504
1505 document.body.innerHTML = getHTMLForIndividulTestOnAllBuilders(test);
1506 var confirmStr = 'Include this update?\n' +
1507 JSON.stringify(testsNeedingUpdate[test], null, 4);
1508 if (confirm(confirmStr)) {
1509 confirmedTests[test] = testsNeedingUpdate[test];
1510 }
1511 }
1512
1513 document.body.innerHTML = JSON.stringify(confirmedTests);
1494 } 1514 }
1495 1515
1496 function getHTMLForIndividulTestOnAllBuilders(test) { 1516 function getHTMLForIndividulTestOnAllBuilders(test) {
1497 createTableHeadersArray('builder'); 1517 createTableHeadersArray('builder');
1498 processTestRunsForAllBuilders(); 1518 processTestRunsForAllBuilders();
1499 1519
1500 var testResults = testToResultsMap[test]; 1520 var testResults = testToResultsMap[test];
1501 var html = ''; 1521 var html = '';
1502 if (testResults && testResults.length) { 1522 if (testResults && testResults.length) {
1503 var tracURL = TEST_URL_BASE_PATH + test 1523 var tracURL = TEST_URL_BASE_PATH + test
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
2115 hideLegend(); 2135 hideLegend();
2116 hidePopup(); 2136 hidePopup();
2117 } 2137 }
2118 }, false); 2138 }, false);
2119 2139
2120 </script> 2140 </script>
2121 </head> 2141 </head>
2122 2142
2123 <body></body> 2143 <body></body>
2124 </html> 2144 </html>
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698