From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from gandalf.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by passt.top (Postfix) with ESMTPS id 8E4915A0082 for ; Tue, 1 Nov 2022 01:59:33 +0100 (CET) Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4N1WrK5KVGz4xN2; Tue, 1 Nov 2022 11:59:29 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=201602; t=1667264369; bh=UUr0b17vq7JyK/4FhbA1XPWoUQWvAsBNAqsEpavFK40=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=QbZL5zgnq5hsF6KSrhMBnyGFlUntOeBwvIV4EMxLW/kS3/2Oym6tQPy8PWmaTHye/ 97Udl8+HEdnBEPHH47AS7AA44uQVAR6TkIaUWsLoH3K0oBxDupRxhNqXUeI0tKGQyL FC2PfGQEdsqJqZ0thlKsB19FnqN5RIyJGE1f/dbk= Date: Tue, 1 Nov 2022 11:39:09 +1100 From: David Gibson To: Stefano Brivio Subject: Re: [PATCH v2 1/5] test/lib: Move screen-scraping setup and layout functions to _ugly files Message-ID: References: <20221031112059.170269-1-sbrivio@redhat.com> <20221031112059.170269-2-sbrivio@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="qZcWsBc5P6haZ7i2" Content-Disposition: inline In-Reply-To: <20221031112059.170269-2-sbrivio@redhat.com> Message-ID-Hash: PC3GQCXXA3VKF42L2SHXCKIZAAEO6CFM X-Message-ID-Hash: PC3GQCXXA3VKF42L2SHXCKIZAAEO6CFM X-MailFrom: dgibson@gandalf.ozlabs.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top X-Mailman-Version: 3.3.3 Precedence: list List-Id: Development discussion and patches for passt Archived-At: <> Archived-At: List-Archive: <> List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --qZcWsBc5P6haZ7i2 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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. >=20 > 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 >=20 > 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 > =20 > -# 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=3D0 > - PANE_INFO=3D1 > - > - get_info_cols > - > - tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; d= o :; 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=3D0 > - PANE_HOST=3D1 > - PANE_INFO=3D2 > - > - get_info_cols > - > - tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; d= o :; 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=3D0 > + PANE_INFO=3D1 > + > + get_info_cols > + > + tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; d= o :; 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=3D0 > + PANE_HOST=3D1 > + PANE_INFO=3D2 > + > + get_info_cols > + > + tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; d= o :; 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 > } > =20 > -# 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" ] > } > =20 > -# setup_pasta_options() - Set up layout and host context without startin= g pasta > -setup_pasta_options() { > - context_setup_host host > - > - layout_pasta_simple > -} > - > # setup_passt_in_ns() - Set up namespace (with pasta), run qemu and pass= t into it > setup_passt_in_ns() { > context_setup_host host > @@ -285,11 +273,6 @@ teardown_build() { > teardown_context_watch ${PANE_HOST} host > } > =20 > -# 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 > } > =20 > -# teardown_pasta_options() - Tear down pasta and host context, no namesp= ace > -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 p= id 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 startin= g 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 namesp= ace > +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=3D"$(git log --oneline --no-decorate -1)" > =20 > . lib/util > . lib/setup > +. lib/setup_ugly > . lib/context > . lib/term > . lib/perf_report > . lib/layout > +. lib/layout_ugly > . lib/test > . lib/video > =20 --=20 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 --qZcWsBc5P6haZ7i2 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEoULxWu4/Ws0dB+XtgypY4gEwYSIFAmNgaqAACgkQgypY4gEw YSLkWA/9Gc3OM08jpINEDa0Q+UBTCAd9ZMuXUd6Dums3UL19iQspXOuNmswFv6Xr 3ZRo1AJUEgafDLnf3TyctV1bf4ituwRSC1hnGwUAOXSn0CnZ1nCyNqsgdV7CKoab j+HdR0njLN2mIxqPHFTb9op0Z0iobVAbVbjgPQPOoQGpdQflTZv9rAZWmwJ3w2+e rwxvrObZsiwCKVb9qGp5PB25jjc1jRZuXQH2ILc2L5VwzVpniM7GqeI3YWzP65pD Qkx5r71+Y4TbuNCsVbkOb3/WbZ9ljPI41OjtWCsNZkAfh96I6kc9vREIxWB3tAqK t+UdwYodJA6FnPlPDdpiibB3Tqk7JZ75XKRKVqWI6bxhmOJZMNpkHo2xpwJUJvD8 qMHmt4LPK1M9UfoFhxr+ZIM3edoCV0ELE6mGNxfJKUukEnnaCDWiVuJ60lZSO2Hr YduwLZAhCKcskVsEeKymwVhhEIZut+MhjR44fk7/bz9SebFFBaIw1pik6cVAWBtL DKACWkhc+cPs2vF+QZ8UjXUJx3ADu7nygilw4GIi4aimYV6XwUs6eO6/bUZUzD2i aX1cSA+AUvDd9RS5b5W0mANpZ4PncBKxmHywcJN/5GqvoVEIOIz5Bi4RqSePqdAc LLsJYpaElvjLtUNW8B4Zq34t2XlRkbypnp/FYjpv+hNEgn+fhWs= =L+bC -----END PGP SIGNATURE----- --qZcWsBc5P6haZ7i2--