From 56e755ba1146dc6bd488bedc155db5be9c47ac12 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Mon, 12 Sep 2022 20:56:22 +1000 Subject: test: Use context system for guest commands Extends the context system in the test scripts to allow executing commands within a guest. Do this without requiring an existing network in the guest by using socat to run ssh via a vsock connection. We do need some additional "sleep"s in the tests, because the new faster dispatch means that sometimes we attempt to connect before socat has managed to listen. For now, only use this for the plain "passt" tests. The "passt_in_ns" and other tests have additional complications we still need to deal with. Signed-off-by: David Gibson --- test/lib/context | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'test/lib/context') diff --git a/test/lib/context b/test/lib/context index 0d92d8f..ccb0004 100644 --- a/test/lib/context +++ b/test/lib/context @@ -41,12 +41,38 @@ context_setup_nsenter() { echo "nsenter $@ sh -c" > "${__prefix}.enter" } +# context_setup_guest() - Create a new context for running commands in a guest +# $1: Context name +# $2: CID to use for vsock +context_setup_guest() { + __name="$1" + __cid="$2" + __prefix="${LOGDIR}/context_${__name}" + context_setup_common "${__name}" + + cat > "${__prefix}.ssh" < "${__prefix}.enter" + + # Wait for the guest to be booted and accepting connections + while ! ssh -F "${__prefix}.ssh" "${__name}" :; do + sleep 0.1 + done +} + # context_teardown() - Remove a context (leave log files intact) # $1: Context name context_teardown() { __name="$1" __prefix="${LOGDIR}/context_${__name}" - rm -f "${__prefix}.enter" + rm -f "${__prefix}.enter" "${__prefix}.ssh" "${__prefix}.hosts" } # context_exists() - Test if a context currently exists -- cgit v1.2.3