Improve "mach manifest skipfails" skip-if conditions generation
Categories
(Testing :: General, enhancement)
Tracking
(firefox135 fixed)
| Tracking | Status | |
|---|---|---|
| firefox135 | --- | fixed |
People
(Reporter: arnaud.vergnet, Assigned: arnaud.vergnet)
Details
Attachments
(11 files, 5 obsolete files)
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review |
Steps to reproduce:
- Some skip-if conditions are too generic and include only the os (eg: skip-if = "os == 'linux'")
- Some skip-if conditions are too specific and become difficult to understand (eg: "os == 'linux' && os_version == '18.04' && processor == 'x86_64' && debug && socketprocess_networking")
Actual results:
The skipfails script retrieves a lot of information from failed tasks and creates very complex conditions to skip tests. These conditions can become very difficult to read and understand.
A lot of skip-if conditions were also entered manually and only include the os, which is too generic and may skip valid tests on more recent versions of the OS.
Expected results:
The skipfails script should only use the os, the os_version and the processor type (the OOP combo) for generating skip-if conditions. These conditions should be a lot easier to understand and make updating platforms less of a headache.
The script should also detect conditions too generic or too specific and rewrite them in OOP format.
| Assignee | ||
Updated•1 year ago
|
| Assignee | ||
Updated•1 year ago
|
Comment 1•1 year ago
|
||
I would add in build config (like opt, debug, asan, tsan, ccov), at this point we end up with something not as wide spread as before, but something closer to specific details. Unfortunately in many cases ignoring variants would result in up to 4 versions of the tests disabling.
Updated•1 year ago
|
| Assignee | ||
Comment 2•1 year ago
|
||
Including the build type adds a lot of lines when a test has to be skipped for a whole platform. Here is an example of a test which has to be skipped on all Linux variants:
"os == 'linux' && os_version == '18.04' && processor == 'x86_64' && asan", # Bug TBD (secondary)
"os == 'linux' && os_version == '18.04' && processor == 'x86_64' && debug", # Bug TBD (secondary)
"os == 'linux' && os_version == '18.04' && processor == 'x86_64' && opt", # Bug TBD (secondary)
"os == 'linux' && os_version == '18.04' && processor == 'x86_64' && tsan", # Bug TBD (secondary)
"os == 'linux' && os_version == '22.04' && processor == 'x86_64' && debug", # Bug TBD (secondary)
"os == 'linux' && os_version == '22.04' && processor == 'x86_64' && opt", # Bug TBD (secondary)
"os == 'mac' && os_version == '10.15' && processor == 'x86_64' && debug", # Bug TBD (secondary)
"os == 'mac' && os_version == '10.15' && processor == 'x86_64' && opt", # Bug TBD (secondary)
Would this be acceptable?
| Assignee | ||
Comment 3•1 year ago
|
||
| Assignee | ||
Comment 4•1 year ago
|
||
| Assignee | ||
Comment 5•1 year ago
|
||
| Assignee | ||
Comment 6•1 year ago
|
||
| Assignee | ||
Comment 7•1 year ago
|
||
| Assignee | ||
Comment 8•1 year ago
|
||
| Assignee | ||
Comment 9•1 year ago
|
||
| Assignee | ||
Comment 10•1 year ago
|
||
| Assignee | ||
Comment 11•1 year ago
|
||
Comment 12•1 year ago
|
||
in general that is what I am going for- we are getting a lot of pushback on this- so I think there are 2 optimizations to make:
- if all test variants are failing, do not include test variants (an edge case is a new test variant would then be automatically skipped).
- if all build_configs are failing, do not include build_config.
These are both optimizations for the human eye- and both have a problem of needing a complete list (on that day) of all build_config and test_variants we support. Likewise in the future as we automate more test manifest conditions, this will inevitably become a longer list, so the optimizations are a temporary fix to make developers feel better about the readability.
If we could generate a list of all permutations of os/os_version/build_config/test_variant for a given test suite, then theoretically we could create an optimization within skipfails.py that would:
- if ALL test_variants are listed on a skip-if, then remove all test_variants and remove duplicate lines
- if there are no test_variants and all build_configs are listed on a skip-if, then remove all build_configs and remove duplicate lines
We could generate a list of all permutations by parsing a taskgraph artifact.
:aryx, does this sound good? Arnaud, any further thoughts?
Comment 13•1 year ago
|
||
(In reply to Joel Maher ( :jmaher ) (UTC -8) from comment #12)
- if all build_configs are failing, do not include build_config.
build configs: debug, opt, asan, tsan, ccov, ...
- if ALL test_variants are listed on a skip-if, then remove all test_variants and remove duplicate lines
test variants: configured by a preference or environment variable change in the test task, e.g. http/3, new socketprocess interface.
Comment 12 sounds reasonable.
Comment 14•1 year ago
|
||
another issue with collecting the list of build_types/test_variants is that on new OS we don't have data in the taskgraph. An example would be adding tests to macosx 14.70 where we don't have any scheduled right now. In this case we would be running the tests on a new machine pool with custom taskgraph commands. This scenario would need to be considered with a solution as well.
| Assignee | ||
Comment 15•1 year ago
|
||
Retrieving the list of all build types and test variants may be tricky, I will look into this.
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
| Assignee | ||
Comment 16•1 year ago
|
||
Tries to simplify the conditions as much as possible by checking the
possible permutations.
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Comment 17•1 year ago
|
||
Comment 18•1 year ago
|
||
Comment 19•1 year ago
|
||
Comment 20•1 year ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/2182033571d6
https://hg.mozilla.org/mozilla-central/rev/912a6b41411e
https://hg.mozilla.org/mozilla-central/rev/39bdb6eba77d
https://hg.mozilla.org/mozilla-central/rev/906e9fe9c185
https://hg.mozilla.org/mozilla-central/rev/99fec8dd463d
https://hg.mozilla.org/mozilla-central/rev/a2e3c1ee92be
| Assignee | ||
Comment 21•1 year ago
|
||
| Assignee | ||
Comment 22•1 year ago
|
||
| Assignee | ||
Comment 23•1 year ago
|
||
| Assignee | ||
Comment 24•1 year ago
|
||
Comment 25•1 year ago
|
||
Comment 26•1 year ago
|
||
Comment 27•1 year ago
|
||
| bugherder | ||
Comment 28•1 year ago
|
||
| bugherder | ||
Comment 29•1 year ago
|
||
A patch has been attached on this bug, which was already closed. Filing a separate bug will ensure better tracking. If this was not by mistake and further action is needed, please alert the appropriate party. (Or: if the patch doesn't change behavior -- e.g. landing a test case, or fixing a typo -- then feel free to disregard this message)
Comment 30•1 year ago
|
||
Comment 31•1 year ago
|
||
| bugherder | ||
| Assignee | ||
Comment 32•1 year ago
|
||
Comment 33•1 year ago
|
||
Comment 34•1 year ago
|
||
Comment 35•1 year ago
|
||
| bugherder | ||
Description
•