mirror of
https://github.com/containers/podman
synced 2024-10-21 01:34:37 +00:00
43714cac21
Run `podman auto-update` in the systemd system tests. Note that this is a first step to at least exercise parts of `auto-update` in the CI. The service won't get updated just yet as we need to set up a local registry, and push a new image. I do not have enough time at the moment to do that but consider this change already as an improvement. We are experiencing some issues in #6793 w.r.t. to auto-updates but couldn't track down the root cause yet. Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
84 lines
2.2 KiB
Bash
84 lines
2.2 KiB
Bash
#!/usr/bin/env bats -*- bats -*-
|
|
#
|
|
# Tests generated configurations for systemd.
|
|
#
|
|
|
|
load helpers
|
|
|
|
SERVICE_NAME="podman_test_$(random_string)"
|
|
|
|
SYSTEMCTL="systemctl"
|
|
UNIT_DIR="/usr/lib/systemd/system"
|
|
if is_rootless; then
|
|
UNIT_DIR="$HOME/.config/systemd/user"
|
|
mkdir -p $UNIT_DIR
|
|
|
|
SYSTEMCTL="$SYSTEMCTL --user"
|
|
fi
|
|
UNIT_FILE="$UNIT_DIR/$SERVICE_NAME.service"
|
|
|
|
function setup() {
|
|
skip_if_remote
|
|
|
|
basic_setup
|
|
}
|
|
|
|
function teardown() {
|
|
run '?' $SYSTEMCTL stop "$SERVICE_NAME"
|
|
rm -f "$UNIT_FILE"
|
|
$SYSTEMCTL daemon-reload
|
|
basic_teardown
|
|
}
|
|
|
|
# This test can fail in dev. environment because of SELinux.
|
|
# quick fix: chcon -t container_runtime_exec_t ./bin/podman
|
|
@test "podman generate - systemd - basic" {
|
|
# podman initializes this if unset, but systemctl doesn't
|
|
if is_rootless; then
|
|
if [ -z "$XDG_RUNTIME_DIR" ]; then
|
|
export XDG_RUNTIME_DIR=/run/user/$(id -u)
|
|
fi
|
|
fi
|
|
|
|
cname=$(random_string)
|
|
run_podman create --name $cname --label "io.containers.autoupdate=image" --detach $IMAGE top
|
|
|
|
run_podman generate systemd --new $cname
|
|
echo "$output" > "$UNIT_FILE"
|
|
run_podman rm $cname
|
|
|
|
$SYSTEMCTL daemon-reload
|
|
|
|
run $SYSTEMCTL start "$SERVICE_NAME"
|
|
if [ $status -ne 0 ]; then
|
|
die "Error starting systemd unit $SERVICE_NAME, output: $output"
|
|
fi
|
|
|
|
run $SYSTEMCTL status "$SERVICE_NAME"
|
|
if [ $status -ne 0 ]; then
|
|
die "Non-zero status of systemd unit $SERVICE_NAME, output: $output"
|
|
fi
|
|
|
|
# Give container time to start; make sure output looks top-like
|
|
sleep 2
|
|
run_podman logs $cname
|
|
is "$output" ".*Load average:.*" "running container 'top'-like output"
|
|
|
|
# Exercise `podman auto-update`.
|
|
# TODO: this will at least run auto-update code but won't perform an update
|
|
# since the image didn't change. We need to improve on that and run
|
|
# an image from a local registry instead.
|
|
run_podman auto-update
|
|
|
|
# All good. Stop service, clean up.
|
|
run $SYSTEMCTL stop "$SERVICE_NAME"
|
|
if [ $status -ne 0 ]; then
|
|
die "Error stopping systemd unit $SERVICE_NAME, output: $output"
|
|
fi
|
|
|
|
rm -f "$UNIT_FILE"
|
|
$SYSTEMCTL daemon-reload
|
|
}
|
|
|
|
# vim: filetype=sh
|