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

Unified Diff: build/android/buildbot/bb_device_steps.py

Issue 26330004: Print actual list of failing tests on Android layout test steps (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/buildbot/bb_device_steps.py
diff --git a/build/android/buildbot/bb_device_steps.py b/build/android/buildbot/bb_device_steps.py
index 64f9e09218144fbd8647ede7574d920fb09b7498..84fd6262f6dbe5ccc407ae9e1865d2190cf21a55 100755
--- a/build/android/buildbot/bb_device_steps.py
+++ b/build/android/buildbot/bb_device_steps.py
@@ -6,6 +6,7 @@
import collections
import glob
import hashlib
+import json
import multiprocessing
import os
import random
@@ -257,7 +258,29 @@ def RunWebkitLayoutTests(options):
cmd_args.extend(
['--additional-expectations=%s' % os.path.join(CHROME_SRC_DIR, *f)])
- RunCmd(['webkit/tools/layout_tests/run_webkit_tests.py'] + cmd_args)
+ exit_code = RunCmd(['webkit/tools/layout_tests/run_webkit_tests.py'] +
+ cmd_args)
+ if exit_code == 254: # AKA -1, internal error.
+ bb_annotations.PrintMsg("?? (crashed or hung)")
+ else:
+ full_results_path = os.path.join('..', 'layout-test-results',
+ 'full_results.json')
+ if os.path.exists(full_results_path):
+ full_results = json.load(open(full_results_path))
+ unexpected_failures, unexpected_flakes, unexpected_passes = \
Isaac (away) 2013/10/09 18:27:59 Extend lines using parens, not backslash, per goog
+ _ParseLayoutTestResults(full_results)
+ if unexpected_failures:
+ _PrintDashboardLink("failed", unexpected_failures,
+ max_tests=25)
+ elif unexpected_passes:
+ _PrintDashboardLink("unexpected passes", unexpected_passes,
+ max_tests=10)
+ if unexpected_flakes:
+ _PrintDashboardLink("unexpected flakes", unexpected_flakes,
+ max_tests=10)
+ else:
+ bb_annotations.PrintMsg("?? (results missing)")
+
if options.factory_properties.get('archive_webkit_results', False):
bb_annotations.PrintNamedStep('archive_webkit_results')
@@ -279,6 +302,55 @@ def RunWebkitLayoutTests(options):
'--gs-bucket', gs_bucket])
+def _ParseLayoutTestResults(results):
+ # Cloned from third_party/WebKit/Tools/Scripts/print-json-test-results
+ tests = _ConvertTrieToFlatPaths(results['tests'])
+ failures = {}
+ flakes = {}
+ passes = {}
+ for (test, result) in tests.iteritems():
+ if result.get('is_unexpected'):
+ actual_result = result['actual']
+ if ' PASS' in actual_result:
+ flakes[test] = actual_result
+ elif actual_result == 'PASS':
+ passes[test] = result
+ else:
+ failures[test] = actual_result
+
+ return (passes, failures, flakes)
+
+
+def _ConvertTrieToFlatPaths(trie, prefix=None):
+ # Cloned from third_party/WebKit/Tools/Scripts/print-json-test-results
+ result = {}
+ for name, data in trie.iteritems():
+ if prefix:
+ name = prefix + "/" + name
+
+ if len(data) and not "actual" in data and not "expected" in data:
+ result.update(_ConvertTrieToFlatPaths(data, name))
+ else:
+ result[name] = data
+
+ return result
+
+
+def _PrintDashboardLink(link_text, tests, max_tests):
+ if len(tests) > max_tests:
+ test_list_text = ' '.join(tests[:max_tests]) + ' and more'
+ else:
+ test_list_text = ' '.join(tests)
+
+ DASHBOARD_BASE = ("http://test-results.appspot.com"
+ "/dashboards/flakiness_dashboard.html#"
+ "master=ChromiumWebkit&tests=")
+
+ bb_annotations.PrintLink('%d %s: %s' %
+ (len(tests), link_text, test_list_text),
+ DASHBOARD_BASE + ','.join(tests))
+
+
def EscapeBuilderName(builder_name):
return re.sub('[ ()]', '_', builder_name)
« 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