-
Notifications
You must be signed in to change notification settings - Fork 123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Split plan to multiple plans by --max tests #2907
base: main
Are you sure you want to change the base?
Conversation
Splitting is easy. Running them will be hard.
|
Another approach could be to separate only the |
I'm afraid I don't follow, can you elaborate? |
It depends on what the goal for splitting the plans is. If it's for running the tests in parallel then this approach where all test steps are separated This can be wasteful if the |
After some tweaks, this prototype works. It's bad, it's crude, and it probably breaks a dozen "must-have" assumptions mentioned in #308, but I'd call it a start. Each subplan gets its own workdir, all subplans have different names, there is no smart aggregation, the original plan still appears in the output, there's no sharing of guests, all plans provision all guests, not just those needed for their tests, the split is based purely on the number of tests discovered, and so on and on and on. Multiple other methods were proposed for splitting, other use cases, and possibly even combinations of methods (separate by test-level |
Plan-level parallelization, i.e. tmt performing more than one plan at the same time, is beyond tmt capabilities right now. It will be needed though - Testing Farm does it and tmt will need to learn to take over this functionality, and some use cases for plan splitting will benefit greatly (and some wouldn't even make much sense without it). Some of the use cases for the splitting itself mentioned in #308:
I assume this scenario is one of those that would benefit from the plan-level parallelization, e.g. one subplan doing its expensive |
tmt/base.py
Outdated
@@ -2257,6 +2258,51 @@ def header(self) -> None: | |||
if self.summary: | |||
self.verbose('summary', self.summary, 'green') | |||
|
|||
# TODO: move these to some place nice, like a plan-splitting plugin. A check | |||
# and a splitter can easily form new family of plugins. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I love this idea.
1d64b98
to
1080465
Compare
1080465
to
ee9bc62
Compare
661b7e0
to
c62129f
Compare
c7ed46d
to
1b3af69
Compare
1b3af69
to
2b0b3e5
Compare
2b0b3e5
to
efb2676
Compare
efb2676
to
58709fa
Compare
Pull Request Checklist