Skip to content

Commit

Permalink
Merge pull request #8535 from edsantiago/bats
Browse files Browse the repository at this point in the history
BATS: add ping test, ps filters, multi-option
  • Loading branch information
openshift-merge-robot authored Dec 1, 2020
2 parents 055a7a9 + a17fb01 commit b735aa8
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 12 deletions.
6 changes: 4 additions & 2 deletions test/system/010-images.bats
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ Labels.created_at | 20[0-9-]\\\+T[0-9:]\\\+Z
@test "podman images - history output" {
# podman history is persistent: it permanently alters our base image.
# Create a dummy image here so we leave our setup as we found it.
run_podman run --name my-container $IMAGE true
# Multiple --name options confirm command-line override (last one wins)
run_podman run --name ignore-me --name my-container $IMAGE true
run_podman commit my-container my-test-image

run_podman images my-test-image --format '{{ .History }}'
Expand Down Expand Up @@ -87,7 +88,8 @@ Labels.created_at | 20[0-9-]\\\+T[0-9:]\\\+Z
}

@test "podman images - filter" {
run_podman inspect --format '{{.ID}}' $IMAGE
# Multiple --format options confirm command-line override (last one wins)
run_podman inspect --format '{{.XYZ}}' --format '{{.ID}}' $IMAGE
iid=$output

run_podman images --noheading --filter=after=$iid
Expand Down
19 changes: 15 additions & 4 deletions test/system/030-run.bats
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,9 @@ json-file | f
msg=$(random_string 20)
pidfile="${PODMAN_TMPDIR}/$(random_string 20)"

run_podman run --name myctr --log-driver journald --conmon-pidfile $pidfile $IMAGE echo $msg
# Multiple --log-driver options to confirm that last one wins
run_podman run --name myctr --log-driver=none --log-driver journald \
--conmon-pidfile $pidfile $IMAGE echo $msg

journalctl --output cat _PID=$(cat $pidfile)
is "$output" "$msg" "check that journalctl output equals the container output"
Expand All @@ -464,7 +466,9 @@ json-file | f
run_podman run --rm $IMAGE date -r $testfile
is "$output" "Sun Sep 13 12:26:40 UTC 2020" "podman run with no TZ"

run_podman run --rm --tz=MST7MDT $IMAGE date -r $testfile
# Multiple --tz options; confirm that the last one wins
run_podman run --rm --tz=US/Eastern --tz=Iceland --tz=MST7MDT \
$IMAGE date -r $testfile
is "$output" "Sun Sep 13 06:26:40 MDT 2020" "podman run with --tz=MST7MDT"

# --tz=local pays attention to /etc/localtime, not $TZ. We set TZ anyway,
Expand Down Expand Up @@ -533,8 +537,15 @@ json-file | f
}

@test "podman run with --net=host and --port prints warning" {
run_podman run -d --rm -p 8080 --net=host $IMAGE ls > /dev/null
is "$output" ".*Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use"
rand=$(random_string 10)

# Please keep the duplicate "--net" options; this tests against #8507,
# a regression in which subsequent --net options did not override earlier.
run_podman run --rm -p 8080 --net=none --net=host $IMAGE echo $rand
is "${lines[0]}" \
"Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use" \
"Warning is emitted before container output"
is "${lines[1]}" "$rand" "Container runs successfully despite warning"
}

# vim: filetype=sh
47 changes: 47 additions & 0 deletions test/system/040-ps.bats
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,51 @@ load helpers
run_podman rm $cid
}

