Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

System tests: new system-df and passwd tests #7151

Merged
merged 1 commit into from
Jul 30, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion contrib/cirrus/setup_environment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ case "${OS_RELEASE_ID}" in
if [[ "$OS_RELEASE_VER" == "20" ]]; then
apt-get install -y python-is-python3
fi
apt-get upgrade -y conmon
;;
fedora)
# All SELinux distros need this for systemd-in-a-container
Expand Down
16 changes: 16 additions & 0 deletions test/system/030-run.bats
Original file line number Diff line number Diff line change
Expand Up @@ -284,4 +284,20 @@ echo $rand | 0 | $rand
is "$output" "root" "--user=0 overrides keep-id"
}

# #6991 : /etc/passwd is modifiable
@test "podman run : --userns=keep-id: passwd file is modifiable" {
run_podman run -d --userns=keep-id $IMAGE sh -c 'while ! test -e /stop; do sleep 0.1; done'
cid="$output"

gecos="$(random_string 6) $(random_string 8)"
run_podman exec --user root $cid adduser -D -g "$gecos" -s /bin/sh newuser3
is "$output" "" "output from adduser"
run_podman exec $cid tail -1 /etc/passwd
is "$output" "newuser3:x:1000:1000:$gecos:/home/newuser3:/bin/sh" \
"newuser3 added to /etc/passwd in container"

run_podman exec $cid touch /stop
run_podman wait $cid
}

# vim: filetype=sh
2 changes: 0 additions & 2 deletions test/system/075-exec.bats
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,6 @@ load helpers
# #6829 : add username to /etc/passwd inside container if --userns=keep-id
# #6593 : doesn't actually work with podman exec
@test "podman exec - with keep-id" {
skip "Please enable once #6593 is fixed"

run_podman run -d --userns=keep-id $IMAGE sh -c \
"echo READY;while [ ! -f /stop ]; do sleep 1; done"
cid="$output"
Expand Down
61 changes: 61 additions & 0 deletions test/system/320-system-df.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/usr/bin/env bats -*- bats -*-
#
# tests for podman system df
#

load helpers

function teardown() {
basic_teardown

# In case the active-volumes test failed: clean up stray volumes
run_podman volume rm -a
}

@test "podman system df - basic functionality" {
run_podman system df
is "$output" ".*Images *1 *0 " "Exactly one image"
is "$output" ".*Containers *0 *0 " "No containers"
is "$output" ".*Local Volumes *0 *0 " "No volumes"
}

@test "podman system df - with active containers and volumes" {
run_podman run -v /myvol1 --name c1 $IMAGE true
run_podman run -d -v /myvol2 --name c2 $IMAGE \
sh -c 'while ! test -e /stop; do sleep 0.1;done'

run_podman system df --format '{{ .Type }}:{{ .Total }}:{{ .Active }}--'
# FIXME: if/when #7149 gets fixed, split this into three tests (i.e. test "${lines[0]}", [1], [2] )
is "$output" "Images:1:1--Containers:2:1--Local Volumes:2:1--"

# Try -v. (Grrr. No way to specify individual formats)
#
# Yes, I know this would be more elegant as a separate @test, but
# container/volume setup/teardown costs ~3 seconds and that matters.
run_podman system df -v
is "${lines[2]}" \
"${PODMAN_TEST_IMAGE_REGISTRY}/${PODMAN_TEST_IMAGE_USER}/${PODMAN_TEST_IMAGE_NAME} * ${PODMAN_TEST_IMAGE_TAG} [0-9a-f]* .* 2" \
"system df -v: the 'Images' line"

# Containers are listed in random order. Just check that each has 1 volume
is "${lines[5]}" \
"[0-9a-f]\{12\} *[0-9a-f]\{12\} .* 1 .* c[12]" \
"system df -v, 'Containers', first line"
is "${lines[6]}" \
"[0-9a-f]\{12\} *[0-9a-f]\{12\} .* 1 .* c[12]" \
"system df -v, 'Containers', second line"

# Volumes, likewise: random order.
is "${lines[9]}" "[0-9a-f]\{64\} *[01] * 0B" \
"system df -v, 'Volumes', first line"
is "${lines[10]}" "[0-9a-f]\{64\} *[01] * 0B" \
"system df -v, 'Volumes', second line"

# Clean up
run_podman exec c2 touch /stop
run_podman wait c2
run_podman rm c1 c2
run_podman volume rm -a
}

# vim: filetype=sh