mirror of
https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
synced 2024-11-22 05:53:09 +00:00
2e330f78ab
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>
59 lines
2.3 KiB
Perl
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:
|