mirror of
https://github.com/containers/podman
synced 2024-10-21 01:34:37 +00:00
2d5a2a7640
- (minor): apiv2 tests: check for full ID Observation made while reviewing #6461: tests were checking only for a 12-character container/image ID in return value. It's actually 64, and we should test for that. This should also minimize confusion in a future maintainer. - podman pause/unpause: new test Runs a 'date/sleep' loop, pauses container, sleeps 3s, restarts, then confirms that there's a 3- to 6-second gap in the logs for the container. - podman healthcheck: new test run a container with healthcheck, test both healthy and unhealthy conditions - podman pod: check '{{.Pod}}' field in podman ps Hey, as long as we have a pod with two running containers, might as well confirm that 'podman ps' returns the expected pod ID. Signed-off-by: Ed Santiago <santiago@redhat.com>
59 lines
1.9 KiB
Bash
59 lines
1.9 KiB
Bash
#!/usr/bin/env bats -*- bats -*-
|
|
#
|
|
# tests for podman pause/unpause functionality
|
|
#
|
|
|
|
load helpers
|
|
|
|
@test "podman pause/unpause" {
|
|
skip_if_rootless "pause does not work rootless"
|
|
|
|
cname=$(random_string 10)
|
|
run_podman run -d --name $cname $IMAGE \
|
|
sh -c 'while :;do date +%s;sleep 1;done'
|
|
cid="$output"
|
|
# Wait for first time value
|
|
wait_for_output '[0-9]\{10,\}' $cid
|
|
|
|
# Pause container, sleep a bit, unpause, sleep again to give process
|
|
# time to write a new post-restart time value. Pause by CID, unpause
|
|
# by name, just to exercise code paths. While paused, check 'ps'
|
|
# and 'inspect', then check again after restarting.
|
|
run_podman pause $cid
|
|
run_podman inspect --format '{{.State.Status}}' $cid
|
|
is "$output" "paused" "podman inspect .State.Status"
|
|
sleep 3
|
|
run_podman ps -a --format '{{.ID}} {{.Names}} {{.Status}}'
|
|
is "$output" "${cid:0:12} $cname paused" "podman ps on paused container"
|
|
run_podman unpause $cname
|
|
run_podman ps -a --format '{{.ID}} {{.Names}} {{.Status}}'
|
|
is "$output" "${cid:0:12} $cname Up .*" "podman ps on resumed container"
|
|
sleep 1
|
|
|
|
# Get full logs, and iterate through them computing delta_t between entries
|
|
run_podman logs $cid
|
|
i=1
|
|
max_delta=0
|
|
while [ $i -lt ${#lines[*]} ]; do
|
|
this_delta=$(( ${lines[$i]} - ${lines[$(($i - 1))]} ))
|
|
if [ $this_delta -gt $max_delta ]; then
|
|
max_delta=$this_delta
|
|
fi
|
|
i=$(( $i + 1 ))
|
|
done
|
|
|
|
# There should be a 3-4 second gap, *maybe* 5. Never 1 or 2, that
|
|
# would imply that the container never paused.
|
|
is "$max_delta" "[3456]" "delta t between paused and restarted"
|
|
|
|
run_podman rm -f $cname
|
|
|
|
# Pause/unpause on nonexistent name or id - these should all fail
|
|
run_podman 125 pause $cid
|
|
run_podman 125 pause $cname
|
|
run_podman 125 unpause $cid
|
|
run_podman 125 unpause $cname
|
|
}
|
|
|
|
# vim: filetype=sh
|