aboutgitcodebugslistschat
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2024-07-24 20:13:35 +0200
committerStefano Brivio <sbrivio@redhat.com>2024-07-25 12:30:08 +0200
commitf16f8f5bf6abb6284e6bc64f81220e2efd95ad7e (patch)
tree32cc00164976ff63a5eb4b1e260eed35a83083cb
parent1cd773081f12af86b5b1ce66842c20fb6f734521 (diff)
downloadpasst-f16f8f5bf6abb6284e6bc64f81220e2efd95ad7e.tar
passt-f16f8f5bf6abb6284e6bc64f81220e2efd95ad7e.tar.gz
passt-f16f8f5bf6abb6284e6bc64f81220e2efd95ad7e.tar.bz2
passt-f16f8f5bf6abb6284e6bc64f81220e2efd95ad7e.tar.lz
passt-f16f8f5bf6abb6284e6bc64f81220e2efd95ad7e.tar.xz
passt-f16f8f5bf6abb6284e6bc64f81220e2efd95ad7e.tar.zst
passt-f16f8f5bf6abb6284e6bc64f81220e2efd95ad7e.zip
test: Fix memory/passt tests, --netns-only is not a valid option for passt
This used to work on my setup as I kept reusing an old mbuto (initramfs) image, but since commit 65923ba79877 ("conf: Accept duplicate and conflicting options, the last one wins"), --netns-only is, as originally intended, a pasta-only option. I had used --netns-only, here, to prevent passt from trying to detach its own user namespace, which is not permitted as we're in a chroot, see unshare(2). In turn, we need the chroot because passt can't pivot root directly into its own empty filesystem using an initramfs. Use switch_root into the tmpfs mountpoint instead of chroot, so that we can still detach user namespaces. Note that in the mbuto images, we can't switch to nobody as we have no password entries at all, so we need to detach a further user namespace before starting passt, to trick passt into running as UID 0. Given the new sequence, it's now more convenient to directly switch to a detached network namespace as well, which means we need to move the initialisation of the dummy network from the init script into the test script. Reported-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Tested-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r--test/memory/passt13
-rwxr-xr-xtest/passt.mem.mbuto9
2 files changed, 11 insertions, 11 deletions
diff --git a/test/memory/passt b/test/memory/passt
index 1193af8..bf78c8f 100644
--- a/test/memory/passt
+++ b/test/memory/passt
@@ -44,7 +44,7 @@ endef
def start_stop_diff
guest sed /proc/slabinfo -ne 's/^\([^ ]* *[^ ]* *[^ ]* *[^ ]*\).*/\\\1/p' > /tmp/slabinfo.before
guest cat /proc/meminfo > /tmp/meminfo.before
-guest /bin/passt.avx2 -l /tmp/log -s /tmp/sock -P /tmp/pid __OPTS__ --netns-only
+guest /bin/passt.avx2 -l /tmp/log -s /tmp/sock -P /tmp/pid __OPTS__
sleep 2
guest cat /proc/meminfo > /tmp/meminfo.after
guest sed /proc/slabinfo -ne 's/^\([^ ]* *[^ ]* *[^ ]* *[^ ]*\).*/\\\1/p' > /tmp/slabinfo.after
@@ -78,9 +78,16 @@ guest mount -o bind /proc /test/proc
guest mount -o bind /dev /test/dev
guest cp -Lr /bin /lib /lib64 /usr /sbin /test/
+guest exec switch_root /test /bin/sh
+
guest ulimit -Hn 300000
-guest unshare -rUm -R /test
-guest chroot .
+guest unshare -rUn
+guest ip link add eth0 type dummy
+guest ip link set eth0 up
+guest ip address add 192.0.2.2/24 dev eth0
+guest ip address add 2001:db8::2/64 dev eth0
+guest ip route add default via 192.0.2.1
+guest ip -6 route add default via 2001:db8::1 dev eth0
guest meminfo_size() { grep "^$2:" $1 | tr -s ' ' | cut -f2 -d ' '; }
guest meminfo_diff() { echo $(( $(meminfo_size $2 $3) - $(meminfo_size $1 $3) )); }
diff --git a/test/passt.mem.mbuto b/test/passt.mem.mbuto
index 56f5139..532eae0 100755
--- a/test/passt.mem.mbuto
+++ b/test/passt.mem.mbuto
@@ -12,7 +12,7 @@
PROGS="${PROGS:-ash,dash,bash chmod ip mount insmod mkdir ln cat chmod modprobe
grep mknod sed chown sleep bc ls ps mount unshare chroot cp kill diff
- head tail sort tr tee cut nm which}"
+ head tail sort tr tee cut nm which switch_root}"
KMODS="${KMODS:- dummy}"
@@ -29,13 +29,6 @@ COPIES="${COPIES} ../passt.avx2,/bin/passt.avx2"
FIXUP="${FIXUP}"'
ln -s /bin /usr/bin
chmod 777 /tmp
-ip link add eth0 type dummy
-ip link set eth0 up
-ip address add 192.0.2.2/24 dev eth0
-ip address add 2001:db8::2/64 dev eth0
-ip route add default via 192.0.2.1
-ip -6 route add default via 2001:db8::1 dev eth0
-sleep 2
sh +m
'