Skip to content

Commit

Permalink
CI: --image-volume test: robustify
Browse files Browse the repository at this point in the history
Test is failing on 1mt because of differences between 'stat'
command output and /proc/mounts. Solution: compare stat %t
(hex filesystem type), not %T (human-readable). This should
match no matter what kernel version or version of stat on
host/container.

Fixes: #24611

Signed-off-by: Ed Santiago <[email protected]>
  • Loading branch information
edsantiago committed Nov 19, 2024
1 parent 569fefc commit 97ed067
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions test/system/160-volumes.bats
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,6 @@ NeedsChown | true
FROM $IMAGE
VOLUME /data
EOF
fs=$(stat -f -c %T .)
run_podman build -t volume_image $tmpdir

containersconf=$tmpdir/containers.conf
Expand All @@ -534,15 +533,16 @@ EOF
CONTAINERS_CONF_OVERRIDE="$containersconf" run_podman run --rm volume_image stat -f -c %T /data
is "$output" "tmpfs" "Should be tmpfs"

# get the hostfs first so we can match it below
# Get the hostfs first so we can match it below. The important check is
# the HEX filesystem type (%t); readable one (%T) is for ease of debugging.
# We can't compare %T because our alpine-based testimage doesn't grok btrfs.
run_podman info --format {{.Store.GraphRoot}}
hostfs=$(stat -f -c %T $output)
hostfs=$(stat -f -c '%t %T' $output)
echo "# for debug: stat( $output ) = '$hostfs'"

# stat -f -c %T seems to just return unknown for our normal bind mount for some reason.
# Therefore manually parse /proc/mounts to get the real fs for the bind mount.
CONTAINERS_CONF_OVERRIDE="$containersconf" run_podman run --image-volume anonymous --rm volume_image \
sh -c "grep ' /data ' /proc/mounts | cut -f3 -d' '"
assert "$output" == "$hostfs" "Should match hosts graphroot fs"
# "${foo%% *}" strips everything after the first space: "9123683e btrfs" -> "9123683e"
CONTAINERS_CONF_OVERRIDE="$containersconf" run_podman run --image-volume anonymous --rm volume_image stat -f -c '%t %T' /data
assert "${output%% *}" == "${hostfs%% *}" "/data fs type should match hosts graphroot"

CONTAINERS_CONF_OVERRIDE="$containersconf" run_podman run --image-volume tmpfs --rm volume_image stat -f -c %T /data
is "$output" "tmpfs" "Should be tmpfs"
Expand Down

0 comments on commit 97ed067

Please sign in to comment.