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

Unified Diff: scripts/slave/recipe_modules/test_utils/test_api.py

Issue 2073923002: Support sharding for swarmed isolated script tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Explicitly handle missing shards' output. Created 4 years, 6 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 | « scripts/slave/recipe_modules/swarming/api.py ('k') | scripts/slave/recipes/chromium.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: scripts/slave/recipe_modules/test_utils/test_api.py
diff --git a/scripts/slave/recipe_modules/test_utils/test_api.py b/scripts/slave/recipe_modules/test_utils/test_api.py
index 7e52a7898945e45ec442fb3ec244cd3539cc4084..f373fefad758c0285f3558245d09139da9aaccea 100644
--- a/scripts/slave/recipe_modules/test_utils/test_api.py
+++ b/scripts/slave/recipe_modules/test_utils/test_api.py
@@ -113,31 +113,40 @@ class TestUtilsTestApi(recipe_test_api.RecipeTestApi):
return ret
def canned_isolated_script_output(self, passing, is_win, swarming=False,
- swarming_internal_failure=False,
- isolated_script_passing=True, valid=True):
+ shards=1, swarming_internal_failure=False,
+ isolated_script_passing=True, valid=True,
+ missing_shards=[]):
"""Produces a test results' compatible json for isolated script tests. """
- jsonish_results = {}
- jsonish_results['valid'] = valid
- if isolated_script_passing:
- jsonish_results['failures'] = []
- else:
- jsonish_results['failures'] = ['test1.Test1', 'test2.Test2']
-
- jsonish_summary = {
- 'shards': [
- {
+ per_shard_results = []
+ for i in xrange(shards):
+ jsonish_results = {}
+ jsonish_results['valid'] = valid
+ # Keep shard 0's results equivalent to the old code to minimize
+ # expectation diffs.
+ idx = 1 + (2 * i)
+ tests_run = ['test%d.Test%d' % (idx, idx),
+ 'test%d.Test%d' % (idx + 1, idx + 1)]
+ if isolated_script_passing:
+ jsonish_results['failures'] = []
+ jsonish_results['successes'] = tests_run
+ else:
+ jsonish_results['failures'] = tests_run
+ jsonish_results['successes'] = []
+ per_shard_results.append(jsonish_results)
+ if swarming:
+ jsonish_shards = []
+ files_dict = {}
+ for i in xrange(shards):
+ jsonish_shards.append({
'failure': not passing,
'internal_failure': swarming_internal_failure
- }
- ]
- }
-
- if swarming:
- swarming_path = '0\\output.json' if is_win else '0/output.json'
- files_dict = {
- swarming_path: json.dumps(jsonish_results),
- 'summary.json': json.dumps(jsonish_summary)
- }
+ })
+ if not i in missing_shards:
+ swarming_path = str(i)
+ swarming_path += '\\output.json' if is_win else '/output.json'
+ files_dict[swarming_path] = json.dumps(per_shard_results[i])
+ jsonish_summary = {'shards': jsonish_shards}
+ files_dict['summary.json'] = json.dumps(jsonish_summary)
return self.m.raw_io.output_dir(files_dict)
else:
- return self.m.json.output(jsonish_results)
+ return self.m.json.output(per_shard_results[0])
« no previous file with comments | « scripts/slave/recipe_modules/swarming/api.py ('k') | scripts/slave/recipes/chromium.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698