diff options
author | Ed Santiago <santiago@redhat.com> | 2021-07-19 13:22:25 -0600 |
---|---|---|
committer | Ed Santiago <santiago@redhat.com> | 2021-07-20 07:10:14 -0600 |
commit | caf03fd7a4766b08fcadd0f2d152f3910a7583e0 (patch) | |
tree | 2e867489ed4a678d5d641e43688fd20fc3cd42d3 | |
parent | f4e81d0b886ba65cf350f101020d398af2f2cc7e (diff) | |
download | podman-caf03fd7a4766b08fcadd0f2d152f3910a7583e0.tar.gz podman-caf03fd7a4766b08fcadd0f2d152f3910a7583e0.tar.bz2 podman-caf03fd7a4766b08fcadd0f2d152f3910a7583e0.zip |
system test: auto-update: allow running as rootless
They were being skipped for no clear reason.
Also: use --files and --name option in generate-systemd. Before,
output went to stdout, resulting in completely unreadable logs
on test failure.
Also: use volatile systemd directories (/run, $XDG_RUNTIME_DIR)
instead of permanent ones. Thanks to @Luap99 for the reference.
Signed-off-by: Ed Santiago <santiago@redhat.com>
-rw-r--r-- | test/system/255-auto-update.bats | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/test/system/255-auto-update.bats b/test/system/255-auto-update.bats index a73ed94e8..b47e72b30 100644 --- a/test/system/255-auto-update.bats +++ b/test/system/255-auto-update.bats @@ -5,13 +5,20 @@ load helpers -UNIT_DIR="/usr/lib/systemd/system" +DASHUSER="" +UNIT_DIR="/run/systemd/system" SNAME_FILE=$BATS_TMPDIR/services function setup() { skip_if_remote "systemd tests are meaningless over remote" - skip_if_rootless + if is_rootless; then + test -n "${XDG_RUNTIME_DIR}" || skip "\$XDG_RUNTIME_DIR is unset" + UNIT_DIR="${XDG_RUNTIME_DIR}/systemd/user" + mkdir -p $UNIT_DIR + # Why isn't systemd smart enough to figure this out on its own? + DASHUSER="--user" + fi basic_setup } @@ -19,10 +26,10 @@ function teardown() { while read line; do if [[ "$line" =~ "podman-auto-update" ]]; then echo "Stop timer: $line.timer" - systemctl stop $line.timer - systemctl disable $line.timer + systemctl $DASHUSER stop $line.timer + systemctl $DASHUSER disable $line.timer else - systemctl stop $line + systemctl $DASHUSER stop $line fi rm -f $UNIT_DIR/$line.{service,timer} done < $SNAME_FILE @@ -58,14 +65,13 @@ function generate_service() { fi run_podman run -d --name $cname $label $target_img top -d 120 - run_podman generate systemd --new $cname - echo "$output" > "$UNIT_DIR/container-$cname.service" + (cd $UNIT_DIR; run_podman generate systemd --new --files --name $cname) echo "container-$cname" >> $SNAME_FILE run_podman rm -f $cname - systemctl daemon-reload - systemctl start container-$cname - systemctl status container-$cname + systemctl $DASHUSER daemon-reload + systemctl $DASHUSER start container-$cname + systemctl $DASHUSER status container-$cname # Original image ID. # IMPORTANT: variable 'ori_image' is passed (out of scope) up to caller! @@ -78,7 +84,7 @@ function _wait_service_ready() { local timeout=6 while [[ $timeout -gt 1 ]]; do - if systemctl -q is-active $sname; then + if systemctl $DASHUSER -q is-active $sname; then return fi sleep 1 @@ -86,7 +92,7 @@ function _wait_service_ready() { done # Print serivce status as debug information before failed the case - systemctl status $sname + systemctl $DASHUSER status $sname die "Timed out waiting for $sname to start" } @@ -261,14 +267,14 @@ WantedBy=multi-user.target default.target EOF echo "podman-auto-update-$cname" >> $SNAME_FILE - systemctl enable --now podman-auto-update-$cname.timer - systemctl list-timers --all + systemctl $DASHUSER enable --now podman-auto-update-$cname.timer + systemctl $DASHUSER list-timers --all local expect='Finished Podman auto-update testing service' local failed_start=failed local count=0 while [ $count -lt 120 ]; do - run journalctl -n 15 -u podman-auto-update-$cname.service + run journalctl $DASHUSER -n 15 -u podman-auto-update-$cname.service if [[ "$output" =~ $expect ]]; then failed_start= break |