E.g. in issue 868253 , a unit test breakage was cause by an upstream problem, not V8. This blocked V8 lkgr and caused not running the layout tests at all due to early bail-out:
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/25164
Like with layout tests, the bot should run the unittests also in the without-patch variant, compare, and stay green on upstream issues.
Strange that it doesn't work already. We use test_utils.detemine_new_failures in the blink_downstream recipes, which is supposed to try with and without patch.
How about just reusing chromium_trybot recipe instead of blink_downstream? Then we get with-patch and without-patch logic for free. We'd just need to add bot configs for all builders using blink_downstream to client_v8_fyi.py [1], e.g. a config for V8-Blink Linux 64 would look like this:
'V8-Blink Linux 64': {
'gclient_config': 'chromium',
'gclient_apply_config': [
'show_v8_revision',
'blink_downstream',
],
'chromium_config': 'blink',
'chromium_config_kwargs': {
'BUILD_CONFIG': 'Release',
'TARGET_BITS': 64,
},
'additional_expectations': [
'v8',
'tools',
'blink_tests',
'TestExpectations',
],
'testing': {'platform': 'linux'},
}
where blink_downstream is defined as
class RevisionPropertyResolver(DEPS['gclient'].RevisionResolver):
def __init__(self, property, default):
self._property = property
self._default = default
def resolve(self, properties):
return properties.get(self._property, self._default)
@CONFIX_CTX(includes=['chromium'])
def blink_downstream(c):
c.revisions['src'] = 'HEAD'
c.revisions['src/v8'] = RevisionPropertyResolver('revision', 'HEAD')
c.got_revision_reverse_mapping['got_cr_revision'] = 'src'
c.got_revision_mapping.pop('src', None)
Or is there something special that blink_downstream recipe does and chromium recipe doesn't?
[1]: https://cs.chromium.org/chromium/build/scripts/slave/recipe_modules/chromium_tests/client_v8_fyi.py
Actually, there is plenty special about blink_downstream (mainly how it pretends that it has a patch, but actually just changes revision of the components). So perhaps we should focus on determining why doesn't determine_new_failures work as intended.
Yea, as you said. With/without patch have a ToT/pinned analogy on these bots. The rest should be the same. Though maybe there are more difference due to divergence of the infrastructure over time...
Comment 1 by serg...@chromium.org
, Jul 27Strange that it doesn't work already. We use test_utils.detemine_new_failures in the blink_downstream recipes, which is supposed to try with and without patch. How about just reusing chromium_trybot recipe instead of blink_downstream? Then we get with-patch and without-patch logic for free. We'd just need to add bot configs for all builders using blink_downstream to client_v8_fyi.py [1], e.g. a config for V8-Blink Linux 64 would look like this: 'V8-Blink Linux 64': { 'gclient_config': 'chromium', 'gclient_apply_config': [ 'show_v8_revision', 'blink_downstream', ], 'chromium_config': 'blink', 'chromium_config_kwargs': { 'BUILD_CONFIG': 'Release', 'TARGET_BITS': 64, }, 'additional_expectations': [ 'v8', 'tools', 'blink_tests', 'TestExpectations', ], 'testing': {'platform': 'linux'}, } where blink_downstream is defined as class RevisionPropertyResolver(DEPS['gclient'].RevisionResolver): def __init__(self, property, default): self._property = property self._default = default def resolve(self, properties): return properties.get(self._property, self._default) @CONFIX_CTX(includes=['chromium']) def blink_downstream(c): c.revisions['src'] = 'HEAD' c.revisions['src/v8'] = RevisionPropertyResolver('revision', 'HEAD') c.got_revision_reverse_mapping['got_cr_revision'] = 'src' c.got_revision_mapping.pop('src', None) Or is there something special that blink_downstream recipe does and chromium recipe doesn't? [1]: https://cs.chromium.org/chromium/build/scripts/slave/recipe_modules/chromium_tests/client_v8_fyi.py