コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
 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
         }})
コード例 #6
0
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
コード例 #7
0
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
コード例 #8
0
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
コード例 #9
0
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
コード例 #10
0
 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'
             })
コード例 #11
0
 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'
             })
コード例 #12
0
 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'
             })
コード例 #13
0
 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'
                 }
             })
コード例 #14
0
 def test_no_by_not_dict(self):
     self.assertEqual(resolve_keyed_by({'x': 10}, 'x.y', 'n'), {'x': 10})
コード例 #15
0
 def test_no_by_not_by(self):
     self.assertEqual(resolve_keyed_by({'x': {
         'a': 10
     }}, 'x', 'n'), {'x': {
         'a': 10
     }})
コード例 #16
0
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
コード例 #17
0
 def test_no_by_empty_dict(self):
     self.assertEqual(resolve_keyed_by({'x': {}}, 'x', 'n'), {'x': {}})
コード例 #18
0
 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'}})
コード例 #19
0
 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'})
コード例 #20
0
 def test_no_by(self):
     self.assertEqual(resolve_keyed_by({'x': 10}, 'z', 'n'), {'x': 10})
コード例 #21
0
 def test_no_by_not_by(self):
     self.assertEqual(
         resolve_keyed_by({'x': {'a': 10}}, 'x', 'n'),
         {'x': {'a': 10}})
コード例 #22
0
 def test_no_by_not_dict(self):
     self.assertEqual(
         resolve_keyed_by({'x': 10}, 'x.y', 'n'),
         {'x': 10})
コード例 #23
0
 def test_no_by_dotted(self):
     self.assertEqual(
         resolve_keyed_by({'x': {'y': 10}}, 'x.z', 'n'),
         {'x': {'y': 10}})
コード例 #24
0
 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'})
コード例 #25
0
 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'})
コード例 #26
0
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
コード例 #27
0
 def test_no_by_dotted(self):
     self.assertEqual(resolve_keyed_by({'x': {
         'y': 10
     }}, 'x.z', 'n'), {'x': {
         'y': 10
     }})
コード例 #28
0
 def test_no_by_empty_dict(self):
     self.assertEqual(
         resolve_keyed_by({'x': {}}, 'x', 'n'),
         {'x': {}})
コード例 #29
0
 def test_no_by(self):
     self.assertEqual(
         resolve_keyed_by({'x': 10}, 'z', 'n'),
         {'x': 10})
コード例 #30
0
 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}})