]> git.proxmox.com Git - mirror_qemu.git/commitdiff
iotests: Make 083 less flaky
authorMax Reitz <mreitz@redhat.com>
Thu, 9 Nov 2017 20:30:24 +0000 (21:30 +0100)
committerMax Reitz <mreitz@redhat.com>
Tue, 14 Nov 2017 17:06:25 +0000 (18:06 +0100)
083 has (at least) two issues:

1. By launching the nbd-fault-injector in background, it may not be
   scheduled until the first grep on its output file is executed.
   However, until then, that file may not have been created yet -- so it
   either does not exist yet (thus making the grep emit an error), or it
   does exist but contains stale data (thus making the rest of the test
   case work connect to a wrong address).
   Fix this by explicitly overwriting the output file before executing
   nbd-fault-injector.

2. The nbd-fault-injector prints things other than "Listening on...".
   It also prints a "Closing connection" message from time to time.  We
   currently invoke sed on the whole file in the hope of it only
   containing the "Listening on..." line yet.  That hope is sometimes
   shattered by the brutal reality of race conditions, so make the sed
   script more robust.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Message-id: 20171109203025.27493-5-mreitz@redhat.com
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
tests/qemu-iotests/083

index 0306f112da3e45cd25832030d6de37f2632087dd..3c1adbf0fb782e8786a24bd9fa1f99277e775f22 100755 (executable)
@@ -86,6 +86,7 @@ EOF
 
        rm -f "$TEST_DIR/nbd.sock"
 
+        echo > "$TEST_DIR/nbd-fault-injector.out"
        $PYTHON nbd-fault-injector.py $extra_args "$nbd_addr" "$TEST_DIR/nbd-fault-injector.conf" >"$TEST_DIR/nbd-fault-injector.out" 2>&1 &
 
        # Wait for server to be ready
@@ -94,7 +95,8 @@ EOF
        done
 
        # Extract the final address (port number has now been assigned in tcp case)
-       nbd_addr=$(sed 's/Listening on \(.*\)$/\1/' "$TEST_DIR/nbd-fault-injector.out")
+        nbd_addr=$(sed -n 's/^Listening on //p' \
+                       "$TEST_DIR/nbd-fault-injector.out")
 
        if [ "$proto" = "tcp" ]; then
                nbd_url="nbd+tcp://$nbd_addr/$export_name"