On Mon, Oct 31, 2022 at 12:20:55PM +0100, Stefano Brivio wrote: > I'm going to add yet another one of those, for which I have no quick > solution. It's a regression in some sense, but at least if we make > this regression more observable and defined, it should be easier to > find a comprehensive solution later, within this or another testing > framework. > > Signed-off-by: Stefano Brivio Reviewed-by: David Gibson > --- > test/lib/layout | 69 ------------------------------------ > test/lib/layout_ugly | 83 ++++++++++++++++++++++++++++++++++++++++++++ > test/lib/setup | 23 ------------ > test/lib/setup_ugly | 38 ++++++++++++++++++++ > test/run | 2 ++ > 5 files changed, 123 insertions(+), 92 deletions(-) > create mode 100644 test/lib/layout_ugly > create mode 100755 test/lib/setup_ugly > > diff --git a/test/lib/layout b/test/lib/layout > index fcd1db4..b190060 100644 > --- a/test/lib/layout > +++ b/test/lib/layout > @@ -13,75 +13,6 @@ > # Copyright (c) 2021 Red Hat GmbH > # Author: Stefano Brivio > > -# layout_host() - Simple host commands layout with info and host panes > -layout_host() { > - sleep 3 > - > - tmux kill-pane -a -t 0 > - cmd_write 0 clear > - > - tmux split-window -h -l '35%' -t passt_test:1.0 > - > - PANE_HOST=0 > - PANE_INFO=1 > - > - get_info_cols > - > - tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; do :; done' > - tmux send-keys -t ${PANE_INFO} -N 100 C-m > - tmux select-pane -t ${PANE_INFO} -T "test log" > - > - 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" > - > - sleep 1 > -} > - > -# layout_pasta_simple() - Panes for host and pasta > -layout_pasta_simple() { > - sleep 3 > - > - tmux kill-pane -a -t 0 > - cmd_write 0 clear > - > - tmux split-window -v -t passt_test > - tmux split-window -h -t passt_test > - > - PANE_PASST=0 > - PANE_HOST=1 > - PANE_INFO=2 > - > - get_info_cols > - > - tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; do :; done' > - tmux send-keys -t ${PANE_INFO} -N 100 C-m > - tmux select-pane -t ${PANE_INFO} -T "test log" > - > - if context_exists host; then > - pane_watch_contexts ${PANE_HOST} host host > - else > - tmux pipe-pane -O -t ${PANE_HOST} "cat >> ${LOGDIR}/pane_host.log" > - tmux select-pane -t ${PANE_HOST} -T "host" > - fi > - > - if context_exists passt; then > - pane_watch_contexts ${PANE_PASST} host host > - else > - tmux pipe-pane -O -t ${PANE_PASST} "cat >> ${LOGDIR}/pane_passt.log" > - tmux select-pane -t ${PANE_PASST} -T "pasta" > - fi > - > - info_layout "single pasta instance" > - > - sleep 1 > -} > - > # layout_pasta() - Panes for host, pasta, and separate one for namespace > layout_pasta() { > sleep 3 > diff --git a/test/lib/layout_ugly b/test/lib/layout_ugly > new file mode 100644 > index 0000000..9397b7d > --- /dev/null > +++ b/test/lib/layout_ugly > @@ -0,0 +1,83 @@ > +#!/bin/sh > +# > +# SPDX-License-Identifier: AGPL-3.0-or-later > +# > +# PASST - Plug A Simple Socket Transport > +# for qemu/UNIX domain socket mode > +# > +# PASTA - Pack A Subtle Tap Abstraction > +# for network namespace/tap device mode > +# > +# test/lib/layout_ugly - screen-scraped tmux pane layouts > +# > +# Copyright (c) 2022 Red Hat GmbH > +# Author: Stefano Brivio > + > +# layout_host() - Simple host commands layout with info and host panes > +layout_host() { > + sleep 3 > + > + tmux kill-pane -a -t 0 > + cmd_write 0 clear > + > + tmux split-window -h -l '35%' -t passt_test:1.0 > + > + PANE_HOST=0 > + PANE_INFO=1 > + > + get_info_cols > + > + tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; do :; done' > + tmux send-keys -t ${PANE_INFO} -N 100 C-m > + tmux select-pane -t ${PANE_INFO} -T "test log" > + > + 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" > + > + sleep 1 > +} > + > +# layout_pasta_simple() - Panes for host and pasta > +layout_pasta_simple() { > + sleep 3 > + > + tmux kill-pane -a -t 0 > + cmd_write 0 clear > + > + tmux split-window -v -t passt_test > + tmux split-window -h -t passt_test > + > + PANE_PASST=0 > + PANE_HOST=1 > + PANE_INFO=2 > + > + get_info_cols > + > + tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; do :; done' > + tmux send-keys -t ${PANE_INFO} -N 100 C-m > + tmux select-pane -t ${PANE_INFO} -T "test log" > + > + if context_exists host; then > + pane_watch_contexts ${PANE_HOST} host host > + else > + tmux pipe-pane -O -t ${PANE_HOST} "cat >> ${LOGDIR}/pane_host.log" > + tmux select-pane -t ${PANE_HOST} -T "host" > + fi > + > + if context_exists passt; then > + pane_watch_contexts ${PANE_PASST} host host > + else > + tmux pipe-pane -O -t ${PANE_PASST} "cat >> ${LOGDIR}/pane_passt.log" > + tmux select-pane -t ${PANE_PASST} -T "pasta" > + fi > + > + info_layout "single pasta instance" > + > + sleep 1 > +} > diff --git a/test/lib/setup b/test/lib/setup > index e2d0ff0..ab6d8d5 100755 > --- a/test/lib/setup > +++ b/test/lib/setup > @@ -26,11 +26,6 @@ setup_build() { > layout_host > } > > -# setup_distro() - Set up pane layout for distro tests > -setup_distro() { > - layout_host > -} > - > # setup_passt() - Start qemu and passt > setup_passt() { > context_setup_host host > @@ -106,13 +101,6 @@ setup_pasta() { > wait_for [ -f "${STATESETUP}/passt.pid" ] > } > > -# setup_pasta_options() - Set up layout and host context without starting pasta > -setup_pasta_options() { > - context_setup_host host > - > - layout_pasta_simple > -} > - > # setup_passt_in_ns() - Set up namespace (with pasta), run qemu and passt into it > setup_passt_in_ns() { > context_setup_host host > @@ -285,11 +273,6 @@ teardown_build() { > teardown_context_watch ${PANE_HOST} host > } > > -# teardown_distro() - Nothing to do, yet > -teardown_distro() { > - : > -} > - > # teardown_passt() - Kill qemu, remove passt PID file > teardown_passt() { > kill $(cat "${STATESETUP}/qemu.pid") > @@ -311,12 +294,6 @@ teardown_pasta() { > teardown_context_watch ${PANE_NS} unshare ns > } > > -# teardown_pasta_options() - Tear down pasta and host context, no namespace > -teardown_pasta_options() { > - teardown_context_watch ${PANE_HOST} host > - teardown_context_watch ${PANE_PASST} passt > -} > - > # teardown_passt_in_ns() - Exit namespace, kill qemu and pasta, remove pid file > teardown_passt_in_ns() { > context_run ns kill $(cat "${STATESETUP}/qemu.pid") > diff --git a/test/lib/setup_ugly b/test/lib/setup_ugly > new file mode 100755 > index 0000000..764177e > --- /dev/null > +++ b/test/lib/setup_ugly > @@ -0,0 +1,38 @@ > +#!/bin/sh > +# > +# SPDX-License-Identifier: AGPL-3.0-or-later > +# > +# PASST - Plug A Simple Socket Transport > +# for qemu/UNIX domain socket mode > +# > +# PASTA - Pack A Subtle Tap Abstraction > +# for network namespace/tap device mode > +# > +# test/lib/setup_ugly - Setup functions using screen-scraping instead of context > +# > +# Copyright (c) 2022 Red Hat GmbH > +# Author: Stefano Brivio > + > +# setup_distro() - Set up pane layout for distro tests > +setup_distro() { > + layout_host > +} > + > +# setup_pasta_options() - Set up layout and host context without starting pasta > +setup_pasta_options() { > + context_setup_host host > + > + layout_pasta_simple > +} > + > +# teardown_distro() - Nothing to do, yet > +teardown_distro() { > + : > +} > + > +# teardown_pasta_options() - Tear down pasta and host context, no namespace > +teardown_pasta_options() { > + teardown_context_watch ${PANE_HOST} host > + teardown_context_watch ${PANE_PASST} passt > +} > + > diff --git a/test/run b/test/run > index cb3b6c0..c3486b9 100755 > --- a/test/run > +++ b/test/run > @@ -39,10 +39,12 @@ COMMIT="$(git log --oneline --no-decorate -1)" > > . lib/util > . lib/setup > +. lib/setup_ugly > . lib/context > . lib/term > . lib/perf_report > . lib/layout > +. lib/layout_ugly > . lib/test > . lib/video > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson