On Fri, 23 Sep 2022 17:20:27 +1000 David Gibson <david(a)gibson.dropbear.id.au> wrote:Add a shell helper function to wait for some command to succeed - typically a test for something to be done by a background process. Use it in the context code which waits for the guest to respond to ssh-over-vsock connections. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/lib/context | 4 +--- test/lib/util | 8 ++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/test/lib/context b/test/lib/context index 43b00dd..ee6b683 100644 --- a/test/lib/context +++ b/test/lib/context @@ -63,9 +63,7 @@ EOF echo "ssh -F ${__ssh} ${__name}" > "${__enter}" # Wait for the guest to be booted and accepting connections - while ! ssh -F "${__ssh}" "${__name}" :; do - sleep 0.1 - done + wait_for ssh -F "${__ssh}" "${__name}" : } # context_teardown() - Remove a context (leave log files intact) diff --git a/test/lib/util b/test/lib/util index dee6c8d..72023ab 100755 --- a/test/lib/util +++ b/test/lib/util @@ -123,3 +123,11 @@ get_info_cols() { __j=$((__j + 1)) done } + +# wait_for() - Retry a command until it succeeds +# $@: Command to run +wait_for() { + while ! "$@"; do + sleep 0.1While at it, could we replace this with sleep 0.1 || sleep 1, just in case we happen to run in an environment not supporting sleep 0.1? -- Stefano