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: