Investigate adding WPT's "groups" to Mozilla's test metadata
Categories
(Testing :: web-platform-tests, task, P3)
Tracking
(firefox78 fixed)
Tracking | Status | |
---|---|---|
firefox78 | --- | fixed |
People
(Reporter: ahal, Assigned: ahal)
References
(Blocks 1 open bug)
Details
Attachments
(2 files)
The WPT harness creates test "groups" here:
https://searchfox.org/mozilla-central/rev/7fd1c1c34923ece7ad8c822bee062dd0491d64dc/testing/web-platform/tests/tools/wptrunner/wptrunner/testloader.py#347
These "groups" are the smallest unit of tests that will run together in a single browser instance (i.e no restart between them). It's also the value that mozlog reports in its suite_start
log action. Consequently, they're what get stored in ActiveData and used by bugbug to determine what to schedule.
It would be very helpful, if these group values could somehow be propagated to the metadata that manifestupdate
returns, as called by moztest.TestResolver
here:
https://searchfox.org/mozilla-central/rev/7fd1c1c34923ece7ad8c822bee062dd0491d64dc/testing/mozbase/moztest/moztest/resolve.py#719
Maybe we would create a new wpttest.Test.group
attribute or something.
This would allow us to store the group
in each test's manifest_relpath
key just like we have for all the other test harnesses. That value could then be used to by the taskgraph to make sure we don't accidentally split up groups when chunking.
I'm unsure if this is feasible / desirable from WPT's perspective though.
Assignee | ||
Comment 1•5 years ago
|
||
James, can you comment on the last sentence? Any tips on how we can accomplish this?
Assignee | ||
Updated•5 years ago
|
Comment 2•5 years ago
|
||
So the problem is that the "groups" from the point of view of wpt aren't a constant, but depend on the run-by-dir
setting. And as :egao found in the other bug it's a little more complex than that even because foo/
can be a group for all the tests directly under foo
but not the tests under foo/bar
. So you need to know what run-by-dir
is to make sense of the groups later (e.g. because if it's set to 2 then foo/bar/
will include foo/bar/baz
but if it's set to 3 it won't).
So we could certainly make manifestupdate.run
take a run_by_dir
setting and return a mapping of groups to test ids using PathGroupLoader.tests_by_group
. But I think maybe if we want this grouping abstraction to work with wpt we need a way to specify that the command line arguments are to be treated as test groups rather than as paths, or something (so that ./mach wpt --run-by-dir 3 --paths-as-groups foo/barwould exclude
foo/bar/baz`).
Assignee | ||
Comment 3•5 years ago
|
||
That all sounds fine to me!
But I think maybe if we want this grouping abstraction to work with wpt we need a way to specify that the command line arguments are to be treated as test groups rather than as paths, or something (so that ./mach wpt --run-by-dir 3 --paths-as-groups foo/barwould excludefoo/bar/baz`).
This is bug 1634554 :).
However, there's benefit to solving this bug even without that other bug. Edwin's current chunking algorithm creates some arbitrary groups that are different than the ones that WPT creates. He tries to make them less granular so that we don't accidentally split WPT-created groups across chunks. This has some downsides though:
- The groups that ActiveData and bugbug (aka the ML algorithm) recognize come from WPT, and the groups that the taskgraph recognizes are different. We need to translate them.
- The groups that the taskgraph will ultimately end up running will be larger than necessary (bad from a selection efficiency standpoint).
If instead the groups that the taskgraph uses to run its chunking algorithm are the same ones that bugbug knows about, the above problems disappear.
I don't think Edwin's work needs to block on this though. The group translation should be easy enough and we can live with less than ideal scheduling for now. This and bug 1634554 are follow-ups to his work in bug 1608837.
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 4•4 years ago
|
||
This moves the creation of WPT groups into the TestResolver, where all kinds of
other consumers will be able to access them.
Updated•4 years ago
|
Comment 5•4 years ago
|
||
Comment on attachment 9150460 [details]
Bug 1634551 - [taskgraph] Move WPT group assignment into the TestResolver, r?egao
Revision D76085 was moved to bug 1633866. Setting attachment 9150460 [details] to obsolete.
Updated•4 years ago
|
Assignee | ||
Comment 6•4 years ago
|
||
This shouldn't materially change the keys in the runtimes files.
Depends on D76085
Comment 8•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/c271cdf24dd5
https://hg.mozilla.org/mozilla-central/rev/0356e5fff183
Description
•