From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Gibson To: passt-dev@passt.top Subject: [PATCH v2 11/32] test: Use new-style command issue for passt_in_ns tests Date: Thu, 08 Sep 2022 16:16:00 +1000 Message-ID: <20220908061621.2430844-12-david@gibson.dropbear.id.au> In-Reply-To: <20220908061621.2430844-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0659469415114157293==" --===============0659469415114157293== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Put the pieces together to use the new style context based dispatch for the passt_in_pasta tests. Signed-off-by: David Gibson --- test/lib/layout | 10 ++---- test/lib/setup | 73 +++++++++++++++++---------------------- test/shutdown/passt_in_ns | 4 +-- test/tcp/passt_in_ns | 1 + test/udp/passt_in_ns | 1 + 5 files changed, 37 insertions(+), 52 deletions(-) diff --git a/test/lib/layout b/test/lib/layout index b9d30e9..cc7c688 100644 --- a/test/lib/layout +++ b/test/lib/layout @@ -125,11 +125,8 @@ layout_passt_in_pasta() { =20 get_info_cols =20 - tmux pipe-pane -O -t ${PANE_GUEST} "cat >> ${LOGDIR}/pane_guest.log" - tmux select-pane -t ${PANE_GUEST} -T "guest" - - tmux pipe-pane -O -t ${PANE_NS} "cat >> ${LOGDIR}/pane_ns.log" - tmux select-pane -t ${PANE_NS} -T "namespace" + pane_watch_contexts ${PANE_GUEST} "guest" qemu guest + pane_watch_contexts ${PANE_NS} "namespace" ns =20 tmux send-keys -l -t ${PANE_INFO} 'while cat /tmp/.passt_test_log_pipe; do = :; done' tmux send-keys -t ${PANE_INFO} -N 100 C-m @@ -137,8 +134,7 @@ layout_passt_in_pasta() { =20 pane_watch_contexts ${PANE_HOST} host host =20 - tmux pipe-pane -O -t ${PANE_PASST} "cat >> ${LOGDIR}/pane_passt.log" - tmux select-pane -t ${PANE_PASST} -T "passt in pasta (namespace)" + pane_watch_contexts ${PANE_PASST} "passt in pasta (namespace)" pasta passt =20 info_layout "passt and guest in namespace, connected by pasta" =20 diff --git a/test/lib/setup b/test/lib/setup index 6eccd8c..957a9cc 100755 --- a/test/lib/setup +++ b/test/lib/setup @@ -105,6 +105,7 @@ setup_pasta() { # setup_passt_in_ns() - Set up namespace (with pasta), run qemu and passt in= to it setup_passt_in_ns() { context_setup_host host + context_setup_host pasta =20 layout_passt_in_pasta =20 @@ -127,28 +128,18 @@ setup_passt_in_ns() { [ ${DEBUG} -eq 1 ] && __opts=3D"${__opts} -d" [ ${TRACE} -eq 1 ] && __opts=3D"${__opts} --trace" =20 - __pid_file=3D"$(mktemp)" - pane_run PASST "./pasta ${__opts} -t 10001,10002,10011,10012 -T 10003,10013= -u 10001,10002,10011,10012 -U 10003,10013 -P ${__pid_file}" + context_run_bg pasta "./pasta ${__opts} -t 10001,10002,10011,10012 -T 10003= ,10013 -u 10001,10002,10011,10012 -U 10003,10013 -P pasta.pid ${NSHOLDER} ns.= hold hold" sleep 1 - pane_run PASST '' - pane_status PASST - __pasta_pid=3D"$(cat "${__pid_file}")" - __ns_pid=3D"$(cat /proc/${__pasta_pid}/task/${__pasta_pid}/children | cut -= f1 -d' ')" - rm "${__pid_file}" - - pane_run GUEST "nsenter -t ${__ns_pid} -U -n --preserve-credentials" - pane_run NS "nsenter -t ${__ns_pid} -U -n -p --preserve-credentials" - pane_status GUEST - pane_status NS - - pane_run NS "ip -j link show | jq -rM '.[] | select(.link_type =3D=3D \"eth= er\").ifname'" - pane_wait NS - __ifname=3D"$(pane_parse NS)" - pane_run NS "/sbin/dhclient -4 --no-pid ${__ifname}" - pane_status NS + __ns_pid=3D$(${NSHOLDER} ns.hold pid) + + context_setup_nsenter qemu "-t ${__ns_pid} -U -n -p --preserve-credentials" + context_setup_nsenter ns "-t ${__ns_pid} -U -n -p --preserve-credentials" + context_setup_nsenter passt "-t ${__ns_pid} -U -n -p --preserve-credentials" + + __ifname=3D$(context_run ns "ip -j link show | jq -rM '.[] | select(.link_t= ype =3D=3D \"ether\").ifname'") + context_run ns "/sbin/dhclient -4 --no-pid ${__ifname}" sleep 2 - pane_run NS "/sbin/dhclient -6 --no-pid ${__ifname}" - pane_status NS + context_run ns "/sbin/dhclient -6 --no-pid ${__ifname}" =20 __opts=3D [ ${PCAP} -eq 1 ] && __opts=3D"${__opts} -p /tmp/passt_in_pasta.pcap" @@ -156,21 +147,18 @@ setup_passt_in_ns() { [ ${TRACE} -eq 1 ] && __opts=3D"${__opts} --trace" =20 if [ ${VALGRIND} -eq 1 ]; then - pane_run PASST "make clean" - pane_status PASST - pane_run PASST "make valgrind" - pane_status PASST - pane_run PASST "valgrind --max-stackframe=3D$((4 * 1024 * 1024)) --trace-c= hildren=3Dyes --vgdb=3Dno --error-exitcode=3D1 --suppressions=3Dtest/valgrind= .supp ./passt -f ${__opts} -t 10001,10011,10021,10031 -u 10001,10011,10021,10= 031 -P passt.pid" + context_run passt "make clean" + context_run passt "make valgrind" + context_run_bg passt "valgrind --max-stackframe=3D$((4 * 1024 * 1024)) --t= race-children=3Dyes --vgdb=3Dno --error-exitcode=3D1 --suppressions=3Dtest/va= lgrind.supp ./passt -f ${__opts} -t 10001,10011,10021,10031 -u 10001,10011,10= 021,10031 -P passt.pid" else - pane_run PASST "make clean" - pane_status PASST - pane_run PASST "make" - pane_status PASST - pane_run PASST "./passt -f ${__opts} -t 10001,10011,10021,10031 -u 10001,1= 0011,10021,10031 -P passt.pid" + context_run passt "make clean" + context_run passt "make" + context_run_bg passt "./passt -f ${__opts} -t 10001,10011,10021,10031 -u 1= 0001,10011,10021,10031 -P passt.pid" fi sleep 5 =20 - pane_run GUEST './qrap 5 qemu-system-$(uname -m)' \ + GUEST_CID=3D94557 + context_run_bg qemu './qrap 5 qemu-system-$(uname -m)' \ ' -machine accel=3Dkvm' \ ' -M accel=3Dkvm:tcg' \ ' -m '${VMEM}' -cpu host -smp '${VCPUS} \ @@ -181,8 +169,10 @@ setup_passt_in_ns() { 'virtio-net.napi_tx=3D1"' \ " -device virtio-net-pci,netdev=3Dhostnet0,x-txburst=3D524288" \ " -netdev socket,fd=3D5,id=3Dhostnet0" \ - ' -pidfile passt_in_ns_qemu.pid' - pane_status GUEST + ' -pidfile passt_in_ns_qemu.pid' \ + " -device vhost-vsock-pci,guest-cid=3D$GUEST_CID" + + context_setup_guest guest $GUEST_CID } =20 # setup_two_guests() - Set up two namespace, run qemu and passt in both of t= hem @@ -321,19 +311,18 @@ teardown_pasta() { =20 # teardown_passt_in_ns() - Exit namespace, kill qemu and pasta, remove pid f= ile teardown_passt_in_ns() { - kill $(cat passt_in_ns_qemu.pid) - pane_wait GUEST - tmux send-keys -t ${PANE_GUEST} "C-d" - - tmux send-keys -t ${PANE_PASST} "C-d" + context_run ns kill $(cat passt_in_ns_qemu.pid) + context_wait qemu =20 - pane_wait GUEST - pane_wait NS - pane_wait PASST + ${NSHOLDER} ns.hold stop + context_wait pasta =20 - rm passt.pid + rm passt.pid pasta.pid =20 teardown_context_watch ${PANE_HOST} host + teardown_context_watch ${PANE_PASST} pasta passt + teardown_context_watch ${PANE_NS} ns + teardown_context_watch ${PANE_GUEST} qemu guest } =20 # teardown_two_guests() - Exit namespaces, kill qemu processes, passt and pa= sta diff --git a/test/shutdown/passt_in_ns b/test/shutdown/passt_in_ns index a427bf4..3808adb 100644 --- a/test/shutdown/passt_in_ns +++ b/test/shutdown/passt_in_ns @@ -17,6 +17,4 @@ test shutdown: exit code nsout PASST_PID cat passt.pid ns kill __PASST_PID__ sleep 1 - -pout EXIT echo $? -check [ "__EXIT__" =3D "0" ] +passtw diff --git a/test/tcp/passt_in_ns b/test/tcp/passt_in_ns index cb01781..a248f00 100644 --- a/test/tcp/passt_in_ns +++ b/test/tcp/passt_in_ns @@ -66,6 +66,7 @@ check [ "__HOST_MD5_BIG__" =3D "__MD5_BIG__" ] =20 test TCP/IPv4: ns to guest (using loopback address): big transfer guestb socat -u TCP4-LISTEN:10001 OPEN:test_big.bin,create,trunc +sleep 1 ns socat -u OPEN:__TEMP_NS_BIG__ TCP4:127.0.0.1:10001 guestw gout GUEST_MD5_BIG md5sum test_big.bin | cut -d' ' -f1 diff --git a/test/udp/passt_in_ns b/test/udp/passt_in_ns index f5ea402..d5f08fe 100644 --- a/test/udp/passt_in_ns +++ b/test/udp/passt_in_ns @@ -19,6 +19,7 @@ test UDP/IPv4: host to guest temp TEMP temp SC_PID guestb (socat -u UDP4-LISTEN:10001 STDOUT & echo $! > sc.pid) | tee test.bin= | (grep -qm1 "END_OF_TEST" && kill $(cat sc.pid)) +sleep 1 host dd if=3D/dev/urandom bs=3D1k count=3D5 > __TEMP__ && printf "\nEND_OF_T= EST\n" >> __TEMP__ host socat -u OPEN:__TEMP__ UDP4:127.0.0.1:10001 guestw --=20 2.37.3 --===============0659469415114157293==--