[Qemu-devel] [PATCH 4/6] tests: check if qemu-nbd is still alive before waiting

Daniel P. Berrangé posted 6 patches 6 years, 11 months ago
[Qemu-devel] [PATCH 4/6] tests: check if qemu-nbd is still alive before waiting
Posted by Daniel P. Berrangé 6 years, 11 months ago
If the qemu-nbd UNIX socket has not shown up, the tests will sleep a bit
and then check again repeatedly for upto 30 seconds. This is pointless
if the qemu-nbd process has quit due to an error, so check whether the
pid is still alive before waiting and retrying.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 tests/qemu-iotests/common.nbd | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tests/qemu-iotests/common.nbd b/tests/qemu-iotests/common.nbd
index f920a578f1..61e9e90fee 100644
--- a/tests/qemu-iotests/common.nbd
+++ b/tests/qemu-iotests/common.nbd
@@ -37,11 +37,19 @@ function nbd_server_stop()
 
 function nbd_server_wait_for_unix_socket()
 {
+    pid=$1
+
     for ((i = 0; i < 300; i++))
     do
         if [ -r "$nbd_unix_socket" ]; then
             return
         fi
+        kill -s 0 $pid 2>/dev/null
+        if test $? != 0
+        then
+            echo "qemu-nbd unexpectedly quit"
+            exit 1
+        fi
         sleep 0.1
     done
     echo "Failed in check of unix socket created by qemu-nbd"
@@ -52,5 +60,5 @@ function nbd_server_start_unix_socket()
 {
     nbd_server_stop
     $QEMU_NBD -v -t -k "$nbd_unix_socket" $@ &
-    nbd_server_wait_for_unix_socket
+    nbd_server_wait_for_unix_socket $!
 }
-- 
2.19.1


Re: [Qemu-devel] [PATCH 4/6] tests: check if qemu-nbd is still alive before waiting
Posted by Eric Blake 6 years, 11 months ago
On 11/16/18 9:53 AM, Daniel P. Berrangé wrote:
> If the qemu-nbd UNIX socket has not shown up, the tests will sleep a bit
> and then check again repeatedly for upto 30 seconds. This is pointless

s/upto/up to/

> if the qemu-nbd process has quit due to an error, so check whether the
> pid is still alive before waiting and retrying.

"But our tests are perfect and qemu-nbd never fails" :)

Yes, this makes sense.  Not 3.1 material on its own (after all, our 
testsuite isn't showing such failures, so we aren't wasting that time at 
the moment) - but worth including if the later patches end up in 3.1.

> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>   tests/qemu-iotests/common.nbd | 10 +++++++++-
>   1 file changed, 9 insertions(+), 1 deletion(-)

Reviewed-by: Eric Blake <eblake@redhat.com>

> 
> diff --git a/tests/qemu-iotests/common.nbd b/tests/qemu-iotests/common.nbd
> index f920a578f1..61e9e90fee 100644
> --- a/tests/qemu-iotests/common.nbd
> +++ b/tests/qemu-iotests/common.nbd
> @@ -37,11 +37,19 @@ function nbd_server_stop()
>   
>   function nbd_server_wait_for_unix_socket()
>   {
> +    pid=$1
> +
>       for ((i = 0; i < 300; i++))
>       do
>           if [ -r "$nbd_unix_socket" ]; then
>               return
>           fi
> +        kill -s 0 $pid 2>/dev/null
> +        if test $? != 0
> +        then
> +            echo "qemu-nbd unexpectedly quit"
> +            exit 1

Maybe the echo should be redirected to stderr.  But we aren't 
consistently doing that in other tests (_init_error does it, but other 
spots in check are not), so I'm not changing it.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Re: [Qemu-devel] [PATCH 4/6] tests: check if qemu-nbd is still alive before waiting
Posted by Daniel P. Berrangé 6 years, 11 months ago
On Fri, Nov 16, 2018 at 10:24:54AM -0600, Eric Blake wrote:
> On 11/16/18 9:53 AM, Daniel P. Berrangé wrote:
> > If the qemu-nbd UNIX socket has not shown up, the tests will sleep a bit
> > and then check again repeatedly for upto 30 seconds. This is pointless
> 
> s/upto/up to/
> 
> > if the qemu-nbd process has quit due to an error, so check whether the
> > pid is still alive before waiting and retrying.
> 
> "But our tests are perfect and qemu-nbd never fails" :)

Well the key benefit for this is actually people writing new tests,
like me with this series, who continually screw up the argv syntax
to qemu-nbd and don't want to wait 30 seconds for it to fail :)

> Yes, this makes sense.  Not 3.1 material on its own (after all, our
> testsuite isn't showing such failures, so we aren't wasting that time at the
> moment) - but worth including if the later patches end up in 3.1.
> 
> > 
> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > ---
> >   tests/qemu-iotests/common.nbd | 10 +++++++++-
> >   1 file changed, 9 insertions(+), 1 deletion(-)
> 
> Reviewed-by: Eric Blake <eblake@redhat.com>
> 
> > 
> > diff --git a/tests/qemu-iotests/common.nbd b/tests/qemu-iotests/common.nbd
> > index f920a578f1..61e9e90fee 100644
> > --- a/tests/qemu-iotests/common.nbd
> > +++ b/tests/qemu-iotests/common.nbd
> > @@ -37,11 +37,19 @@ function nbd_server_stop()
> >   function nbd_server_wait_for_unix_socket()
> >   {
> > +    pid=$1
> > +
> >       for ((i = 0; i < 300; i++))
> >       do
> >           if [ -r "$nbd_unix_socket" ]; then
> >               return
> >           fi
> > +        kill -s 0 $pid 2>/dev/null
> > +        if test $? != 0
> > +        then
> > +            echo "qemu-nbd unexpectedly quit"
> > +            exit 1
> 
> Maybe the echo should be redirected to stderr.  But we aren't consistently
> doing that in other tests (_init_error does it, but other spots in check are
> not), so I'm not changing it.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|