[Libguestfs] [PATCH nbdkit] tests/test-truncate4.sh: Rewrite to use nbdsh.

Eric Blake eblake at redhat.com
Wed May 20 13:25:43 UTC 2020


On 5/20/20 7:50 AM, Richard W.M. Jones wrote:
> The old test relied on issuing an asynchronous command to a qemu-io
> subprocess, requiring a sleep to ensure that the command had been
> carried out.  ‘sleep 1’ was not long enough on s390x as you can see
> from this partial trace:

Nice analysis.

> Here are still connecting to nbdkit from "connection A", long after
> the sleep has finished and the truncate has been done.
> 
> Instead of increasing the sleep and hoping for the best, I chose to
> rewrite the test to use nbdsh.  This allows us to control both
> connections from a single process, making the test predicatable and
> easier to understand.

Indeed.  nbdsh is making a lot of tests easier to write, and it is now 
just a question of revisiting the older tests that predated it.

> ---
>   tests/test-truncate4.sh | 90 ++++++++++++++++++++++++++---------------
>   1 file changed, 58 insertions(+), 32 deletions(-)
> 
> diff --git a/tests/test-truncate4.sh b/tests/test-truncate4.sh
> index e4be626b..c5dc608c 100755
> --- a/tests/test-truncate4.sh
> +++ b/tests/test-truncate4.sh

> -requires qemu-io --version
> +requires nbdsh --version
> +requires truncate --help

We probably don't need truncate...

> +
> +if ! dd --help | grep fullblock; then
> +    echo "$0: requires GNU dd with the iflag=fullblock option"
> +    exit 77
> +fi
>   
>   sock=`mktemp -u`
> -files="truncate4.out truncate4.pid $sock truncate4.data"
> +data=truncate4.data
> +files="truncate4.pid $sock $data"
>   rm -f $files
>   cleanup_fn rm -f $files
>   
> -# Initial file contents: 1k of pattern 1
> -truncate -s 1024 truncate4.data
> -qemu-io -c 'w -P 1 0 1024' -f raw truncate4.data
> +truncate -s 0 $data

...true, the old code used it (without requiring it!), but in the new 
code, you could get away with ': > $data' instead of having to invoke 
truncate.  Then where the old code resized the file with truncate 
between connections A and B, the new code is using python.

The conversion itself looks correct to me.  ACK.

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




More information about the Libguestfs mailing list