summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEd Santiago <santiago@redhat.com>2020-05-11 08:51:05 -0600
committerEd Santiago <santiago@redhat.com>2020-05-11 09:30:09 -0600
commita82de0e3a039bb23d3a9bdb0a1cb9a56d5cec5df (patch)
tree03688e466ca937aad387585d3b2ea17452809431 /test
parent18b273b72ba76d485eb1b4d5df48bff1685953ff (diff)
downloadpodman-a82de0e3a039bb23d3a9bdb0a1cb9a56d5cec5df.tar.gz
podman-a82de0e3a039bb23d3a9bdb0a1cb9a56d5cec5df.tar.bz2
podman-a82de0e3a039bb23d3a9bdb0a1cb9a56d5cec5df.zip
Some BATS cleanup: run and systemd tests
run test: run positive test before negative; and actually implement real negative tests. Also, add confirmation tests for cidfile/pidfile, not just 'exit status is good'. systemd test: enable rootless, and again add actual content testing. Signed-off-by: Ed Santiago <santiago@redhat.com>
Diffstat (limited to 'test')
-rw-r--r--test/system/030-run.bats36
-rw-r--r--test/system/250-systemd.bats39
2 files changed, 55 insertions, 20 deletions
diff --git a/test/system/030-run.bats b/test/system/030-run.bats
index d5d5121f8..ae2e39d6b 100644
--- a/test/system/030-run.bats
+++ b/test/system/030-run.bats
@@ -161,17 +161,31 @@ echo $rand | 0 | $rand
# 'run --conmon-pidfile --cid-file' makes sure we don't regress on these flags.
# Both are critical for systemd units.
@test "podman run --conmon-pidfile --cidfile" {
- pid=$(mktemp)
- cid=$(mktemp)
-
- # CID file exists -> expected to fail.
- run_podman 125 run --rm --conmon-pidfile=$pid --cidfile=$cid $IMAGE ls
-
- rm $pid $cid
- run_podman run --name keepme --conmon-pidfile=$pid --cidfile=$cid --detach $IMAGE sleep infinity
- stat $pid $cid
- run_podman rm -f keepme
- rm $pid $cid
+ pidfile=${PODMAN_TMPDIR}/pidfile
+ cidfile=${PODMAN_TMPDIR}/cidfile
+
+ cname=$(random_string)
+ run_podman run --name $cname \
+ --conmon-pidfile=$pidfile \
+ --cidfile=$cidfile \
+ --detach \
+ $IMAGE sleep infinity
+ cid="$output"
+
+ is "$(< $cidfile)" "$cid" "contents of cidfile == container ID"
+
+ conmon_pid=$(< $pidfile)
+ is "$(readlink /proc/$conmon_pid/exe)" ".*/conmon" \
+ "conmon pidfile (= PID $conmon_pid) points to conmon process"
+
+ # All OK. Kill container.
+ run_podman rm -f $cid
+
+ # Podman must not overwrite existing cid file.
+ # (overwriting conmon-pidfile is OK, so don't test that)
+ run_podman 125 run --cidfile=$cidfile $IMAGE true
+ is "$output" "Error: container id file exists. .* delete $cidfile" \
+ "podman will not overwrite existing cidfile"
}
# vim: filetype=sh
diff --git a/test/system/250-systemd.bats b/test/system/250-systemd.bats
index 902a7cad8..cdac43c1c 100644
--- a/test/system/250-systemd.bats
+++ b/test/system/250-systemd.bats
@@ -6,44 +6,65 @@
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
- skip_if_rootless "systemd tests are root-only for now"
basic_setup
}
function teardown() {
+ run '?' $SYSTEMCTL stop "$SERVICE_NAME"
rm -f "$UNIT_FILE"
- systemctl daemon-reload
+ $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" {
- run_podman create --name keepme --detach busybox:latest top
+ cname=$(random_string)
+ run_podman create --name $cname --detach $IMAGE top
- run_podman generate systemd --new keepme > "$UNIT_FILE"
- run_podman rm keepme
+ run_podman generate systemd --new $cname
+ echo "$output" > "$UNIT_FILE"
+ run_podman rm $cname
- systemctl daemon-reload
+ $SYSTEMCTL daemon-reload
- run systemctl start "$SERVICE_NAME"
+ 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"
+ run $SYSTEMCTL status "$SERVICE_NAME"
if [ $status -ne 0 ]; then
die "Non-zero status of systemd unit $SERVICE_NAME, output: $output"
fi
- run systemctl stop "$SERVICE_NAME"
+ # 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"
+
+ # 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