| 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)
|
|
|