def handle_keyed_by(config, jobs): """Resolve fields that can be keyed by platform, etc.""" fields = [ "locales-file", "chunks", "worker-type", "description", "run-time", "tooltool", "env", "mozharness.config", "mozharness.options", "mozharness.actions", "mozharness.script", "treeherder.tier", "treeherder.platform", "index.product", "index.job-name", "when.files-changed", ] for job in jobs: job = copy.deepcopy(job) # don't overwrite dict values here for field in fields: resolve_keyed_by(item=job, field=field, item_name=job['name']) yield job
def handle_keyed_by(config, jobs): """Resolve fields that can be keyed by platform, etc.""" fields = [ "locales-file", "chunks", "worker-type", "description", "run-time", "tooltool", "env", "mozharness.config", "mozharness.options", "mozharness.actions", "mozharness.script", "treeherder.tier", "treeherder.platform", "index.product", "index.job-name", "when.files-changed", ] for job in jobs: job = copy.deepcopy(job) # don't overwrite dict values here for field in fields: resolve_keyed_by(item=job, field=field, item_name=job['name']) yield job
def handle_keyed_by(config, jobs): fields = [ 'worker-type', 'worker', ] for job in jobs: for field in fields: resolve_keyed_by(job, field, item_name=job['name']) yield job
def handle_keyed_by(config, jobs): fields = [ 'worker-type', 'worker', ] for job in jobs: for field in fields: resolve_keyed_by(job, field, item_name=job['name']) yield job
def test_no_by_not_only_by(self): self.assertEqual( resolve_keyed_by({'x': { 'by-y': True, 'a': 10 }}, 'x', 'n'), {'x': { 'by-y': True, 'a': 10 }})
def handle_keyed_by(config, tests): """Resolve fields that can be keyed by platform, etc.""" fields = [ 'instance-size', 'docker-image', 'max-run-time', 'chunks', 'e10s', 'suite', 'run-on-projects', 'os-groups', 'mozharness.config', 'mozharness.extra-options', ] for test in tests: for field in fields: resolve_keyed_by(test, field, item_name=test['test-name']) yield test
def handle_keyed_by(config, tests): """Resolve fields that can be keyed by platform, etc.""" fields = [ 'instance-size', 'docker-image', 'max-run-time', 'chunks', 'e10s', 'suite', 'run-on-projects', 'os-groups', 'mozharness.config', 'mozharness.extra-options', ] for test in tests: for field in fields: resolve_keyed_by(test, field, item_name=test['test-name']) yield test
def set_tier(config, tests): """Set the tier based on policy for all test descriptions that do not specify a tier otherwise.""" for test in tests: if 'tier' in test: resolve_keyed_by(test, 'tier', item_name=test['test-name']) # only override if not set for the test if 'tier' not in test or test['tier'] == 'default': if test['test-platform'] in ['linux64/debug', 'linux64-asan/opt', 'android-4.3-arm7-api-15/debug', 'android-x86/opt']: test['tier'] = 1 elif test['test-platform'].startswith('windows'): test['tier'] = 3 else: test['tier'] = 2 yield test
def set_tier(config, tests): """Set the tier based on policy for all test descriptions that do not specify a tier otherwise.""" for test in tests: if 'tier' in test: resolve_keyed_by(test, 'tier', item_name=test['test-name']) # only override if not set for the test if 'tier' not in test or test['tier'] == 'default': if test['test-platform'] in [ 'linux32/opt', 'linux32/debug', 'linux64/opt', 'linux64/debug', 'linux64-pgo/opt', 'linux64-asan/opt', 'android-4.3-arm7-api-15/opt', 'android-4.3-arm7-api-15/debug', 'android-4.2-x86/opt' ]: test['tier'] = 1 elif test['test-platform'].startswith('windows'): test['tier'] = 3 else: test['tier'] = 2 yield test
def test_match_default(self): self.assertEqual( resolve_keyed_by( { 'f': 'shoes', 'x': { 'by-f': { 'hat': 'head', 'default': 'anywhere' } } }, 'x', 'n'), { 'f': 'shoes', 'x': 'anywhere' })
def test_match_regexp(self): self.assertEqual( resolve_keyed_by( { 'f': 'shoes', 'x': { 'by-f': { 's?[hH]oes?': 'feet', 'gloves': 'hands' } } }, 'x', 'n'), { 'f': 'shoes', 'x': 'feet' })
def test_match_partial_regexp(self): self.assertEqual( resolve_keyed_by( { 'f': 'shoes', 'x': { 'by-f': { 'sh': 'feet', 'default': 'hands' } } }, 'x', 'n'), { 'f': 'shoes', 'x': 'hands' })
def test_match_nested_exact(self): self.assertEqual( resolve_keyed_by( { 'f': 'shoes', 'x': { 'y': { 'by-f': { 'shoes': 'feet', 'gloves': 'hands' } } } }, 'x.y', 'n'), { 'f': 'shoes', 'x': { 'y': 'feet' } })
def test_no_by_not_dict(self): self.assertEqual(resolve_keyed_by({'x': 10}, 'x.y', 'n'), {'x': 10})
def test_no_by_not_by(self): self.assertEqual(resolve_keyed_by({'x': { 'a': 10 }}, 'x', 'n'), {'x': { 'a': 10 }})
def handle_keyed_by_mozharness(config, tests): """Resolve a mozharness field if it is keyed by something""" for test in tests: resolve_keyed_by(test, 'mozharness', item_name=test['test-name']) yield test
def test_no_by_empty_dict(self): self.assertEqual(resolve_keyed_by({'x': {}}, 'x', 'n'), {'x': {}})
def test_match_nested_exact(self): self.assertEqual( resolve_keyed_by( {'f': 'shoes', 'x': {'y': {'by-f': {'shoes': 'feet', 'gloves': 'hands'}}}}, 'x.y', 'n'), {'f': 'shoes', 'x': {'y': 'feet'}})
def test_match_regexp(self): self.assertEqual( resolve_keyed_by( {'f': 'shoes', 'x': {'by-f': {'s?[hH]oes?': 'feet', 'gloves': 'hands'}}}, 'x', 'n'), {'f': 'shoes', 'x': 'feet'})
def test_no_by(self): self.assertEqual(resolve_keyed_by({'x': 10}, 'z', 'n'), {'x': 10})
def test_no_by_not_by(self): self.assertEqual( resolve_keyed_by({'x': {'a': 10}}, 'x', 'n'), {'x': {'a': 10}})
def test_no_by_not_dict(self): self.assertEqual( resolve_keyed_by({'x': 10}, 'x.y', 'n'), {'x': 10})
def test_no_by_dotted(self): self.assertEqual( resolve_keyed_by({'x': {'y': 10}}, 'x.z', 'n'), {'x': {'y': 10}})
def test_match_default(self): self.assertEqual( resolve_keyed_by( {'f': 'shoes', 'x': {'by-f': {'hat': 'head', 'default': 'anywhere'}}}, 'x', 'n'), {'f': 'shoes', 'x': 'anywhere'})
def test_match_partial_regexp(self): self.assertEqual( resolve_keyed_by( {'f': 'shoes', 'x': {'by-f': {'sh': 'feet', 'default': 'hands'}}}, 'x', 'n'), {'f': 'shoes', 'x': 'hands'})
def handle_keyed_by_mozharness(config, tests): """Resolve a mozharness field if it is keyed by something""" for test in tests: resolve_keyed_by(test, 'mozharness', item_name=test['test-name']) yield test
def test_no_by_dotted(self): self.assertEqual(resolve_keyed_by({'x': { 'y': 10 }}, 'x.z', 'n'), {'x': { 'y': 10 }})
def test_no_by_empty_dict(self): self.assertEqual( resolve_keyed_by({'x': {}}, 'x', 'n'), {'x': {}})
def test_no_by(self): self.assertEqual( resolve_keyed_by({'x': 10}, 'z', 'n'), {'x': 10})
def test_no_by_not_only_by(self): self.assertEqual( resolve_keyed_by({'x': {'by-y': True, 'a': 10}}, 'x', 'n'), {'x': {'by-y': True, 'a': 10}})