1
0
mirror of https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git synced 2024-11-05 15:34:22 +00:00
os-autoinst-distri-fedora/tests/podman.pm
Adam Williamson 2e330f78ab podman: also run the upstream integration test suite
Per https://github.com/containers/podman/pull/19302 and
https://github.com/containers/podman/issues/19299 , upstream
have kindly set things up so we can easily run relevant parts of
the upstream test suite as an integration test in openQA. This
should help us catch if changes in other components break key
features of podman.

This only runs any tests with podman 4.6.1 or higher, but with
earlier versions it just does nothing and exits 0, so that's
fine. 4.6.1 is in F39 and Rawhide already, will land for F37
and F38 shortly.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2023-08-16 22:56:20 -07:00

59 lines
2.3 KiB
Perl

use base "installedtest";
use strict;
use lockapi;
use mmapi;
use tapnet;
use testapi;
use utils;
sub run {
my $self = shift;
$self->root_console(tty => 3);
# on non-canned flavors, we need to install podman
assert_script_run "dnf -y install podman", 240 unless (get_var("CANNED"));
# check podman is installed
assert_script_run "rpm -q podman";
my $relnum = get_release_number;
unless (get_var("CANNED")) {
# run the upstream integration tests
assert_script_run "dnf -y install podman podman-tests bats", 300;
assert_script_run "bats --filter-tags distro-integration /usr/share/podman/test/system", 300;
}
# check to see if you can pull an image from the registry
assert_script_run "podman pull registry.fedoraproject.org/fedora:latest", 300;
# run hello-world to test
validate_script_output "podman run -it registry.fedoraproject.org/fedora:latest echo Hello-World", sub { m/Hello-World/ };
# create a Dockerfile
assert_script_run 'printf \'FROM registry.fedoraproject.org/fedora:latest\nRUN /usr/bin/dnf install -y httpd\nEXPOSE 80\nCMD ["-D", "FOREGROUND"]\nENTRYPOINT ["/usr/sbin/httpd"]\n\' > Dockerfile';
# Build an image
assert_script_run 'podman build -t fedora-httpd $(pwd)', 180;
# Verify the image
validate_script_output "podman images", sub { m/fedora-httpd/ };
# Run the container
assert_script_run "podman run -d -p 80:80 localhost/fedora-httpd";
# Verify the container is running
validate_script_output "podman container ls", sub { m/fedora-httpd/ };
# Test apache is working
assert_script_run "curl http://localhost";
# Open the firewall, except on CoreOS where it's not installed
unless (get_var("SUBVARIANT") eq "CoreOS") {
assert_script_run "firewall-cmd --permanent --zone=internal --add-interface=cni-podman0";
assert_script_run "firewall-cmd --permanent --zone=internal --add-port=80/tcp";
}
# tell client we're ready and wait for it to send the message
mutex_create("podman_server_ready");
my $children = get_children();
my $child_id = (keys %$children)[0];
mutex_lock("podman_connect_done", $child_id);
mutex_unlock("podman_connect_done");
}
sub test_flags {
return {fatal => 1};
}
1;
# vim: set sw=4 et: