Nit: On Thu, 8 Sep 2022 11:49:14 +1000 David Gibson wrote: > 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" > > - 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 > > info_layout "host commands only" > > @@ -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" > > - 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 > > 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" > > - 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 > > 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" > > - 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 > > 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" > > - 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 > > 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="$((${__mem_kib} / 1024 / 4))" > > # setup_build() - Set up pane layout for build tests > setup_build() { > + context_setup_host host > + > layout_host > } > > @@ -30,6 +32,8 @@ setup_distro() { > > # setup_passt() - Start qemu and passt > setup_passt() { > + context_setup_host host > + > layout_passt > > # Ports: > @@ -63,17 +67,12 @@ setup_passt() { > " -netdev socket,fd=5,id=hostnet0" \ > ' -pidfile passt_qemu.pid' > pane_status GUEST > - > - # Set things up to reduce problems parsing host command output > - pane_run HOST "PS1='$ '" > - 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 > } > > # setup_pasta() - Create a network and user namespace, connect pasta to it > setup_pasta() { > + context_setup_host host > + > layout_pasta > > pane_run NS 'echo $$' > @@ -105,6 +104,8 @@ setup_pasta() { > > # setup_passt_in_ns() - Set up namespace (with pasta), run qemu and passt into it > setup_passt_in_ns() { > + context_setup_host host > + > layout_passt_in_pasta > > # Ports: > @@ -182,17 +183,12 @@ setup_passt_in_ns() { > " -netdev socket,fd=5,id=hostnet0" \ > ' -pidfile passt_in_ns_qemu.pid' > pane_status GUEST > - > - # Set things up to reduce problems parsing host command output > - pane_run HOST "PS1='$ '" > - 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 > } > > # setup_two_guests() - Set up two namespace, run qemu and passt in both of them > setup_two_guests() { > + context_setup_host host > + > layout_two_guests > > # Ports: > @@ -290,9 +286,21 @@ setup_two_guests() { > pane_status GUEST_2 > } > > +# teardown_context_watch() - Remove contexts and stop panes watching them > +# $1: Pane number watching > +# $@: Context names > +teardown_context_watch() { > + __pane="$1" > + shift > + for __c ; do Whitespace between ; and do is the most common coding style from POSIX references, but otherwise inconsistent with everything else in these files (and, say, with pane_watch_contexts() in 3/11) -- I'd drop it. -- Stefano