1
0
mirror of https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git synced 2024-11-10 17:24:20 +00:00
os-autoinst-distri-fedora/tests/toolbox.pm
Adam Williamson dc7ff01f27 toolbox: handle OCI images (as produced by Kiwi)
We changed to building toolbox container images with Kiwi. These
are OCI archives, not docker archives. So we need to call skopeo
appropriately.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-03-14 14:34:38 -07:00

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
my $format = $image =~ "oci" ? "oci-archive" : "docker-archive";
assert_script_run "skopeo copy $format:/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