9174472637
It has been noted that updates have broken podman in the past and this is a major issue for some users. Let's create a new update flavor and run the test in it. We'll use the server image as a base, but it's not really a server test, so I'm giving it its own flavor so it's not run on updates that we only want to run server tests on, and we can schedule just this test to run on container-y updates. As part of this, we need to install podman before running the test; for flavors we currently run it on we expect podman to be preinstalled, but that's not true for the server base image. Signed-off-by: Adam Williamson <awilliam@redhat.com>
53 lines
2.0 KiB
Perl
53 lines
2.0 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", 180 unless (get_var("CANNED"));
|
|
# check podman is installed
|
|
assert_script_run "rpm -q podman";
|
|
# 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)', 120;
|
|
# 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:
|