@test "podman ps --filter" {
run_podman run -d --name runner $IMAGE top
cid_runner=$output

run_podman run -d --name stopped $IMAGE true
cid_stopped=$output
run_podman wait stopped

run_podman run -d --name failed $IMAGE false
cid_failed=$output
run_podman wait failed

run_podman create --name created $IMAGE echo hi
cid_created=$output

run_podman ps --filter name=runner --format '{{.ID}}'
is "$output" "${cid_runner:0:12}" "filter: name=runner"

# Stopped container should not appear (because we're not using -a)
run_podman ps --filter name=stopped --format '{{.ID}}'
is "$output" "" "filter: name=stopped (without -a)"

# Again, but with -a
run_podman ps -a --filter name=stopped --format '{{.ID}}'
is "$output" "${cid_stopped:0:12}" "filter: name=stopped (with -a)"

run_podman ps --filter status=stopped --format '{{.Names}}' --sort names
is "${lines[0]}" "failed" "status=stopped: 1 of 2"
is "${lines[1]}" "stopped" "status=stopped: 2 of 2"

run_podman ps --filter status=exited --filter exited=0 --format '{{.Names}}'
is "$output" "stopped" "exited=0"

run_podman ps --filter status=exited --filter exited=1 --format '{{.Names}}'
is "$output" "failed" "exited=1"

# Multiple statuses allowed; and test sort=created
run_podman ps -a --filter status=exited --filter status=running \
--format '{{.Names}}' --sort created
is "${lines[0]}" "runner" "status=stopped: 1 of 3"
is "${lines[1]}" "stopped" "status=stopped: 2 of 3"
is "${lines[2]}" "failed" "status=stopped: 3 of 3"

run_podman stop -t 1 runner
run_podman rm -a
}

# vim: filetype=sh
17 changes: 12 additions & 5 deletions test/system/070-build.bats
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,13 @@ echo "\$1"
printenv | grep MYENV | sort | sed -e 's/^MYENV.=//'
EOF

# For overriding with --env-file
cat >$PODMAN_TMPDIR/env-file <<EOF
# For overriding with --env-file; using multiple files confirms that
# the --env-file option is cumulative, not last-one-wins.
cat >$PODMAN_TMPDIR/env-file1 <<EOF
MYENV3=$s_env3
http_proxy=http-proxy-in-env-file
EOF
cat >$PODMAN_TMPDIR/env-file2 <<EOF
https_proxy=https-proxy-in-env-file
EOF

Expand Down Expand Up @@ -185,7 +188,8 @@ EOF
export MYENV2="$s_env2"
export MYENV3="env-file-should-override-env-host!"
run_podman run --rm \
--env-file=$PODMAN_TMPDIR/env-file \
--env-file=$PODMAN_TMPDIR/env-file1 \
--env-file=$PODMAN_TMPDIR/env-file2 \
${ENVHOST} \
-e MYENV4="$s_env4" \
build_test
Expand All @@ -205,7 +209,9 @@ EOF

# Proxies - environment should override container, but not env-file
http_proxy=http-proxy-from-env ftp_proxy=ftp-proxy-from-env \
run_podman run --rm --env-file=$PODMAN_TMPDIR/env-file \
run_podman run --rm \
--env-file=$PODMAN_TMPDIR/env-file1 \
--env-file=$PODMAN_TMPDIR/env-file2 \
build_test \
printenv http_proxy https_proxy ftp_proxy
is "${lines[0]}" "http-proxy-in-env-file" "env-file overrides env"
Expand All @@ -222,7 +228,8 @@ EOF
is "$output" "$workdir" "pwd command in container"

# Determine buildah version, so we can confirm it gets into Labels
run_podman info --format '{{ .Host.BuildahVersion }}'
# Multiple --format options confirm command-line override (last one wins)
run_podman info --format '{{.Ignore}}' --format '{{ .Host.BuildahVersion }}'
is "$output" "[1-9][0-9.-]\+" ".Host.BuildahVersion is reasonable"
buildah_version=$output

Expand Down
3 changes: 2 additions & 1 deletion test/system/075-exec.bats
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,8 @@ load helpers

# #6829 : add username to /etc/passwd inside container if --userns=keep-id
@test "podman exec - with keep-id" {
run_podman run -d --userns=keep-id $IMAGE sh -c \
# Multiple --userns options confirm command-line override (last one wins)
run_podman run -d --userns=private --userns=keep-id $IMAGE sh -c \
"echo READY;while [ ! -f /tmp/stop ]; do sleep 1; done"
cid="$output"
wait_for_ready $cid
Expand Down
4 changes: 4 additions & 0 deletions test/system/200-pod.bats
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,10 @@ EOF
is "$output" "nc: bind: Address in use" \
"two containers cannot bind to same port"

# make sure we can ping; failure here might mean that capabilities are wrong
run_podman run --rm --pod mypod $IMAGE ping -c1 127.0.0.1
run_podman run --rm --pod mypod $IMAGE ping -c1 $hostname

# While the container is still running, run 'podman ps' (no --format)
# and confirm that the output includes the published port
run_podman ps --filter id=$cid
Expand Down

0 comments on commit b735aa8

Please sign in to comment.