summaryrefslogtreecommitdiffstats
path: root/tests/shell/helpers/test-wrapper.sh
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-10-06 11:42:18 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2023-10-10 20:18:41 +0200
commit8b3a902ef0b588a7e1b4d3b374a4f5f3c8f21089 (patch)
treeae6389d70675aa12d645b01404f628b7dc79f63c /tests/shell/helpers/test-wrapper.sh
parentc9a478fce619bd0b63dc336c390697bbca44cabd (diff)
tests/shell: mount all of "/var/run" in "test-wrapper.sh"
After reboot, "/var/run/netns" does not exist before we run the first `ip netns add` command. Previously, "test-wrapper.sh" would mount a tmpfs on that directory, but that fails, if the directory doesn't exist. You will notice this, by deleting /var/run/netns (which only root can delete or create, and which is wiped on reboot). Instead, mount all of "/var/run". Then we can also create /var/run/netns directory. This means, any other content from /var/run is hidden too. That's probably desirable, because it means we don't depend on stuff that happens to be there. If we would require other content in /var/run, then the test runner needs to be aware of the requirement and ensure it's present. But best is just to not require anything. It's only iproute2 which insists on /var/run/netns. Signed-off-by: Thomas Haller <thaller@redhat.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'tests/shell/helpers/test-wrapper.sh')
-rwxr-xr-xtests/shell/helpers/test-wrapper.sh26
1 files changed, 15 insertions, 11 deletions
diff --git a/tests/shell/helpers/test-wrapper.sh b/tests/shell/helpers/test-wrapper.sh
index e10360c9..13b918f8 100755
--- a/tests/shell/helpers/test-wrapper.sh
+++ b/tests/shell/helpers/test-wrapper.sh
@@ -23,11 +23,11 @@ START_TIME="$(cut -d ' ' -f1 /proc/uptime)"
export TMPDIR="$NFT_TEST_TESTTMPDIR"
-CLEANUP_UMOUNT_RUN_NETNS=n
+CLEANUP_UMOUNT_VAR_RUN=n
cleanup() {
- if [ "$CLEANUP_UMOUNT_RUN_NETNS" = y ] ; then
- umount "/var/run/netns" || :
+ if [ "$CLEANUP_UMOUNT_VAR_RUN" = y ] ; then
+ umount "/var/run" &>/dev/null || :
fi
}
@@ -38,16 +38,20 @@ printf '%s\n' "$TEST" > "$NFT_TEST_TESTTMPDIR/name"
read tainted_before < /proc/sys/kernel/tainted
if [ "$NFT_TEST_HAS_UNSHARED_MOUNT" = y ] ; then
- # We have a private mount namespace. We will mount /run/netns as a tmpfs,
- # this is useful because `ip netns add` wants to add files there.
+ # We have a private mount namespace. We will mount /var/run/ as a tmpfs.
#
- # When running as rootless, this is necessary to get such tests to
- # pass. When running rootful, it's still useful to not touch the
- # "real" /var/run/netns of the system.
- mkdir -p /var/run/netns
- if mount -t tmpfs --make-private "/var/run/netns" ; then
- CLEANUP_UMOUNT_RUN_NETNS=y
+ # The main purpose is so that we can create /var/run/netns, which is
+ # required for `ip netns add` to work. When running as rootless, this
+ # is necessary to get such tests to pass. When running rootful, it's
+ # still useful to not touch the "real" /var/run/netns of the system.
+ #
+ # Note that this also hides everything that might reside in /var/run.
+ # That is desirable, as tests should not depend on content there (or if
+ # they do, we need to explicitly handle it as appropriate).
+ if mount -t tmpfs --make-private "/var/run" ; then
+ CLEANUP_UMOUNT_VAR_RUN=y
fi
+ mkdir -p /var/run/netns
fi
TEST_TAGS_PARSED=0