aboutgitcodebugslistschat
path: root/test/lib/test
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2022-09-21 01:00:39 +0200
committerStefano Brivio <sbrivio@redhat.com>2022-09-22 16:54:09 +0200
commit9f8b783d4a3860fa22082c57c3054fbc062def17 (patch)
treeb4e4ac5dfdea6ac6be89a8e988f909a166e7b82e /test/lib/test
parent119bb265a3c641f21d6c5f0b65037f654903ea57 (diff)
downloadpasst-9f8b783d4a3860fa22082c57c3054fbc062def17.tar
passt-9f8b783d4a3860fa22082c57c3054fbc062def17.tar.gz
passt-9f8b783d4a3860fa22082c57c3054fbc062def17.tar.bz2
passt-9f8b783d4a3860fa22082c57c3054fbc062def17.tar.lz
passt-9f8b783d4a3860fa22082c57c3054fbc062def17.tar.xz
passt-9f8b783d4a3860fa22082c57c3054fbc062def17.tar.zst
passt-9f8b783d4a3860fa22082c57c3054fbc062def17.zip
test/lib: Wait on iperf3 clients to be done, then send SIGINT to servers
An iperf3 client might fail to send the control message indicating the end of the test, if the kernel buffer doesn't accept it, and exit without having sent it, as the control socket is non-blocking. Should this happen, the server will just wait forever for this message, instead of terminating. Restore some of the behaviour that went away with the "test: Rewrite test_iperf3" patch: instead of waiting on servers to terminate, wait on the clients. When they are done, wait 2 seconds, and then send SIGINT to the servers, which make them still write out the JSON report before terminating. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'test/lib/test')
-rwxr-xr-xtest/lib/test16
1 files changed, 8 insertions, 8 deletions
diff --git a/test/lib/test b/test/lib/test
index a9ffe83..b69d519 100755
--- a/test/lib/test
+++ b/test/lib/test
@@ -32,13 +32,11 @@ test_iperf3() {
__time="${1}"; shift
pane_or_context_run_bg "${__sctx}" \
- '(' \
- ' for i in $(seq 0 '${__procs}'); do' \
- ' iperf3 -s1J -p'${__port}' -i'${__time} \
- ' > s${i}.json &' \
- ' done;' \
- ' wait' \
- ')'
+ 'for i in $(seq 0 '${__procs}'); do' \
+ ' (iperf3 -s1J -p'${__port}' -i'${__time} \
+ ' > s${i}.json) &' \
+ ' echo $! > s${i}.pid &' \
+ 'done' \
sleep 1 # Wait for server to be ready
@@ -51,7 +49,9 @@ test_iperf3() {
' wait' \
')'
- pane_or_context_wait "${__sctx}"
+ # If client fails to deliver control message, tell server we're done
+ pane_or_context_run "${__sctx}" \
+ 'sleep 2; kill -INT $(cat s*.pid); rm s*.pid'
__jval=".end.sum_received.bits_per_second"
for __opt in ${@}; do