From d14b74c8a2b3aa7819316c02622fff4c075d5f86 Mon Sep 17 00:00:00 2001 From: Garrett Beaty Date: Wed, 26 Jul 2023 21:34:36 +0000 Subject: [PATCH] [M115][infra] More closely unify variant and mixin behavior. Variants are logically similar to mixins in their ability to modify a test suite, with the difference being that a test spec is created for each variant rather than all being applied to a single test spec. To ensure more consistent treatment of fields, variants will now use the mixin codepath to modify a test. The following differences remain with variants: * The enabled, identifier and mixins fields specify behavior that is specific to variants. * Skylab details can be specified on a variant under the skylab key. When a variant is applied to a test, if the skylab key is present, all fields of the value will be lifted to the top-level, except for the cros_chrome_version field, which is only used by the cros skylab image roller to compare against other data sources. This CL introduces the following behavior changes: * The swarming field in a variant is merged in the same way as with a mixin, in particular, dimension_sets will be added to the test's dimension_sets value instead of merging elements at the same index. This didn't result in any changes to generated files, but all variants have been updated to use dimensions instead of dimension_sets to ensure the same behavior going forward. * A mixin that specifies the description field (non exist at this point), will have the description appended to any existing description for the test. (cherry picked from commit 8d6708ce1135c707c88f5f204de78e22ea6f4521) Bug: 1456553 Change-Id: I869d8baad76027d811b7c3b96ed35d46509a819b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4703284 Auto-Submit: Garrett Beaty Commit-Queue: Ben Pastene Reviewed-by: Ben Pastene Cr-Original-Commit-Position: refs/heads/main@{#1173053} Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4706387 Commit-Queue: Garrett Beaty Cr-Commit-Position: refs/branch-heads/5790@{#1844} Cr-Branched-From: 1d71a337b1f6e707a13ae074dca1e2c34905eb9f-refs/heads/main@{#1148114} --- infra/config/lib/targets.star | 8 + testing/buildbot/chrome.json | 14 -- testing/buildbot/chromium.chromiumos.json | 6 - testing/buildbot/chromium.fyi.json | 7 - testing/buildbot/generate_buildbot_json.py | 184 ++++++++---------- .../generate_buildbot_json_unittest.py | 57 +----- testing/buildbot/internal.chromeos.fyi.json | 38 ---- .../tryserver.chromium.chromiumos.json | 4 - testing/buildbot/tryserver.chromium.mac.json | 3 - testing/buildbot/tryserver.chromium.win.json | 2 - .../chromium.test.json | 1 - .../chromium.test.json | 1 - .../chromium.test.json | 2 - .../chromium.test.json | 2 - .../chromium.test.json | 2 - .../chromium.test.json | 1 - testing/buildbot/variants.pyl | 44 ++--- 17 files changed, 110 insertions(+), 266 deletions(-) diff --git a/infra/config/lib/targets.star b/infra/config/lib/targets.star index 3ac9d575200d67..c5a56bf7e16da8 100644 --- a/infra/config/lib/targets.star +++ b/infra/config/lib/targets.star @@ -328,6 +328,7 @@ def _swarming( def _mixin( *, name = None, + description = None, args = None, precommit_args = None, android_args = None, @@ -352,6 +353,9 @@ def _mixin( Args: name: The name of the mixin. + description: A description to attach to the test. If specified, + it will be appended to any description already present on + the test. args: Arguments to be passed to the test binary. Will be appended to any existing args for the test. precommit_args: Arguments to be passed to the test binary when @@ -394,6 +398,7 @@ def _mixin( timeout_sec: The maximum time the test can take to run. """ mixin_values = dict( + description = description, args = args, precommit_args = precommit_args, linux_args = linux_args, @@ -517,6 +522,9 @@ def _generate_mixins_pyl(ctx): mixin = n.props.mixin_values formatter.open_scope("'{}': {{".format(n.key.id)) + if "description" in mixin: + formatter.add_line("'description': '{}',".format(mixin["description"])) + for args_attr in ( "args", "precommit_args", diff --git a/testing/buildbot/chrome.json b/testing/buildbot/chrome.json index 817378140a865f..0db3a11452cbae 100644 --- a/testing/buildbot/chrome.json +++ b/testing/buildbot/chrome.json @@ -1552,7 +1552,6 @@ ], "skylab_tests": [ { - "args": [], "autotest_name": "tast.chrome-from-tls", "cros_board": "octopus", "cros_img": "octopus-release/R115-15460.0.0", @@ -1693,7 +1692,6 @@ ], "skylab_tests": [ { - "args": [], "cros_board": "dedede", "cros_img": "dedede-release/R114-15410.0.0", "name": "lacros_all_tast_tests DEDEDE_RELEASE_LKGM", @@ -1709,7 +1707,6 @@ "variant_id": "DEDEDE_RELEASE_LKGM" }, { - "args": [], "cros_board": "dedede", "cros_img": "dedede-release/R113-15393.12.0", "name": "lacros_all_tast_tests DEDEDE_RELEASE_DEV", @@ -1725,7 +1722,6 @@ "variant_id": "DEDEDE_RELEASE_DEV" }, { - "args": [], "cros_board": "dedede", "cros_img": "dedede-release/R112-15359.37.0", "name": "lacros_all_tast_tests DEDEDE_RELEASE_BETA", @@ -1741,7 +1737,6 @@ "variant_id": "DEDEDE_RELEASE_BETA" }, { - "args": [], "cros_board": "dedede", "cros_img": "dedede-release/R111-15329.59.0", "name": "lacros_all_tast_tests DEDEDE_RELEASE_STABLE", @@ -1757,7 +1752,6 @@ "variant_id": "DEDEDE_RELEASE_STABLE" }, { - "args": [], "cros_board": "eve", "cros_img": "eve-release/R114-15410.0.0", "name": "lacros_all_tast_tests EVE_RELEASE_LKGM", @@ -1773,7 +1767,6 @@ "variant_id": "EVE_RELEASE_LKGM" }, { - "args": [], "cros_board": "eve", "cros_img": "eve-release/R113-15393.12.0", "name": "lacros_all_tast_tests EVE_RELEASE_DEV", @@ -1789,7 +1782,6 @@ "variant_id": "EVE_RELEASE_DEV" }, { - "args": [], "cros_board": "eve", "cros_img": "eve-release/R112-15359.37.0", "name": "lacros_all_tast_tests EVE_RELEASE_BETA", @@ -1805,7 +1797,6 @@ "variant_id": "EVE_RELEASE_BETA" }, { - "args": [], "cros_board": "eve", "cros_img": "eve-release/R111-15329.59.0", "name": "lacros_all_tast_tests EVE_RELEASE_STABLE", @@ -1856,7 +1847,6 @@ ], "skylab_tests": [ { - "args": [], "cros_board": "jacuzzi", "cros_img": "jacuzzi-release/R114-15410.0.0", "name": "lacros_all_tast_tests JACUZZI_RELEASE_LKGM", @@ -1872,7 +1862,6 @@ "variant_id": "JACUZZI_RELEASE_LKGM" }, { - "args": [], "cros_board": "jacuzzi", "cros_img": "jacuzzi-release/R113-15393.12.0", "name": "lacros_all_tast_tests JACUZZI_RELEASE_DEV", @@ -1888,7 +1877,6 @@ "variant_id": "JACUZZI_RELEASE_DEV" }, { - "args": [], "cros_board": "jacuzzi", "cros_img": "jacuzzi-release/R112-15359.37.0", "name": "lacros_all_tast_tests JACUZZI_RELEASE_BETA", @@ -1904,7 +1892,6 @@ "variant_id": "JACUZZI_RELEASE_BETA" }, { - "args": [], "cros_board": "jacuzzi", "cros_img": "jacuzzi-release/R111-15329.59.0", "name": "lacros_all_tast_tests JACUZZI_RELEASE_STABLE", @@ -1955,7 +1942,6 @@ ], "skylab_tests": [ { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R114-15410.0.0", "name": "lacros_all_tast_tests STRONGBAD_RELEASE_LKGM", diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index 1778eb9914da21..d5ecf8ad67e57f 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json @@ -1479,7 +1479,6 @@ ], "skylab_tests": [ { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "eve", "cros_img": "eve-public/R114-15410.0.0", @@ -1499,7 +1498,6 @@ "variant_id": "EVE_PUBLIC_LKGM" }, { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "eve", "cros_img": "eve-public/R113-15393.12.0", @@ -1519,7 +1517,6 @@ "variant_id": "EVE_PUBLIC_DEV" }, { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "eve", "cros_img": "eve-public/R112-15359.37.0", @@ -1539,7 +1536,6 @@ "variant_id": "EVE_PUBLIC_BETA" }, { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "eve", "cros_img": "eve-public/R111-15329.59.0", @@ -1638,7 +1634,6 @@ ], "skylab_tests": [ { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "jacuzzi", "cros_img": "jacuzzi-public/R114-15410.0.0", @@ -1667,7 +1662,6 @@ ], "skylab_tests": [ { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "kevin", "cros_img": "kevin64-public/R114-15410.0.0", diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index f7d54dd67273e6..a86af484f3c4a2 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json @@ -36806,7 +36806,6 @@ ], "skylab_tests": [ { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "octopus", "cros_img": "octopus-public/R114-15410.0.0", @@ -36823,7 +36822,6 @@ "variant_id": "OCTOPUS_PUBLIC_LKGM" }, { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "eve", "cros_img": "eve-public/R114-15410.0.0", @@ -36850,7 +36848,6 @@ ], "skylab_tests": [ { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "jacuzzi", "cros_img": "jacuzzi-public/R114-15410.0.0", @@ -36867,7 +36864,6 @@ "variant_id": "JACUZZI_PUBLIC_LKGM" }, { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "kevin", "cros_img": "kevin64-public/R114-15410.0.0", @@ -36891,7 +36887,6 @@ ], "skylab_tests": [ { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "jacuzzi", "cros_img": "jacuzzi-public/R114-15410.0.0", @@ -36908,7 +36903,6 @@ "variant_id": "JACUZZI_PUBLIC_LKGM" }, { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "jacuzzi", "cros_img": "jacuzzi-public/R114-15410.0.0", @@ -36927,7 +36921,6 @@ "variant_id": "JACUZZI_CQ_PUBLIC_LKGM" }, { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "kevin", "cros_img": "kevin64-public/R114-15410.0.0", diff --git a/testing/buildbot/generate_buildbot_json.py b/testing/buildbot/generate_buildbot_json.py index 6103da0d188911..cfc258953c3a87 100755 --- a/testing/buildbot/generate_buildbot_json.py +++ b/testing/buildbot/generate_buildbot_json.py @@ -607,7 +607,7 @@ def substitute_magic_args(self, test_config, tester_name, tester_config): if substituted_array != original_args: test_config['args'] = self.maybe_fixup_args_array(substituted_array) - def dictionary_merge(self, a, b, path=None, update=True): + def dictionary_merge(self, a, b, path=None): """http://stackoverflow.com/questions/7204805/ python-dictionaries-of-dictionaries-merge merges b into a @@ -615,45 +615,42 @@ def dictionary_merge(self, a, b, path=None, update=True): if path is None: path = [] for key in b: - if key in a: - if isinstance(a[key], dict) and isinstance(b[key], dict): - self.dictionary_merge(a[key], b[key], path + [str(key)]) - elif a[key] == b[key]: - pass # same leaf value - elif isinstance(a[key], list) and isinstance(b[key], list): - # Args arrays are lists of strings. Just concatenate them, - # and don't sort them, in order to keep some needed - # arguments adjacent (like --timeout-ms [arg], etc.) - if all(isinstance(x, str) - for x in itertools.chain(a[key], b[key])): - a[key] = self.maybe_fixup_args_array(a[key] + b[key]) - else: - # TODO(kbr): this only works properly if the two arrays are - # the same length, which is currently always the case in the - # swarming dimension_sets that we have to merge. It will fail - # to merge / override 'args' arrays which are different - # length. - for idx in range(len(b[key])): - try: - a[key][idx] = self.dictionary_merge(a[key][idx], b[key][idx], - path + [str(key), str(idx)], - update=update) - except (IndexError, TypeError) as e: - six.raise_from( - BBGenErr('Error merging lists by key "%s" from source %s ' + if key not in a: + if b[key] is not None: + a[key] = b[key] + continue + + if isinstance(a[key], dict) and isinstance(b[key], dict): + self.dictionary_merge(a[key], b[key], path + [str(key)]) + elif a[key] == b[key]: + pass # same leaf value + elif isinstance(a[key], list) and isinstance(b[key], list): + # Args arrays are lists of strings. Just concatenate them, + # and don't sort them, in order to keep some needed + # arguments adjacent (like --timeout-ms [arg], etc.) + if all(isinstance(x, str) for x in itertools.chain(a[key], b[key])): + a[key] = self.maybe_fixup_args_array(a[key] + b[key]) + else: + # TODO(kbr): this only works properly if the two arrays are + # the same length, which is currently always the case in the + # swarming dimension_sets that we have to merge. It will fail + # to merge / override 'args' arrays which are different + # length. + for idx in range(len(b[key])): + try: + a[key][idx] = self.dictionary_merge(a[key][idx], b[key][idx], + path + + [str(key), str(idx)]) + except (IndexError, TypeError) as e: # pragma: no cover + raise BBGenErr('Error merging lists by key "%s" from source %s ' 'into target %s at index %s. Verify target list ' 'length is equal or greater than source' % - (str(key), str(b), str(a), str(idx))), e) - elif update: - if b[key] is None: - del a[key] - else: - a[key] = b[key] - else: - raise BBGenErr('Conflict at %s' % '.'.join( - path + [str(key)])) # pragma: no cover - elif b[key] is not None: + (str(key), str(b), str(a), str(idx))) from e + elif b[key] is None: + del a[key] + else: a[key] = b[key] + return a def initialize_args_for_test( @@ -1213,80 +1210,51 @@ def resolve_variants(self, basic_test_definition, variants, mixins): # Each test in a basic test suite will have a definition per variant. test_suite = {} - for test_name, test_config in basic_test_definition.items(): - definitions = [] - for variant in variants: - # Unpack the variant from variants.pyl if it's string based. - if isinstance(variant, str): - variant = self.variants[variant] - - # If 'enabled' is set to False, we will not use this variant; - # otherwise if the variant doesn't include 'enabled' variable or - # 'enabled' is set to True, we will use this variant - if not variant.get('enabled', True): - continue - # Clone a copy of test_config so that we can have a uniquely updated - # version of it per variant - cloned_config = copy.deepcopy(test_config) - # The variant definition needs to be re-used for each test, so we'll - # create a clone and work with it as well. - cloned_variant = copy.deepcopy(variant) - - cloned_config['args'] = (cloned_config.get('args', []) + - cloned_variant.get('args', [])) - cloned_config['mixins'] = (cloned_config.get('mixins', []) + - cloned_variant.get('mixins', []) + mixins) - - description = [] - if cloned_config.get('description'): - description.append(cloned_config.get('description')) - if cloned_variant.get('description'): - description.append(cloned_variant.get('description')) - if description: - cloned_config['description'] = '\n'.join(description) - basic_swarming_def = cloned_config.get('swarming', {}) - variant_swarming_def = cloned_variant.get('swarming', {}) - if basic_swarming_def and variant_swarming_def: - if ('dimension_sets' in basic_swarming_def and - 'dimension_sets' in variant_swarming_def): - # Retain swarming dimension set merge behavior when both variant and - # the basic test configuration both define it - self.dictionary_merge(basic_swarming_def, variant_swarming_def) - # Remove dimension_sets from the variant definition, so that it does - # not replace what's been done by dictionary_merge in the update - # call below. - del variant_swarming_def['dimension_sets'] - - # Update the swarming definition with whatever is defined for swarming - # by the variant. - basic_swarming_def.update(variant_swarming_def) - cloned_config['swarming'] = basic_swarming_def - - # Copy all skylab fields defined by the variant. - skylab_config = cloned_variant.get('skylab') - if skylab_config: - for k, v in skylab_config.items(): - # cros_chrome_version is the ash chrome version in the cros img - # in the variant of cros_board. We don't want to include it in - # the final json files; so remove it. - if k == 'cros_chrome_version': - continue - cloned_config[k] = v + for variant in variants: + # Unpack the variant from variants.pyl if it's string based. + if isinstance(variant, str): + variant = self.variants[variant] + + # If 'enabled' is set to False, we will not use this variant; otherwise if + # the variant doesn't include 'enabled' variable or 'enabled' is set to + # True, we will use this variant + if not variant.get('enabled', True): + continue + + # Make a shallow copy of the variant to remove variant-specific fields, + # leaving just mixin fields + variant = copy.copy(variant) + variant.pop('enabled', None) + identifier = variant.pop('identifier') + variant_mixins = variant.pop('mixins', []) + variant_skylab = variant.pop('skylab', {}) + + for test_name, test_config in basic_test_definition.items(): + new_test = self.apply_mixin(variant, test_config) + + new_test['mixins'] = (test_config.get('mixins', []) + variant_mixins + + mixins) # The identifier is used to make the name of the test unique. # Generators in the recipe uniquely identify a test by it's name, so we # don't want to have the same name for each variant. - cloned_config['name'] = self.add_variant_to_test_name( - cloned_config.get('name') or test_name, - cloned_variant['identifier']) + new_test['name'] = self.add_variant_to_test_name( + new_test.get('name', test_name), identifier) # Attach the variant identifier to the test config so downstream # generators can make modifications based on the original name. This # is mainly used in generate_gpu_telemetry_test(). - cloned_config['variant_id'] = cloned_variant['identifier'] + new_test['variant_id'] = identifier + + # cros_chrome_version is the ash chrome version in the cros img in the + # variant of cros_board. We don't want to include it in the final json + # files; so remove it. + for k, v in variant_skylab.items(): + if k != 'cros_chrome_version': + new_test[k] = v + + test_suite.setdefault(test_name, []).append(new_test) - definitions.append(cloned_config) - test_suite[test_name] = definitions return test_suite def resolve_matrix_compound_test_suites(self): @@ -1426,7 +1394,7 @@ def must_be_list(mixins, typ, name): del test['mixins'] return test - def apply_mixin(self, mixin, test, builder): + def apply_mixin(self, mixin, test, builder=None): """Applies a mixin to a test. A mixin is applied by copying all fields from the mixin into the @@ -1447,6 +1415,14 @@ def apply_mixin(self, mixin, test, builder): new_test = copy.deepcopy(test) mixin = copy.deepcopy(mixin) + + if 'description' in mixin: + description = [] + if 'description' in new_test: + description.append(new_test['description']) + description.append(mixin.pop('description')) + new_test['description'] = '\n'.join(description) + if 'swarming' in mixin: swarming_mixin = mixin['swarming'] new_test.setdefault('swarming', {}) @@ -1534,6 +1510,8 @@ def apply_mixin(self, mixin, test, builder): args = new_test.get('args', []) def add_conditional_args(key, fn): + if builder is None: + return val = new_test.pop(key, []) if val and fn(builder): args.extend(val) diff --git a/testing/buildbot/generate_buildbot_json_unittest.py b/testing/buildbot/generate_buildbot_json_unittest.py index 152d9c9c1d3592..b9f331cea2bb7a 100755 --- a/testing/buildbot/generate_buildbot_json_unittest.py +++ b/testing/buildbot/generate_buildbot_json_unittest.py @@ -4038,45 +4038,6 @@ def test_invalid_function(self): } """ -MATRIX_MISMATCHED_SWARMING_LENGTH = """\ -{ - 'basic_suites': { - 'foo_tests': { - 'foo_test': { - 'swarming': { - 'dimension_sets': [ - { - 'hello': 'world', - } - ], - }, - }, - }, - }, - 'matrix_compound_suites': { - 'matrix_tests': { - 'foo_tests': { - 'variants': [ - { - 'identifier': 'test', - 'swarming': { - 'dimension_sets': [ - { - 'foo': 'bar', - }, - { - 'bar': 'foo', - } - ], - }, - }, - ], - }, - }, - }, -} -""" - MATRIX_REF_NONEXISTENT = """\ { 'basic_suites': { @@ -4358,11 +4319,9 @@ def test_invalid_function(self): 'identifier': 'swarming', 'swarming': { 'a': 'b', - 'dimension_sets': [ - { - 'hello': 'world', - } - ] + 'dimensions': { + 'hello': 'world', + } } }, { @@ -4687,16 +4646,6 @@ def test_trailing_identifier(self): ' matrix compound suite*'): fbb.check_output_file_consistency(verbose=True) - def test_mismatched_swarming_length(self): - """ - Swarming dimension set length mismatch test. Composition set > basic set - """ - fbb = FakeBBGen(self.args, MATRIX_GTEST_SUITE_WATERFALL, - MATRIX_MISMATCHED_SWARMING_LENGTH, LUCI_MILO_CFG) - with self.assertRaisesRegex(generate_buildbot_json.BBGenErr, - 'Error merging lists by key *'): - fbb.check_output_file_consistency(verbose=True) - def test_noexistent_ref(self): """ Test referencing a non-existent basic test suite diff --git a/testing/buildbot/internal.chromeos.fyi.json b/testing/buildbot/internal.chromeos.fyi.json index 7d926b87d2b35b..031e1ea944d5e6 100644 --- a/testing/buildbot/internal.chromeos.fyi.json +++ b/testing/buildbot/internal.chromeos.fyi.json @@ -1164,7 +1164,6 @@ ], "skylab_tests": [ { - "args": [], "autotest_name": "tast.chrome-from-tls", "cros_board": "brya", "cros_img": "brya-release/R115-15460.0.0", @@ -1177,7 +1176,6 @@ "variant_id": "BRYA_RELEASE_LKGM" }, { - "args": [], "autotest_name": "tast.chrome-from-tls", "cros_board": "brya", "cros_img": "brya-release/R115-15460.0.0", @@ -1200,7 +1198,6 @@ ], "skylab_tests": [ { - "args": [], "autotest_name": "tast.chrome-from-tls", "cros_board": "jacuzzi", "cros_img": "jacuzzi-release/R115-15460.0.0", @@ -1222,7 +1219,6 @@ ], "skylab_tests": [ { - "args": [], "autotest_name": "tast.chrome-from-tls", "cros_board": "octopus", "cros_img": "octopus-release/R115-15460.0.0", @@ -1244,7 +1240,6 @@ ], "skylab_tests": [ { - "args": [], "autotest_name": "tast.chrome-from-tls", "cros_board": "trogdor", "cros_img": "trogdor-release/R115-15460.0.0", @@ -1266,7 +1261,6 @@ ], "skylab_tests": [ { - "args": [], "autotest_name": "tast.chrome-from-tls", "cros_board": "volteer", "cros_img": "volteer-release/R115-15460.0.0", @@ -1286,7 +1280,6 @@ ], "skylab_tests": [ { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R114-15410.0.0", "name": "lacros_fyi_tast_tests OCTOPUS_RELEASE_LKGM", @@ -1297,7 +1290,6 @@ "variant_id": "OCTOPUS_RELEASE_LKGM" }, { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R113-15393.12.0", "name": "lacros_fyi_tast_tests OCTOPUS_RELEASE_DEV", @@ -1308,7 +1300,6 @@ "variant_id": "OCTOPUS_RELEASE_DEV" }, { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R112-15359.37.0", "name": "lacros_fyi_tast_tests OCTOPUS_RELEASE_BETA", @@ -1319,7 +1310,6 @@ "variant_id": "OCTOPUS_RELEASE_BETA" }, { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R111-15329.59.0", "name": "lacros_fyi_tast_tests OCTOPUS_RELEASE_STABLE", @@ -1330,7 +1320,6 @@ "variant_id": "OCTOPUS_RELEASE_STABLE" }, { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R114-15410.0.0", "name": "ozone_unittests OCTOPUS_RELEASE_LKGM", @@ -1340,7 +1329,6 @@ "variant_id": "OCTOPUS_RELEASE_LKGM" }, { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R113-15393.12.0", "name": "ozone_unittests OCTOPUS_RELEASE_DEV", @@ -1350,7 +1338,6 @@ "variant_id": "OCTOPUS_RELEASE_DEV" }, { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R112-15359.37.0", "name": "ozone_unittests OCTOPUS_RELEASE_BETA", @@ -1360,7 +1347,6 @@ "variant_id": "OCTOPUS_RELEASE_BETA" }, { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R111-15329.59.0", "name": "ozone_unittests OCTOPUS_RELEASE_STABLE", @@ -1377,7 +1363,6 @@ ], "skylab_tests": [ { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R114-15410.0.0", "name": "lacros_all_tast_tests HANA_RELEASE_LKGM", @@ -1388,7 +1373,6 @@ "variant_id": "HANA_RELEASE_LKGM" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R113-15393.12.0", "name": "lacros_all_tast_tests HANA_RELEASE_DEV", @@ -1399,7 +1383,6 @@ "variant_id": "HANA_RELEASE_DEV" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R112-15359.37.0", "name": "lacros_all_tast_tests HANA_RELEASE_BETA", @@ -1410,7 +1393,6 @@ "variant_id": "HANA_RELEASE_BETA" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R111-15329.59.0", "name": "lacros_all_tast_tests HANA_RELEASE_STABLE", @@ -1421,7 +1403,6 @@ "variant_id": "HANA_RELEASE_STABLE" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R114-15410.0.0", "name": "lacros_all_tast_tests STRONGBAD_RELEASE_LKGM", @@ -1432,7 +1413,6 @@ "variant_id": "STRONGBAD_RELEASE_LKGM" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R113-15393.12.0", "name": "lacros_all_tast_tests strongbad_RELEASE_DEV", @@ -1443,7 +1423,6 @@ "variant_id": "strongbad_RELEASE_DEV" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R112-15359.37.0", "name": "lacros_all_tast_tests STRONGBAD_RELEASE_BETA", @@ -1454,7 +1433,6 @@ "variant_id": "STRONGBAD_RELEASE_BETA" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R111-15329.59.0", "name": "lacros_all_tast_tests STRONGBAD_RELEASE_STABLE", @@ -1465,7 +1443,6 @@ "variant_id": "STRONGBAD_RELEASE_STABLE" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R114-15410.0.0", "name": "ozone_unittests HANA_RELEASE_LKGM", @@ -1475,7 +1452,6 @@ "variant_id": "HANA_RELEASE_LKGM" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R113-15393.12.0", "name": "ozone_unittests HANA_RELEASE_DEV", @@ -1485,7 +1461,6 @@ "variant_id": "HANA_RELEASE_DEV" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R112-15359.37.0", "name": "ozone_unittests HANA_RELEASE_BETA", @@ -1495,7 +1470,6 @@ "variant_id": "HANA_RELEASE_BETA" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R111-15329.59.0", "name": "ozone_unittests HANA_RELEASE_STABLE", @@ -1505,7 +1479,6 @@ "variant_id": "HANA_RELEASE_STABLE" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R114-15410.0.0", "name": "ozone_unittests STRONGBAD_RELEASE_LKGM", @@ -1515,7 +1488,6 @@ "variant_id": "STRONGBAD_RELEASE_LKGM" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R113-15393.12.0", "name": "ozone_unittests strongbad_RELEASE_DEV", @@ -1525,7 +1497,6 @@ "variant_id": "strongbad_RELEASE_DEV" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R112-15359.37.0", "name": "ozone_unittests STRONGBAD_RELEASE_BETA", @@ -1535,7 +1506,6 @@ "variant_id": "STRONGBAD_RELEASE_BETA" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R111-15329.59.0", "name": "ozone_unittests STRONGBAD_RELEASE_STABLE", @@ -1545,7 +1515,6 @@ "variant_id": "STRONGBAD_RELEASE_STABLE" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R114-15410.0.0", "name": "viz_unittests HANA_RELEASE_LKGM", @@ -1555,7 +1524,6 @@ "variant_id": "HANA_RELEASE_LKGM" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R113-15393.12.0", "name": "viz_unittests HANA_RELEASE_DEV", @@ -1565,7 +1533,6 @@ "variant_id": "HANA_RELEASE_DEV" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R112-15359.37.0", "name": "viz_unittests HANA_RELEASE_BETA", @@ -1575,7 +1542,6 @@ "variant_id": "HANA_RELEASE_BETA" }, { - "args": [], "cros_board": "hana", "cros_img": "hana-release/R111-15329.59.0", "name": "viz_unittests HANA_RELEASE_STABLE", @@ -1585,7 +1551,6 @@ "variant_id": "HANA_RELEASE_STABLE" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R114-15410.0.0", "name": "viz_unittests STRONGBAD_RELEASE_LKGM", @@ -1595,7 +1560,6 @@ "variant_id": "STRONGBAD_RELEASE_LKGM" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R113-15393.12.0", "name": "viz_unittests strongbad_RELEASE_DEV", @@ -1605,7 +1569,6 @@ "variant_id": "strongbad_RELEASE_DEV" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R112-15359.37.0", "name": "viz_unittests STRONGBAD_RELEASE_BETA", @@ -1615,7 +1578,6 @@ "variant_id": "STRONGBAD_RELEASE_BETA" }, { - "args": [], "cros_board": "strongbad", "cros_img": "strongbad-release/R111-15329.59.0", "name": "viz_unittests STRONGBAD_RELEASE_STABLE", diff --git a/testing/buildbot/tryserver.chromium.chromiumos.json b/testing/buildbot/tryserver.chromium.chromiumos.json index dafa0f43df0fdd..1748788fd1e495 100644 --- a/testing/buildbot/tryserver.chromium.chromiumos.json +++ b/testing/buildbot/tryserver.chromium.chromiumos.json @@ -7,7 +7,6 @@ ], "skylab_tests": [ { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "eve", "cros_img": "eve-public/R114-15410.0.0", @@ -27,7 +26,6 @@ "variant_id": "EVE_PUBLIC_LKGM" }, { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "eve", "cros_img": "eve-public/R113-15393.12.0", @@ -47,7 +45,6 @@ "variant_id": "EVE_PUBLIC_DEV" }, { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "eve", "cros_img": "eve-public/R112-15359.37.0", @@ -67,7 +64,6 @@ "variant_id": "EVE_PUBLIC_BETA" }, { - "args": [], "bucket": "chromiumos-image-archive", "cros_board": "eve", "cros_img": "eve-public/R111-15329.59.0", diff --git a/testing/buildbot/tryserver.chromium.mac.json b/testing/buildbot/tryserver.chromium.mac.json index d971a0e29033ba..40c431c6e92429 100644 --- a/testing/buildbot/tryserver.chromium.mac.json +++ b/testing/buildbot/tryserver.chromium.mac.json @@ -80,7 +80,6 @@ "variant_id": "8086:3e9b" }, { - "args": [], "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -104,7 +103,6 @@ "variant_id": "1002:67ef" }, { - "args": [], "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -128,7 +126,6 @@ "variant_id": "10de:0fe9" }, { - "args": [], "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, diff --git a/testing/buildbot/tryserver.chromium.win.json b/testing/buildbot/tryserver.chromium.win.json index 4c2c16fc7f2d0d..01e43a7f43586f 100644 --- a/testing/buildbot/tryserver.chromium.win.json +++ b/testing/buildbot/tryserver.chromium.win.json @@ -184,7 +184,6 @@ "variant_id": "8086:9bc5" }, { - "args": [], "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -206,7 +205,6 @@ "variant_id": "10de:2184" }, { - "args": [], "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, diff --git a/testing/buildbot/unittest_expectations/test_both_test_suite_and_variants_with_description/chromium.test.json b/testing/buildbot/unittest_expectations/test_both_test_suite_and_variants_with_description/chromium.test.json index 8d2722e05ff0d0..37f0861c17c0b7 100644 --- a/testing/buildbot/unittest_expectations/test_both_test_suite_and_variants_with_description/chromium.test.json +++ b/testing/buildbot/unittest_expectations/test_both_test_suite_and_variants_with_description/chromium.test.json @@ -4,7 +4,6 @@ "Fake Tester": { "gtest_tests": [ { - "args": [], "description": "This is a swarming test.\nVariant description.", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" diff --git a/testing/buildbot/unittest_expectations/test_enabled_and_disabled_skylab_matrix_with_variants/chromium.test.json b/testing/buildbot/unittest_expectations/test_enabled_and_disabled_skylab_matrix_with_variants/chromium.test.json index de3f3edde74111..6647b4d208b22b 100644 --- a/testing/buildbot/unittest_expectations/test_enabled_and_disabled_skylab_matrix_with_variants/chromium.test.json +++ b/testing/buildbot/unittest_expectations/test_enabled_and_disabled_skylab_matrix_with_variants/chromium.test.json @@ -4,7 +4,6 @@ "Fake Tester": { "skylab_tests": [ { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R89-13655.0.0", "name": "tast.basic OCTOPUS_TOT", diff --git a/testing/buildbot/unittest_expectations/test_good_skylab_matrix_with_variants/chromium.test.json b/testing/buildbot/unittest_expectations/test_good_skylab_matrix_with_variants/chromium.test.json index 1228d538f41bdd..94194f3d529959 100644 --- a/testing/buildbot/unittest_expectations/test_good_skylab_matrix_with_variants/chromium.test.json +++ b/testing/buildbot/unittest_expectations/test_good_skylab_matrix_with_variants/chromium.test.json @@ -4,7 +4,6 @@ "Fake Tester": { "skylab_tests": [ { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R89-13655.0.0", "name": "tast.basic OCTOPUS_TOT", @@ -14,7 +13,6 @@ "variant_id": "OCTOPUS_TOT" }, { - "args": [], "cros_board": "octopus", "cros_img": "octopus-release/R88-13597.23.0", "name": "tast.basic OCTOPUS_TOT-1", diff --git a/testing/buildbot/unittest_expectations/test_variants_swarming_dict_merge_mixins/chromium.test.json b/testing/buildbot/unittest_expectations/test_variants_swarming_dict_merge_mixins/chromium.test.json index 2d4bafd573c0b2..209ee57b860ec1 100644 --- a/testing/buildbot/unittest_expectations/test_variants_swarming_dict_merge_mixins/chromium.test.json +++ b/testing/buildbot/unittest_expectations/test_variants_swarming_dict_merge_mixins/chromium.test.json @@ -25,7 +25,6 @@ "variant_id": "args" }, { - "args": [], "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -45,7 +44,6 @@ "variant_id": "mixins" }, { - "args": [], "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, diff --git a/testing/buildbot/unittest_expectations/test_variants_swarming_dict_swarming/chromium.test.json b/testing/buildbot/unittest_expectations/test_variants_swarming_dict_swarming/chromium.test.json index fdb0929c17867a..5adac96a0c3ad3 100644 --- a/testing/buildbot/unittest_expectations/test_variants_swarming_dict_swarming/chromium.test.json +++ b/testing/buildbot/unittest_expectations/test_variants_swarming_dict_swarming/chromium.test.json @@ -25,7 +25,6 @@ "variant_id": "args" }, { - "args": [], "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -45,7 +44,6 @@ "variant_id": "mixins" }, { - "args": [], "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, diff --git a/testing/buildbot/unittest_expectations/test_variants_with_description/chromium.test.json b/testing/buildbot/unittest_expectations/test_variants_with_description/chromium.test.json index be2510acc217d1..7d88519127ff28 100644 --- a/testing/buildbot/unittest_expectations/test_variants_with_description/chromium.test.json +++ b/testing/buildbot/unittest_expectations/test_variants_with_description/chromium.test.json @@ -4,7 +4,6 @@ "Fake Tester": { "gtest_tests": [ { - "args": [], "description": "Variant description.", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 2b1354478b9dd6..5464da4bcb1388 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl @@ -11,12 +11,10 @@ { 'IPHONE_7_15_4_1': { 'swarming': { - 'dimension_sets': [ - { - 'os': 'iOS-15.4.1', - 'device': 'iPhone9,1' - } - ] + 'dimensions': { + 'os': 'iOS-15.4.1', + 'device': 'iPhone9,1' + }, }, 'identifier': 'iPhone 7 15.4.1' }, @@ -176,13 +174,11 @@ 'ios_runtime_cache_16_2', ], 'swarming': { - 'dimension_sets': [ - { - 'cpu': 'x86-64', - 'mac_model': 'Macmini8,1', - 'os': 'Mac-12' - } - ], + 'dimensions': { + 'cpu': 'x86-64', + 'mac_model': 'Macmini8,1', + 'os': 'Mac-12' + }, } }, 'SIM_IPAD_PRO_3RD_GEN_16_4': { @@ -763,13 +759,11 @@ ], 'identifier': 'amd64-generic', 'swarming': { - 'dimension_sets': [ - { - 'cpu': 'x86', - 'kvm': '1', - 'os': 'Ubuntu-22.04', - } - ], + 'dimensions': { + 'cpu': 'x86', + 'kvm': '1', + 'os': 'Ubuntu-22.04', + }, }, }, 'LACROS_ASH_TOT': { @@ -785,12 +779,10 @@ ], 'identifier': 'eve', 'swarming': { - 'dimension_sets': [ - { - 'os': 'ChromeOS', - 'device_type': 'eve', - } - ], + 'dimensions': { + 'os': 'ChromeOS', + 'device_type': 'eve', + }, }, }, 'LACROS_JACUZZI': {