From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Gibson To: passt-dev@passt.top Subject: [PATCH v2 05/32] test: Issue host commands via context for most tests Date: Thu, 08 Sep 2022 16:15:54 +1000 Message-ID: <20220908061621.2430844-6-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="===============7315863172448796535==" --===============7315863172448796535== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Convert most of the tests to use the new-style system for issuing commands for all host commands. We leave the distro tests for now: they use the same pane for both host and guest commands which we'll need some more things to deal with. Signed-off-by: David Gibson --- test/lib/layout | 20 ++++++++++---------- test/lib/setup | 47 ++++++++++++++++++++++++++++++++--------------- 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/test/lib/layout b/test/lib/layout index 2d6b197..09c213a 100644 --- a/test/lib/layout +++ b/test/lib/layout @@ -31,8 +31,12 @@ layout_host() { tmux send-keys -t ${PANE_INFO} -N 100 C-m tmux select-pane -t ${PANE_INFO} -T "test log" =20 - tmux pipe-pane -O -t ${PANE_HOST} "cat >> ${LOGDIR}/pane_host.log" - tmux select-pane -t ${PANE_HOST} -T "host" + if context_exists host; then + pane_watch_contexts 0 host host + else + tmux pipe-pane -O -t ${PANE_HOST} "cat >> ${LOGDIR}/pane_host.log" + tmux select-pane -t ${PANE_HOST} -T "host" + fi =20 info_layout "host commands only" =20 @@ -64,8 +68,7 @@ layout_pasta() { tmux send-keys -t ${PANE_INFO} -N 100 C-m tmux select-pane -t ${PANE_INFO} -T "test log" =20 - tmux pipe-pane -O -t ${PANE_HOST} "cat >> ${LOGDIR}/pane_host.log" - tmux select-pane -t ${PANE_HOST} -T "host" + 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 "pasta" @@ -100,8 +103,7 @@ layout_passt() { tmux send-keys -t ${PANE_INFO} -N 100 C-m tmux select-pane -t ${PANE_INFO} -T "test log" =20 - tmux pipe-pane -O -t ${PANE_HOST} "cat >> ${LOGDIR}/pane_host.log" - tmux select-pane -t ${PANE_HOST} -T "host" + 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" @@ -141,8 +143,7 @@ layout_passt_in_pasta() { tmux send-keys -t ${PANE_INFO} -N 100 C-m tmux select-pane -t ${PANE_INFO} -T "test log" =20 - tmux pipe-pane -O -t ${PANE_HOST} "cat >> ${LOGDIR}/pane_host.log" - tmux select-pane -t ${PANE_HOST} -T "host" + 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)" @@ -189,8 +190,7 @@ layout_two_guests() { tmux send-keys -t ${PANE_INFO} -N 100 C-m tmux select-pane -t ${PANE_INFO} -T "test log" =20 - tmux pipe-pane -O -t ${PANE_HOST} "cat >> ${LOGDIR}/pane_host.log" - tmux select-pane -t ${PANE_HOST} -T "host" + pane_watch_contexts ${PANE_HOST} host host =20 tmux pipe-pane -O -t ${PANE_PASST_1} "cat >> ${LOGDIR}/pane_passt_1.log" tmux select-pane -t ${PANE_PASST_1} -T "passt #1 in namespace #1" diff --git a/test/lib/setup b/test/lib/setup index 42f03c1..9b5e9ff 100755 --- a/test/lib/setup +++ b/test/lib/setup @@ -20,6 +20,8 @@ VMEM=3D"$((${__mem_kib} / 1024 / 4))" =20 # setup_build() - Set up pane layout for build tests setup_build() { + context_setup_host host + layout_host } =20 @@ -30,6 +32,8 @@ setup_distro() { =20 # setup_passt() - Start qemu and passt setup_passt() { + context_setup_host host + layout_passt =20 # Ports: @@ -63,17 +67,12 @@ setup_passt() { " -netdev socket,fd=3D5,id=3Dhostnet0" \ ' -pidfile passt_qemu.pid' pane_status GUEST - - # Set things up to reduce problems parsing host command output - pane_run HOST "PS1=3D'$ '" - pane_wait HOST - # Non-bash shells will fail this, but also don't need it, so ignore errors - pane_run HOST "bind 'set enable-bracketed-paste off'" - pane_wait HOST } =20 # setup_pasta() - Create a network and user namespace, connect pasta to it setup_pasta() { + context_setup_host host + layout_pasta =20 pane_run NS 'echo $$' @@ -105,6 +104,8 @@ setup_pasta() { =20 # setup_passt_in_ns() - Set up namespace (with pasta), run qemu and passt in= to it setup_passt_in_ns() { + context_setup_host host + layout_passt_in_pasta =20 # Ports: @@ -182,17 +183,12 @@ setup_passt_in_ns() { " -netdev socket,fd=3D5,id=3Dhostnet0" \ ' -pidfile passt_in_ns_qemu.pid' pane_status GUEST - - # Set things up to reduce problems parsing host command output - pane_run HOST "PS1=3D'$ '" - pane_wait HOST - # Non-bash shells will fail this, but also don't need it, so ignore errors - pane_run HOST "bind 'set enable-bracketed-paste off'" - pane_wait HOST } =20 # setup_two_guests() - Set up two namespace, run qemu and passt in both of t= hem setup_two_guests() { + context_setup_host host + layout_two_guests =20 # Ports: @@ -290,9 +286,21 @@ setup_two_guests() { pane_status GUEST_2 } =20 +# teardown_context_watch() - Remove contexts and stop panes watching them +# $1: Pane number watching +# $@: Context names +teardown_context_watch() { + __pane=3D"$1" + shift + for __c ; do + context_teardown "${__c}" + done + tmux send-keys -t ${__pane} "C-c" +} + # teardown_build() - Nothing to do, yet teardown_build() { - : + teardown_context_watch ${PANE_HOST} host } =20 # teardown_distro() - Nothing to do, yet @@ -303,14 +311,19 @@ teardown_distro() { # teardown_passt() - Kill qemu, remove passt PID file teardown_passt() { kill $(cat passt_qemu.pid) + pane_wait GUEST rm passt.pid + + teardown_context_watch ${PANE_HOST} host } =20 # teardown_passt() - Exit namespace, kill pasta process teardown_pasta() { tmux send-keys -t ${PANE_NS} "C-d" pane_wait NS + + teardown_context_watch ${PANE_HOST} host } =20 # teardown_passt_in_ns() - Exit namespace, kill qemu and pasta, remove pid f= ile @@ -326,6 +339,8 @@ teardown_passt_in_ns() { pane_wait PASST =20 rm passt.pid + + teardown_context_watch ${PANE_HOST} host } =20 # teardown_two_guests() - Exit namespaces, kill qemu processes, passt and pa= sta @@ -350,6 +365,8 @@ teardown_two_guests() { pane_wait GUEST_2 pane_wait PASST_1 pane_wait PASST_2 + + teardown_context_watch ${PANE_HOST} host } =20 # teardown_demo_passt() - Exit namespace, kill qemu, passt and pasta --=20 2.37.3 --===============7315863172448796535==--