Chromium Code Reviews| Index: scripts/slave/recipe_modules/chromium_tests/steps.py |
| diff --git a/scripts/slave/recipe_modules/chromium_tests/steps.py b/scripts/slave/recipe_modules/chromium_tests/steps.py |
| index f1fa22876ac1ac4f04302ff942479e7f5176b7a3..af74a51d2dedc209c687be2e45743ed27a33fbd8 100644 |
| --- a/scripts/slave/recipe_modules/chromium_tests/steps.py |
| +++ b/scripts/slave/recipe_modules/chromium_tests/steps.py |
| @@ -492,6 +492,34 @@ class SwarmingTest(Test): |
| self._dimensions = dimensions |
| self._tags = tags |
| self._extra_suffix = extra_suffix |
| + if dimensions and not extra_suffix: |
| + self._extra_suffix = self._get_gpu_suffix(dimensions) |
| + |
| + def _get_gpu_suffix(self, dimensions): |
|
M-A Ruel
2015/12/16 01:37:08
Make it a @staticmethod
Ken Russell (switch to Gerrit)
2015/12/16 01:50:47
Done.
|
| + if not dimensions.get('gpu'): |
| + return None |
| + gpu_vendor_id = dimensions.get('gpu', '').split(':')[0].lower() |
| + if gpu_vendor_id == '8086': |
|
M-A Ruel
2015/12/16 01:37:08
I'd prefer a small dict
vendor_ids = {
'8086':
Ken Russell (switch to Gerrit)
2015/12/16 01:50:47
Done.
|
| + gpu_vendor = 'Intel' |
| + elif gpu_vendor_id == '10de': |
| + gpu_vendor = 'NVIDIA' |
| + elif gpu_vendor_id == '1002': |
| + gpu_vendor = 'ATI' |
| + else: |
| + gpu_vendor = '(%s)' % gpu_vendor_id |
| + |
| + os = dimensions.get('os', '') |
| + if os.startswith('Mac'): |
| + if dimensions.get('hidpi', '') == '1': |
| + os_name = 'Mac Retina' |
| + else: |
| + os_name = 'Mac' |
| + elif os.startswith('Windows'): |
| + os_name = 'Windows' |
| + else: |
| + os_name = 'Linux' |
| + |
| + return 'on %s GPU on %s' % (gpu_vendor, os_name) |
| @property |
| def name(self): |
| @@ -1068,17 +1096,34 @@ class SwarmingIsolatedScriptTest(SwarmingTest): |
| ]) |
| return valid, failures |
| + |
| +# TODO(kbr): remove after http://crbug.com/570075 is fixed. |
| +def sanitize_swarming_dimension_sets(dimension_sets): |
| + if not dimension_sets: |
| + return None |
| + result = [] |
| + for dimensions in dimension_sets: |
| + new_dimensions = {} |
|
M-A Ruel
2015/12/16 01:37:08
return [
{str(k): str(v) for k, v in dimensions.
Ken Russell (switch to Gerrit)
2015/12/16 01:50:47
Done.
|
| + for key, val in dimensions.iteritems(): |
| + new_dimensions[str(key)] = str(val) |
| + result.append(new_dimensions) |
| + return result |
| + |
| + |
| def generate_isolated_script(api, mastername, buildername, test_spec, |
| enable_swarming=False, |
| scripts_compile_targets=None): |
| for spec in test_spec.get(buildername, {}).get('isolated_scripts', []): |
| use_swarming = False |
| swarming_shards = 1 |
| + swarming_dimension_sets = None |
| if enable_swarming: |
| swarming_spec = spec.get('swarming', {}) |
| if swarming_spec.get('can_use_on_swarming_builders', False): |
| use_swarming = True |
| swarming_shards = swarming_spec.get('shards', 1) |
| + swarming_dimension_sets = sanitize_swarming_dimension_sets( |
| + swarming_spec.get('dimension_sets')) |
| name = str(spec['name']) |
| args = args=spec.get('args', []) |
| target_name = spec['isolate_name'] |
| @@ -1088,9 +1133,19 @@ def generate_isolated_script(api, mastername, buildername, test_spec, |
| # to GN. |
| override_compile_targets = spec.get('override_compile_targets', None) |
| if use_swarming: |
| - yield SwarmingIsolatedScriptTest( |
| - name=name, args=args, target_name=target_name, shards=swarming_shards, |
| - override_compile_targets=override_compile_targets) |
| + if swarming_dimension_sets: |
| + for dimensions in swarming_dimension_sets: |
| + # Yield potentially multiple invocations of the same test, |
| + # on different machine configurations. |
| + yield SwarmingIsolatedScriptTest( |
| + name=name, args=args, target_name=target_name, |
| + shards=swarming_shards, dimensions=dimensions, |
| + override_compile_targets=override_compile_targets) |
| + else: |
| + yield SwarmingIsolatedScriptTest( |
| + name=name, args=args, target_name=target_name, |
| + shards=swarming_shards, |
| + override_compile_targets=override_compile_targets) |
| else: |
| yield LocalIsolatedScriptTest( |
| name=name, args=args, target_name=target_name, |