From 54a6b21c28c827c7a9fbd1a327bd19956c8e320f Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Thu, 21 Nov 2019 12:10:36 -0800 Subject: [PATCH] Run autocloud tests on Cloud_Base qcow2 images autocloud is dying soon. So, we want to run the tests in openQA instead. This adds a test module called 'autocloud' and a test suite called 'cloud_autocloud' which basically replicate what autocloud does (download a tarball full of tests and run each one), and the necessary template bits to run it on Cloud_Base qcow2 images. Signed-off-by: Adam Williamson --- templates | 80 ++++++++++++++++++++++++++++++++++++++++++++ tests/autocloud.pm | 82 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 162 insertions(+) create mode 100644 tests/autocloud.pm diff --git a/templates b/templates index 3515a3cc..bb16f8f7 100755 --- a/templates +++ b/templates @@ -1855,6 +1855,17 @@ }, test_suite => { name => "server_firewall_default" }, }, + { + machine => { name => "64bit" }, + prio => 30, + product => { + arch => "x86_64", + distri => "fedora", + flavor => "Cloud_Base-qcow2-qcow2", + version => "*", + }, + test_suite => { name => "cloud_autocloud" }, + }, { machine => { name => "64bit" }, prio => 61, @@ -3415,6 +3426,18 @@ }, test_suite => { name => "desktop_background" }, }, + { + group_name => "Fedora PowerPC", + machine => { name => "ppc64le" }, + prio => 30, + product => { + arch => "ppc64le", + distri => "fedora", + flavor => "Cloud_Base-qcow2-qcow2", + version => "*", + }, + test_suite => { name => "cloud_autocloud" }, + }, { group_name => "Fedora AArch64", machine => { name => "aarch64" }, @@ -4291,6 +4314,18 @@ }, test_suite => { name => "server_firewall_default" }, }, + { + group_name => "Fedora AArch64", + machine => { name => "aarch64" }, + prio => 30, + product => { + arch => "aarch64", + distri => "fedora", + flavor => "Cloud_Base-qcow2-qcow2", + version => "*", + }, + test_suite => { name => "cloud_autocloud" }, + }, ], Machines => [ { @@ -4473,6 +4508,19 @@ ], version => "*", }, + { + arch => "x86_64", + distri => "fedora", + flavor => "Cloud_Base-qcow2-qcow2", + name => "", + settings => [ + { key => "ISO", value => "cloudinit.iso" }, + { key => "TEST_TARGET", value => "HDD_1" }, + { key => "ROOT_PASSWORD", value => "weakpassword" }, + { key => "BOOTFROM", value => "c" }, + ], + version => "*", + }, { arch => "i386", distri => "fedora", @@ -4654,6 +4702,19 @@ ], version => "*", }, + { + arch => "ppc64le", + distri => "fedora", + flavor => "Cloud_Base-qcow2-qcow2", + name => "", + settings => [ + { key => "ISO", value => "cloudinit.iso" }, + { key => "TEST_TARGET", value => "HDD_1" }, + { key => "ROOT_PASSWORD", value => "weakpassword" }, + { key => "BOOTFROM", value => "c" }, + ], + version => "*", + }, { arch => "aarch64", distri => "fedora", @@ -4696,6 +4757,19 @@ ], version => "*", }, + { + arch => "aarch64", + distri => "fedora", + flavor => "Cloud_Base-qcow2-qcow2", + name => "", + settings => [ + { key => "ISO", value => "cloudinit.iso" }, + { key => "TEST_TARGET", value => "HDD_1" }, + { key => "ROOT_PASSWORD", value => "weakpassword" }, + { key => "BOOTFROM", value => "c" }, + ], + version => "*", + }, ], TestSuites => [ { @@ -5887,5 +5961,11 @@ { key => "INSTALL_NO_USER", value => "1" }, ], }, + { + name => "cloud_autocloud", + settings => [ + { key => "POSTINSTALL", value => "autocloud" }, + ], + }, ], } diff --git a/tests/autocloud.pm b/tests/autocloud.pm new file mode 100644 index 00000000..b7cc909b --- /dev/null +++ b/tests/autocloud.pm @@ -0,0 +1,82 @@ +use base "installedtest"; +use strict; +use testapi; +use utils; + +sub _soft_fail_run { + my ($test, $sudo) = @_; + $sudo //= 1; + my $cmd = ""; + $cmd = "sudo " if ($sudo); + $cmd .= "python3 -m unittest"; + if (script_run "$cmd $test -v") { + record_soft_failure "Non-blocking test $test failed"; + } +} + +sub run { + my $self = shift; + bypass_1691487; + # we need to use script_run as regular user + assert_script_run "chmod ugo+w /dev/" . $serialdev; + # let's go to another tty and login as regular user + send_key "alt-f2"; + console_login(user=>"test", password=>"weakpassword"); + assert_script_run "curl -O https://fedorapeople.org/groups/qa/tunirtests.tar.gz"; + assert_script_run "tar xvf tunirtests.tar.gz"; + assert_script_run "sudo python3 -m unittest tunirtests.atomictests.TestAtomic01Status -v"; + _soft_fail_run "tunirtests.nongatingtests.TunirNonGatingtests"; + _soft_fail_run "tunirtests.nongatingtests.TunirNonGatingtestBzip2"; + _soft_fail_run "tunirtests.nongatingtests.TunirNonGatingtestsCpio"; + _soft_fail_run "tunirtests.nongatingtests.TunirNonGatingtestDiffutills"; + _soft_fail_run "tunirtests.nongatingtests.TunirNonGatingtestaudit"; + _soft_fail_run "tunirtests.selinux.TestSELinux"; + _soft_fail_run "tunirtests.sshkeygentest.sshkeygenTest"; + _soft_fail_run "tunirtests.testumountroot.TestUmountRoot"; + assert_script_run "sudo python3 -m unittest tunirtests.cloudtests.TestBase -v"; + assert_script_run "sudo python3 -m unittest tunirtests.cloudtests.TestCloudtmp -v"; + assert_script_run "sudo python3 -m unittest tunirtests.cloudtests.Testtmpmount -v"; + assert_script_run "sudo python3 -m unittest tunirtests.cloudtests.Testnetname -v"; + # this test only works properly as a regular user + _soft_fail_run "tunirtests.cloudtests.TestJournalWritten", 0; + assert_script_run "sudo python3 -m unittest tunirtests.cloudservice.TestServiceStop -v"; + assert_script_run "sudo python3 -m unittest tunirtests.cloudservice.TestServiceDisable -v"; + type_string "sudo reboot\n"; + boot_to_login_screen(timeout => 180); + console_login(user=>"root", password=>"weakpassword"); + # we need to use script_run as regular user again + assert_script_run "sudo chmod ugo+w /dev/" . $serialdev; + # let's go to another tty and login as regular user again + send_key "alt-f2"; + console_login(user=>"test", password=>"weakpassword"); + _soft_fail_run "tunirtests.testreboot.TestReboot"; + assert_script_run "sudo python3 -m unittest tunirtests.cloudservice.TestServiceManipulation -v"; + # this test only works properly as a regular user + _soft_fail_run "tunirtests.cloudtests.TestJournalWrittenAfterReboot", 0; + type_string "sudo reboot\n"; + boot_to_login_screen(timeout => 180); + console_login(user=>"root", password=>"weakpassword"); + # we need to use script_run as regular user again + assert_script_run "sudo chmod ugo+w /dev/" . $serialdev; + # let's go to another tty and login as regular user again + send_key "alt-f2"; + console_login(user=>"test", password=>"weakpassword"); + assert_script_run "sudo python3 -m unittest tunirtests.cloudservice.TestServiceAfter -v"; + assert_script_run "sudo python3 -m unittest tunirtests.atomictests.TestDockerInstalled -v"; + assert_script_run "sudo python3 -m unittest tunirtests.atomictests.TestDockerStorageSetup -v"; + assert_script_run "sudo python3 -m unittest tunirtests.atomictests.TestAtomicFirstBootRun -v"; + assert_script_run "sudo python3 -m unittest tunirtests.atomictests.TestAtomicCommand -v"; + assert_script_run "sudo python3 -m unittest tunirtests.atomictests.TestAtomicDockerImage -v"; + assert_script_run "sudo python3 -m unittest tunirtests.atomictests.TestRootMount -v"; + assert_script_run "sudo python3 -m unittest tunirtests.atomictests.Testreadonlymount -v"; + assert_script_run "sudo python3 -m unittest tunirtests.atomictests.TestDockerDaemon -v"; +} + + +sub test_flags { + return { fatal => 1 }; +} + +1; + +# vim: set sw=4 et: