-
Notifications
You must be signed in to change notification settings - Fork 257
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
tool/autopilot: mark incompletely executed tests #5432
Comments
...with "ABORT", in case of an unmet 'assert_spec' in the run scenario. Issue genodelabs#5432
...to check if the requirements for the run scenario are satisfied. By placing the assertion just before 'run_genode_until forever', the automated tests still validate the 'init'-configuration and verify that the components build successfully. Issue genodelabs#5432
...to check if the requirements for the run scenario are satisfied. Issue genodelabs#5432
Thank you @rite for the excellent problem statement and the sensible suggestion for improving the tooling. Even though I haven't yet had a closer look at your commits, I very much appreciate the direction. It will certainly improve the quality of data that we at Genode Labs gather from our CI. I'm looking forward to review your commits in detail once I have wrapped up my current line of work (#5428). |
Now - after having looked at your commits - I like it even more. Let's go for it!
The naming is just right. It is intuitive and void of ceremony. What do you think of how we should go about updating the existing run scripts? |
Thanks for the affirmative feedback. I also like to rename the procedure I suggest that I:
I expect that almost everything is trivial, but I miss the infrastructure to test all changes myself. And my focus is on testing with base-linux, base-nova, base-hw. |
I don't merely approve, but very much appreciate it! Thanks for the generous plan, which is much more than I hoped for. Hats off for your willingness to adjust the run scripts. It goes without saying that we will do our share of testing and (potentially) fixing collateral effects that we'll observe in our CI. |
This procedure is useful for run scripts that depend for example on a board support package that is provided only for certain boards, possibly by a third-party repo. Issue genodelabs#5432
Renaming 'get_cmd_switch' and 'get_cmd_arg' to 'have_cmd_arg' and 'cmd_arg' respectively blends in nicely with the now omnipresent pattern with 'have_[spec|board|installed|include]'. This commit deprecates 'get_cmd_switch' and 'get_cmd_arg', which will be removed in a later commit. Issue genodelabs#5432
...to be consistent with the naming in tool/run. Related to genodelabs#5432
...to be consistent with the naming in tool/run. Related to genodelabs#5432
...with "ABORT", in case of an unmet 'assert_spec' in the run scenario. Issue genodelabs#5432
I rebased on current master and pushed a refined implementation of the proposed changes in "tool" to my feature branch, together with a commit that updates the run scripts in the repo "os". I added some notes/questions as comments directly to the diff. |
Splendid! |
Thank you! I pushed three fixup commits regarding your feedback. Some |
As described in
tool/autopilot
, "The autopilot utility automates the process of executing multiple run scripts on different test targets". For exactly this purpose it is also used by Gapfruit since quite some time and helped us to simplify the definition of the continuous integration pipeline. This is a proposal to further streamline the execution of automated tests.Let me start with an example:
The above command produces a test summary like:
Let's have a look at the executed run scripts individually:
run/nova
: Obviously, executing this run script on base-linux or base-hw doesn't make sense. Correspondingly, it is marked as "UNAVAILABLE".run/lx_fs_import
: Similarly,lx_fs_import
is not supposed to work on base-hw and base-nova. However, it is marked as "OK". Inspecting the respective log files reveals that the "`Test requires 'linux'".run/smbios_decoder
: Again for obvious reasons,smbios_decoder
is not supposed to work on base-linux, yet it is marked as "OK". Inspecting the respective log files reveals that the "Run script is only supported on hw/pc and nova/pc"run/init_smp
: Naively, I would assume this run script is supposed to work on base-hw and base-nova, but maybe not on base-linux. Inspecting the log files reveals that "Run script does not support Qemu". On real X86-hardware, the tests would be executed on base-nova but not on base-hw, because of theassert_spec nova
-statement in the run script. The autopilot summary doesn't give any information in this regard: in any case, the execution of the run script is marked as "OK".framebuffer
: This run script doesrun_genode_until forever
and is not supposed to be executed using the autopilot. Therefore it isn't in the list of automatically executed test cases (tool/autopilot.list
).One of the main goals of this proposal is that the autopilot summary includes the information whether a test has actually been executed or skipped/aborted. In order to archive that, run scripts have to declare their requirements explicitly and in a somewhat formalized/streamlined manner. As a side effect, this also simplifies to search (grep) for run scripts that – for example – aren't executed in autopilot-mode or won't be executed on a certain kernel. Further, this allows to pass all available run scripts to the autopilot and it's not necessary – while still possible – to manually curate a list of tests to be executed. The test pipeline can be defined in a way that newly added run scripts will automatically be executed, unless it is explicitly stated otherwise in the run script itself.
Without changing any run scripts, the test summary with commit d631b42 looks like:
Commit 0dd3bf1 introduces a "generalized"
assert
-procedure that can be used by a run script to express its requirements. The two remaining commits of this branch adaptrun/framebuffer
andrun/smbios_decode
to make use of thisassert
-procedure.What do you think about the general direction of this proposal (apart from the actual implementation: for example naming the procedure
assert
feels "a bit too global")?The text was updated successfully, but these errors were encountered: