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

Unified Diff: scripts/slave/recipe_modules/swarming/api.py

Issue 2375663003: Add json test results format support for SwarmingIsolatedScriptTest (Closed)
Patch Set: Add no cover Created 4 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
Index: scripts/slave/recipe_modules/swarming/api.py
diff --git a/scripts/slave/recipe_modules/swarming/api.py b/scripts/slave/recipe_modules/swarming/api.py
index da5afa4fa99aee6f42037ffb3c88659aba0d93e0..87eb67ed3700dcf251bd89f2aca1ab1cbb7370af 100644
--- a/scripts/slave/recipe_modules/swarming/api.py
+++ b/scripts/slave/recipe_modules/swarming/api.py
@@ -8,6 +8,7 @@ import functools
from recipe_engine import recipe_api
+from . import results_merger
# Minimally supported version of swarming.py script (reported by --version).
MINIMAL_SWARMING_VERSION = (0, 8, 6)
@@ -730,7 +731,6 @@ class SwarmingApi(recipe_api.RecipeApi):
link_name = 'shard #%d isolated out' % index
p.links[link_name] = outputs_ref['view_url']
-
def _merge_isolated_script_chartjson_ouput_shards(self, task, step_result):
# Taken from third_party/catapult/telemetry/telemetry/internal/results/
# chart_json_output_formatter.py, the json entries are as follows:
@@ -770,23 +770,8 @@ class SwarmingApi(recipe_api.RecipeApi):
merged_results[key][add_key] = chartjson_results_json[key][add_key]
return merged_results
-
def _merge_isolated_script_shards(self, task, step_result):
- # This code is unfortunately specialized to the "simplified"
- # JSON format that used to be the standard for recipes. The
- # isolated scripts should be changed to use the now-standard
- # Chromium JSON test results format:
- # https://www.chromium.org/developers/the-json-test-results-format
- # . Note that gtests, above, don't seem to conform to this
- # format yet, so it didn't seem like a good prerequisite to
- # switch the isolated tests over when adding sharding support.
- #
- # These are the only keys we pay attention to in the output JSON.
- merged_results = {
- 'successes': [],
- 'failures': [],
- 'valid': True,
- }
+ shard_results_list = []
for i in xrange(task.shards):
path = self.m.path.join(str(i), 'output.json')
if path not in step_result.raw_io.output_dir:
@@ -794,19 +779,10 @@ class SwarmingApi(recipe_api.RecipeApi):
results_raw = step_result.raw_io.output_dir[path]
try:
results_json = self.m.json.loads(results_raw)
+ shard_results_list.append(results_json)
except Exception as e:
raise Exception('error decoding JSON results from shard #%d' % i)
- for key in merged_results:
- if key in results_json:
- if isinstance(merged_results[key], list):
- merged_results[key].extend(results_json[key])
- elif isinstance(merged_results[key], bool):
- merged_results[key] = merged_results[key] and results_json[key]
- else:
- raise recipe_api.InfraFailure(
- 'Unknown key type ' + type(merged_results[key]) +
- ' when handling key ' + key + '.') # pragma: no cover
- return merged_results
+ return results_merger.merge_test_results(shard_results_list)
def _isolated_script_collect_step(self, task, **kwargs):
step_test_data = kwargs.pop('step_test_data', None)
« no previous file with comments | « scripts/slave/recipe_modules/chromium_tests/steps.py ('k') | scripts/slave/recipe_modules/swarming/results_merger.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698