mirror of
https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
synced 2024-11-16 19:53:09 +00:00
777e378a0d
per https://pagure.io/fedora-qa/issue/766 , this is a hole in our current test approach: we are testing whatever the current 'stable' toolbox image is for the release, not the image that is produced as part of the compose. This enhances the test to test both, when possible. If the var TOOLBOX_IMAGE is set, we will first check that a 'normal' `toolbox create` works - i.e. that all the toolbox logic works right and it can actually find a default image to download - but then we throw that toolbox away, download the image (the value of the var is expected to be a URL for the image file), register it with skopeo, and then recreate the container using that image. Then we proceed with the rest of the test as usual. If TOOLBOX_IMAGE is not set, the test should proceed as before, using the 'default' downloaded image. Signed-off-by: Adam Williamson <awilliam@redhat.com>
77 lines
3.1 KiB
Perl
77 lines
3.1 KiB
Perl
use base "installedtest";
|
|
use strict;
|
|
use testapi;
|
|
use utils;
|
|
|
|
|
|
sub run {
|
|
my $self = shift;
|
|
$self->root_console(tty => 3);
|
|
# on non-canned flavors, we need to install toolbox
|
|
assert_script_run "dnf -y install toolbox", 360 unless (get_var("CANNED"));
|
|
# check toolbox is installed
|
|
assert_script_run "rpm -q toolbox";
|
|
# check to see if you can create a new toolbox container (this
|
|
# will download the 'current' image for the same release and use
|
|
# that; we want to check that works even if we will go on to test
|
|
# an image from the compose below)
|
|
assert_script_run "toolbox create container1 -y", 300;
|
|
my $image = get_var("TOOLBOX_IMAGE");
|
|
if ($image) {
|
|
# we have a toolbox image to test in the item under test
|
|
# (probably a compose), so let's recreate container1 using
|
|
# that instead
|
|
my $relnum = get_release_number;
|
|
assert_script_run 'toolbox rm container1';
|
|
assert_script_run "toolbox rmi containers-storage:registry.fedoraproject.org/fedora-toolbox:$relnum";
|
|
assert_script_run "curl -o /var/tmp/toolbox.tar.gz $image", 300;
|
|
# this registers the downloaded image such that `toolbox create`
|
|
# will use it, rather than downloading one. it takes a while
|
|
|
|
assert_script_run "skopeo copy docker-archive:/var/tmp/toolbox.tar.gz containers-storage:registry.fedoraproject.org/fedora-toolbox:$relnum", 600;
|
|
# we do not pass -y this time as we do not want to allow a
|
|
# download, if toolbox wants to do one, something has gone
|
|
# wrong. unfortunately there is no -n so we just have to let
|
|
# it time out in that case
|
|
assert_script_run "toolbox create container1", 60;
|
|
}
|
|
# check to see if toolbox can list container
|
|
assert_script_run "toolbox list | grep container1";
|
|
# run a specific command on a given container
|
|
validate_script_output "toolbox run --container container1 uname -a", sub { m/Linux toolbox/ };
|
|
# enter container to test
|
|
type_string "toolbox enter container1\n";
|
|
# holds on to the screen
|
|
assert_screen "console_in_toolbox", 180;
|
|
# exits toolbox container
|
|
type_string "exit\n";
|
|
sleep 3;
|
|
assert_script_run "clear";
|
|
# Stop a container
|
|
assert_script_run 'podman stop container1';
|
|
# Toolbox remove container
|
|
assert_script_run "toolbox rm container1";
|
|
# Toolbox remove image and their associated containers
|
|
assert_script_run "toolbox rmi --all --force";
|
|
# create a rhel image with distro and release flags
|
|
assert_script_run "toolbox -y create --distro rhel --release 9.1", 300;
|
|
# validate rhel release file to ensure correct version
|
|
type_string "toolbox enter rhel-toolbox-9.1\n";
|
|
assert_screen "console_in_toolbox", 180;
|
|
type_string "exit\n";
|
|
sleep 3;
|
|
#run a specific command on a given choice of distro and release
|
|
validate_script_output "toolbox run --distro rhel --release 9.1 cat /etc/redhat-release", sub { m/Red Hat Enterprise Linux release 9.1 \(Plow\)/ };
|
|
|
|
|
|
}
|
|
|
|
|
|
sub test_flags {
|
|
return {fatal => 1};
|
|
}
|
|
|
|
1;
|
|
|
|
# vim: set sw=4 et
|