https://bugs.winehq.org/show_bug.cgi?id=39487
Bug ID: 39487 Summary: Make step dependencies more flexible Product: Wine-Testbot Version: unspecified Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: unknown Assignee: wine-bugs@winehq.org Reporter: fgouget@codeweavers.com Distribution: ---
The TestBot jobs are split into steps and tasks. * The steps are numbered and must be executed in order. Each step has an associated file. * Each step has one or more tasks which can all be run in parallel.
Typically the first step is the build step associated to the patch. It produces the 32 and 64 bit executables for the following steps hence why it has to be executed first. When it fails the other steps are skipped which is not the case for the other steps.
So the general structure is: Step 1 - patch.diff - Build Step 2 - test_32.exe - One task per VM Step 3 - test_64.exe - One task per VM
So one source of inefficiency is that the 64 bit tests cannot start until all the 32 bit tests have completed. It does not necessarily make the overall job execution longer but it can leave a VM host idle while it waits for the remaining 32 bit tests to complete. And if a developer is watching the job's page he will not know of 64 bit failures until then.
So while the build step has to come before all others, that condition should be relaxed for the other steps.
The database schema presented in bug 39412 adds a DependencyNo field to the Step table so that step dependencies can be made explicit. This would allow making both test steps depend on build one. Note that with this scheme a given step could not directly depend on multiple other steps but that does not seem needed.
It would also make more explicit the fact that test steps cannot be run if the build one fails instead of hard-coding that behavior in Jobs::UpdateStatus().