diff --git a/templates b/templates index 382e4ee2..caa74c89 100755 --- a/templates +++ b/templates @@ -215,6 +215,39 @@ }, test_suite => { name => "base_services_start" }, }, + { + machine => { name => "64bit" }, + prio => 40, + product => { + arch => "x86_64", + distri => "fedora", + flavor => "generic_boot", + version => "*", + }, + test_suite => { name => "base_service_manipulation" }, + }, + { + machine => { name => "64bit" }, + prio => 40, + product => { + arch => "x86_64", + distri => "fedora", + flavor => "workstation_live", + version => "*", + }, + test_suite => { name => "base_service_manipulation" }, + }, + { + machine => { name => "64bit" }, + prio => 40, + product => { + arch => "x86_64", + distri => "fedora", + flavor => "server_dvd", + version => "*", + }, + test_suite => { name => "base_service_manipulation" }, + }, { machine => { name => "64bit" }, prio => 30, @@ -1287,5 +1320,14 @@ { key => "HDD_1", value => "disk_%FLAVOR%_%MACHINE%.qcow2" }, ], }, + { + name => "base_service_manipulation", + settings => [ + { key => "ENTRYPOINT", value => "base_service_manipulation" }, + { key => "START_AFTER_TEST", value => "default_install" }, + { key => "BOOTFROM", value => "c" }, + { key => "HDD_1", value => "disk_%FLAVOR%_%MACHINE%.qcow2" }, + ], + }, ], } diff --git a/tests/base_service_manipulation.pm b/tests/base_service_manipulation.pm new file mode 100644 index 00000000..60850e9a --- /dev/null +++ b/tests/base_service_manipulation.pm @@ -0,0 +1,61 @@ +use base "installedtest"; +use strict; +use testapi; + +sub run { + my $self=shift; + # wait for boot to complete + $self->boot_to_login_screen("", 30); + # switch to TTY3 for both, graphical and console tests + $self->root_console(tty=>3); + # we could make this slightly more 'efficient' by assuming sshd + # is always going to be enabled/running at first, but it's safer + # to force an expected starting state. + script_run "systemctl stop sshd.service"; + script_run "systemctl disable sshd.service"; + script_run "reboot"; + $self->boot_to_login_screen("", 30); + $self->root_console(tty=>3); + # note the use of ! here is a bash-ism, but it sure makes life easier + assert_script_run '! systemctl is-enabled sshd.service'; + assert_script_run '! systemctl is-active sshd.service'; + assert_script_run '! ps -C sshd'; + script_run "systemctl start sshd.service"; + assert_script_run '! systemctl is-enabled sshd.service'; + assert_script_run 'systemctl is-active sshd.service'; + assert_script_run 'ps -C sshd'; + script_run "systemctl stop sshd.service"; + assert_script_run '! systemctl is-enabled sshd.service'; + assert_script_run '! systemctl is-active sshd.service'; + assert_script_run '! ps -C sshd'; + script_run "systemctl enable sshd.service"; + assert_script_run 'systemctl is-enabled sshd.service'; + assert_script_run '! systemctl is-active sshd.service'; + assert_script_run '! ps -C sshd'; + script_run "reboot"; + $self->boot_to_login_screen("", 30); + $self->root_console(tty=>3); + assert_script_run 'systemctl is-enabled sshd.service'; + assert_script_run 'systemctl is-active sshd.service'; + assert_script_run 'ps -C sshd'; + script_run "systemctl disable sshd.service"; + script_run "reboot"; + $self->boot_to_login_screen("", 30); + $self->root_console(tty=>3); + assert_script_run '! systemctl is-enabled sshd.service'; + assert_script_run '! systemctl is-active sshd.service'; + assert_script_run '! ps -C sshd'; +} + + +sub test_flags { + # without anything - rollback to 'lastgood' snapshot 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 { fatal => 1 }; +} + +1; + +# vim: set sw=4 et: