From bf8c82710732d5b7f74a4bfb692c6f13a097ef5b Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Tue, 22 Mar 2016 07:19:47 -0700 Subject: [PATCH] shutdown before uploading disk images Summary: I believe the failures in the Server DVD chained Base tests are happening because the VM is not cleanly shut down before the disk image is uploaded. This adds a shutdown step to all tests that upload a disk image (so, for now, just default_install). To keep things simple it just runs 'shutdown' from a root console, rather than using graphical desktop shutdown methods, as the aim is only to make the disk state clean, not to test shutdown exactly. I've tested this on staging; a Server DVD test run with this change produced a full set of passed tests, as opposed to all the Base tests failing because the system didn't boot properly. Workstation and KDE tests seem to work fine also. For the record, SUSE does much the same thing as this commit. Test Plan: Do a full test run and make sure everything that worked before still does. Check that all default_install tests have a _console_shutdown step added, and it works, and all chained tests work (or fail for some unrelated reason, but make sure this doesn't break them). Reviewers: jskladan, garretraziel Reviewed By: garretraziel Subscribers: tflink Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D787 --- main.pm | 4 ++++ tests/_console_shutdown.pm | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 tests/_console_shutdown.pm diff --git a/main.pm b/main.pm index 21d40077..04ad8bcd 100644 --- a/main.pm +++ b/main.pm @@ -192,6 +192,10 @@ else if (get_var("UEFI")) { autotest::loadtest "tests/uefi_postinstall.pm"; } + # we should shut down before uploading disk images + if (get_var("STORE_HDD_1") || get_var("PUBLISH_HDD_1")) { + autotest::loadtest "tests/_console_shutdown.pm"; + } } diff --git a/tests/_console_shutdown.pm b/tests/_console_shutdown.pm new file mode 100644 index 00000000..31dd0d82 --- /dev/null +++ b/tests/_console_shutdown.pm @@ -0,0 +1,32 @@ +use base "installedtest"; +use strict; +use testapi; + +sub run { + my $self = shift; + # this shutdown code is only to make sure the guest disk is clean + # before uploading an image of it, we're really not "testing" + # shutdown here. So to keep things simple and reliable, we do not + # use the desktops' graphical shutdown methods, we just go to a + # console and run 'poweroff'. We can write separate tests for + # properly testing shutdown/reboot/log out from desktops. + $self->root_console(tty=>3, check=>0); + script_run("poweroff", 0); + assert_shutdown; +} + +# this is not 'fatal' or 'important' as all wiki test cases are passed +# even if shutdown fails. we should have a separate test for shutdown/ +# logout/reboot stuff, might need some refactoring. +sub test_flags { + # without anything - rollback to 'lastgood' snapshot if failed + # 'norollback' - don't rollback if failed + # 'fatal' - whole test suite is in danger if this fails + # 'milestone' - after this test succeeds, update 'lastgood' + # 'important' - if this fails, set the overall state to 'fail' + return {'norollback' => 1}; +} + +1; + +# vim: set sw=4 et: