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

Unified Diff: testing/buildbot/manage.py

Issue 1044323002: Add manage.py --remaining to count remaining tests to convert to Swarming. (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@1_convert_json
Patch Set: Update colorama path, looks like a local install was caught locally Created 5 years, 9 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: testing/buildbot/manage.py
diff --git a/testing/buildbot/manage.py b/testing/buildbot/manage.py
index 1ba69f04a1602c5ae573722c0a32a2d8835dee58..cbc73ad97977ffc81f47b8395b8d078485954cf7 100755
--- a/testing/buildbot/manage.py
+++ b/testing/buildbot/manage.py
@@ -10,6 +10,7 @@ formatted.
"""
import argparse
+import collections
import glob
import json
import os
@@ -17,7 +18,10 @@ import sys
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
+sys.path.insert(
+ 0, os.path.join(THIS_DIR, '..', '..', 'third_party', 'colorama', 'src'))
M-A Ruel 2015/04/01 13:06:25 I hadn't realized there was a src directory undern
+import colorama
# These are not 'builders'.
SKIP = {
@@ -35,14 +39,28 @@ def upgrade_test(test):
def main():
+ colorama.init()
parser = argparse.ArgumentParser(description=sys.modules[__name__].__doc__)
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument(
'-c', '--check', action='store_true', help='Only check the files')
group.add_argument(
+ '--remaining', action='store_true',
+ help='Count the number of tests not yet running on Swarming')
+ group.add_argument(
'-w', '--write', action='store_true', help='Rewrite the files')
+ parser.add_argument(
+ 'test_name', nargs='?',
+ help='The test name to print which configs to update; only to be used '
+ 'with --remaining')
args = parser.parse_args()
+ # Stats when running in --remaining mode;
+ tests_location = collections.defaultdict(
+ lambda: {
+ 'count_run_local': 0, 'count_run_on_swarming': 0, 'local_configs': {}
+ })
+
result = 0
for filepath in glob.glob(os.path.join(THIS_DIR, '*.json')):
filename = os.path.basename(filepath)
@@ -63,6 +81,16 @@ def main():
(upgrade_test(l) for l in data['gtest_tests']),
key=lambda x: x['test'])
+ if args.remaining:
+ for test in data['gtest_tests']:
+ name = test['test']
+ if test.get('swarming', {}).get('can_use_on_swarming_builders'):
+ tests_location[name]['count_run_on_swarming'] += 1
+ else:
+ tests_location[name]['count_run_local'] += 1
+ tests_location[name]['local_configs'].setdefault(
+ filename, []).append(builder)
+
expected = json.dumps(
config, sort_keys=True, indent=2, separators=(',', ': ')) + '\n'
if content != expected:
@@ -73,6 +101,42 @@ def main():
print('Updated %s' % filename)
else:
print('%s is not in canonical format' % filename)
+
+ if args.remaining:
+ if args.test_name:
+ if args.test_name not in tests_location:
+ print('Unknown test %s' % args.test_name)
+ return 1
+ for config, builders in sorted(
+ tests_location[args.test_name]['local_configs'].iteritems()):
+ print('%s:' % config)
+ for builder in sorted(builders):
+ print(' %s' % builder)
+ else:
+ l = max(map(len, tests_location))
+ print('%-*s%sLocal %sSwarming' %
+ (l, 'Test', colorama.Fore.RED, colorama.Fore.GREEN))
+ total_local = 0
+ total_swarming = 0
+ for name, location in sorted(tests_location.iteritems()):
+ if not location['count_run_on_swarming']:
+ c = colorama.Fore.RED
+ elif location['count_run_local']:
+ c = colorama.Fore.YELLOW
+ else:
+ c = colorama.Fore.GREEN
+ total_local += location['count_run_local']
+ total_swarming += location['count_run_on_swarming']
+ print('%s%-*s %4d %4d' %
+ (c, l, name, location['count_run_local'],
+ location['count_run_on_swarming']))
+ total = total_local + total_swarming
+ p_local = 100. * total_local / total
+ p_swarming = 100. * total_swarming / total
+ print('%s%-*s %4d (%4.1f%%) %4d (%4.1f%%)' %
+ (colorama.Fore.WHITE, l, 'Total:', total_local, p_local,
+ total_swarming, p_swarming))
+ print('%-*s %4d' % (l, 'Total executions:', total))
return result
« 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