diff mbox series

[14/14] iotests: Enhance 223, 233 to cover 'qemu-nbd --list'

Message ID 20181130220344.3350618-15-eblake@redhat.com (mailing list archive)
State New, archived
Headers show
Series nbd: add qemu-nbd --list | expand

Commit Message

Eric Blake Nov. 30, 2018, 10:03 p.m. UTC
Any good new feature deserves some regression testing :)
Coverage includes:
- 223: what happens when there are 0 or more than 1 export,
proof that we can see multiple contexts including qemu:dirty-bitmap
- 233: proof that we can list over TLS, and that mix-and-match of
plain/TLS listings sanely

Signed-off-by: Eric Blake <eblake@redhat.com>
---
 tests/qemu-iotests/223     |  2 ++
 tests/qemu-iotests/223.out | 20 ++++++++++++++++++++
 tests/qemu-iotests/233     | 10 ++++++++++
 tests/qemu-iotests/233.out | 15 +++++++++++++++
 4 files changed, 47 insertions(+)

Comments

Richard W.M. Jones Dec. 1, 2018, 11:04 a.m. UTC | #1
On Fri, Nov 30, 2018 at 04:03:43PM -0600, Eric Blake wrote:
> Any good new feature deserves some regression testing :)
> Coverage includes:
> - 223: what happens when there are 0 or more than 1 export,
> proof that we can see multiple contexts including qemu:dirty-bitmap
> - 233: proof that we can list over TLS, and that mix-and-match of
> plain/TLS listings sanely
> 
> Signed-off-by: Eric Blake <eblake@redhat.com>
> ---
>  tests/qemu-iotests/223     |  2 ++
>  tests/qemu-iotests/223.out | 20 ++++++++++++++++++++
>  tests/qemu-iotests/233     | 10 ++++++++++
>  tests/qemu-iotests/233.out | 15 +++++++++++++++
>  4 files changed, 47 insertions(+)
> 
> diff --git a/tests/qemu-iotests/223 b/tests/qemu-iotests/223
> index 397b865d347..e64747a9a61 100755
> --- a/tests/qemu-iotests/223
> +++ b/tests/qemu-iotests/223
> @@ -119,6 +119,7 @@ _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-block-dirty-bitmap-disable",
>  _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-start",
>    "arguments":{"addr":{"type":"unix",
>      "data":{"path":"'"$TEST_DIR/nbd"'"}}}}' "return"
> +$QEMU_NBD_PROG -L -k "$TEST_DIR/nbd"
>  _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-add",
>    "arguments":{"device":"n"}}' "return"
>  _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-nbd-server-add-bitmap",
> @@ -127,6 +128,7 @@ _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-add",
>    "arguments":{"device":"n", "name":"n2"}}' "return"
>  _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-nbd-server-add-bitmap",
>    "arguments":{"name":"n2", "bitmap":"b2"}}' "return"
> +$QEMU_NBD_PROG -L -k "$TEST_DIR/nbd"
> 
>  echo
>  echo "=== Contrast normal status to large granularity dirty-bitmap ==="
> diff --git a/tests/qemu-iotests/223.out b/tests/qemu-iotests/223.out
> index de417477de0..3342bff3447 100644
> --- a/tests/qemu-iotests/223.out
> +++ b/tests/qemu-iotests/223.out
> @@ -29,10 +29,30 @@ wrote 2097152/2097152 bytes at offset 2097152
>  {"return": {}}
>  {"return": {}}
>  {"return": {}}
> +exports available: 0
>  {"return": {}}
>  {"return": {}}
>  {"return": {}}
>  {"return": {}}
> +exports available: 2
> + export: 'n'
> +  size:  4194304
> +  flags: 0x4ef ( readonly flush fua trim zeroes df cache )
> +  min block: 512
> +  opt block: 4096
> +  max block: 33554432
> +  available meta contexts: 2
> +   base:allocation
> +   qemu:dirty-bitmap:b
> + export: 'n2'
> +  size:  4194304
> +  flags: 0x4ef ( readonly flush fua trim zeroes df cache )
> +  min block: 512
> +  opt block: 4096
> +  max block: 33554432
> +  available meta contexts: 2
> +   base:allocation
> +   qemu:dirty-bitmap:b2
> 
>  === Contrast normal status to large granularity dirty-bitmap ===
> 
> diff --git a/tests/qemu-iotests/233 b/tests/qemu-iotests/233
> index 1814efe3333..5d694d9d242 100755
> --- a/tests/qemu-iotests/233
> +++ b/tests/qemu-iotests/233
> @@ -72,6 +72,9 @@ $QEMU_IMG info --image-opts \
>      --object tls-creds-x509,dir=${tls_dir}/client1,endpoint=client,id=tls0 \
>      driver=nbd,host=$nbd_tcp_addr,port=$nbd_tcp_port,tls-creds=tls0 \
>      2>&1 | sed "s/$nbd_tcp_port/PORT/g"
> +$QEMU_NBD_PROG -L -b $nbd_tcp_addr -p $nbd_tcp_port \
> +    --object tls-creds-x509,dir=${tls_dir}/client1,endpoint=client,id=tls0 \
> +    --tls-creds=tls0
> 
>  nbd_server_stop
> 
> @@ -84,6 +87,7 @@ nbd_server_start_tcp_socket \
>      -f $IMGFMT "$TEST_IMG"
> 
>  $QEMU_IMG info nbd://localhost:$nbd_tcp_port 2>&1 | sed "s/$nbd_tcp_port/PORT/g"
> +$QEMU_NBD_PROG -L -b $nbd_tcp_addr -p $nbd_tcp_port
> 
>  echo
>  echo "== check TLS works =="
> @@ -91,6 +95,9 @@ $QEMU_IMG info --image-opts \
>      --object tls-creds-x509,dir=${tls_dir}/client1,endpoint=client,id=tls0 \
>      driver=nbd,host=$nbd_tcp_addr,port=$nbd_tcp_port,tls-creds=tls0 \
>      2>&1 | sed "s/$nbd_tcp_port/PORT/g"
> +$QEMU_NBD_PROG -L -b $nbd_tcp_addr -p $nbd_tcp_port \
> +    --object tls-creds-x509,dir=${tls_dir}/client1,endpoint=client,id=tls0 \
> +    --tls-creds=tls0
> 
>  echo
>  echo "== check TLS with different CA fails =="
> @@ -98,6 +105,9 @@ $QEMU_IMG info --image-opts \
>      --object tls-creds-x509,dir=${tls_dir}/client2,endpoint=client,id=tls0 \
>      driver=nbd,host=$nbd_tcp_addr,port=$nbd_tcp_port,tls-creds=tls0 \
>      2>&1 | sed "s/$nbd_tcp_port/PORT/g"
> +$QEMU_NBD_PROG -L -b $nbd_tcp_addr -p $nbd_tcp_port \
> +    --object tls-creds-x509,dir=${tls_dir}/client2,endpoint=client,id=tls0 \
> +    --tls-creds=tls0
> 
>  echo
>  echo "== perform I/O over TLS =="
> diff --git a/tests/qemu-iotests/233.out b/tests/qemu-iotests/233.out
> index 5f416721b03..ab669488669 100644
> --- a/tests/qemu-iotests/233.out
> +++ b/tests/qemu-iotests/233.out
> @@ -15,20 +15,35 @@ wrote 1048576/1048576 bytes at offset 1048576
>  == check TLS client to plain server fails ==
>  qemu-img: Could not open 'driver=nbd,host=127.0.0.1,port=PORT,tls-creds=tls0': Denied by server for option 5 (starttls)
>  server reported: TLS not configured
> +qemu-nbd: Denied by server for option 5 (starttls)
> +server reported: TLS not configured
> 
>  == check plain client to TLS server fails ==
>  qemu-img: Could not open 'nbd://localhost:PORT': TLS negotiation required before option 8 (structured reply)
>  server reported: Option 0x8 not permitted before TLS
> +qemu-nbd: TLS negotiation required before option 8 (structured reply)
> +server reported: Option 0x8 not permitted before TLS
> 
>  == check TLS works ==
>  image: nbd://127.0.0.1:PORT
>  file format: nbd
>  virtual size: 64M (67108864 bytes)
>  disk size: unavailable
> +exports available: 1
> + export: ''
> +  size:  67108864
> +  flags: 0x4ed ( flush fua trim zeroes df cache )
> +  min block: 512
> +  opt block: 4096
> +  max block: 33554432
> +  available meta contexts: 1
> +   base:allocation
> 
>  == check TLS with different CA fails ==
>  qemu-nbd: option negotiation failed: Verify failed: No certificate was found.
>  qemu-img: Could not open 'driver=nbd,host=127.0.0.1,port=PORT,tls-creds=tls0': The certificate hasn't got a known issuer
> +qemu-nbd: option negotiation failed: Verify failed: No certificate was found.
> +qemu-nbd: The certificate hasn't got a known issuer
> 
>  == perform I/O over TLS ==
>  read 1048576/1048576 bytes at offset 1048576
> -- 
> 2.17.2

Tests look good, and I ran them too:

QEMU          -- "/home/rjones/d/qemu/tests/qemu-iotests/../../x86_64-softmmu/qemu-system-x86_64" -nodefaults -machine accel=qtest
QEMU_IMG      -- "/home/rjones/d/qemu/tests/qemu-iotests/../../qemu-img" 
QEMU_IO       -- "/home/rjones/d/qemu/tests/qemu-iotests/../../qemu-io"  --cache writeback -f qcow2
QEMU_NBD      -- "/home/rjones/d/qemu/tests/qemu-iotests/../../qemu-nbd" 
IMGFMT        -- qcow2 (compat=1.1)
IMGPROTO      -- file
PLATFORM      -- Linux/x86_64 moo 4.18.18-300.fc29.x86_64
TEST_DIR      -- /home/rjones/d/qemu/tests/qemu-iotests/scratch
SOCKET_SCM_HELPER -- /home/rjones/d/qemu/tests/qemu-iotests/socket_scm_helper

223        
233        
Passed all 2 tests

So:

Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
Tested-by: Richard W.M. Jones <rjones@redhat.com>

Rich.
Vladimir Sementsov-Ogievskiy Dec. 7, 2018, 1:08 p.m. UTC | #2
01.12.2018 1:03, Eric Blake wrote:
> Any good new feature deserves some regression testing :)
> Coverage includes:
> - 223: what happens when there are 0 or more than 1 export,
> proof that we can see multiple contexts including qemu:dirty-bitmap
> - 233: proof that we can list over TLS, and that mix-and-match of
> plain/TLS listings sanely
> 
> Signed-off-by: Eric Blake <eblake@redhat.com>
> ---

[..]

> 
>   === Contrast normal status to large granularity dirty-bitmap ===
> 
> diff --git a/tests/qemu-iotests/233 b/tests/qemu-iotests/233
> index 1814efe3333..5d694d9d242 100755
> --- a/tests/qemu-iotests/233
> +++ b/tests/qemu-iotests/233
> @@ -72,6 +72,9 @@ $QEMU_IMG info --image-opts \
>       --object tls-creds-x509,dir=${tls_dir}/client1,endpoint=client,id=tls0 \
>       driver=nbd,host=$nbd_tcp_addr,port=$nbd_tcp_port,tls-creds=tls0 \
>       2>&1 | sed "s/$nbd_tcp_port/PORT/g"
> +$QEMU_NBD_PROG -L -b $nbd_tcp_addr -p $nbd_tcp_port \
> +    --object tls-creds-x509,dir=${tls_dir}/client1,endpoint=client,id=tls0 \
> +    --tls-creds=tls0

--object parameter may be stored to a variable before these two commands, to not duplicate,
and in following cases too.

with or without:

Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
diff mbox series

Patch

diff --git a/tests/qemu-iotests/223 b/tests/qemu-iotests/223
index 397b865d347..e64747a9a61 100755
--- a/tests/qemu-iotests/223
+++ b/tests/qemu-iotests/223
@@ -119,6 +119,7 @@  _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-block-dirty-bitmap-disable",
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-start",
   "arguments":{"addr":{"type":"unix",
     "data":{"path":"'"$TEST_DIR/nbd"'"}}}}' "return"
+$QEMU_NBD_PROG -L -k "$TEST_DIR/nbd"
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-add",
   "arguments":{"device":"n"}}' "return"
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-nbd-server-add-bitmap",
@@ -127,6 +128,7 @@  _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-add",
   "arguments":{"device":"n", "name":"n2"}}' "return"
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"x-nbd-server-add-bitmap",
   "arguments":{"name":"n2", "bitmap":"b2"}}' "return"
+$QEMU_NBD_PROG -L -k "$TEST_DIR/nbd"

 echo
 echo "=== Contrast normal status to large granularity dirty-bitmap ==="
diff --git a/tests/qemu-iotests/223.out b/tests/qemu-iotests/223.out
index de417477de0..3342bff3447 100644
--- a/tests/qemu-iotests/223.out
+++ b/tests/qemu-iotests/223.out
@@ -29,10 +29,30 @@  wrote 2097152/2097152 bytes at offset 2097152
 {"return": {}}
 {"return": {}}
 {"return": {}}
+exports available: 0
 {"return": {}}
 {"return": {}}
 {"return": {}}
 {"return": {}}
+exports available: 2
+ export: 'n'
+  size:  4194304
+  flags: 0x4ef ( readonly flush fua trim zeroes df cache )
+  min block: 512
+  opt block: 4096
+  max block: 33554432
+  available meta contexts: 2
+   base:allocation
+   qemu:dirty-bitmap:b
+ export: 'n2'
+  size:  4194304
+  flags: 0x4ef ( readonly flush fua trim zeroes df cache )
+  min block: 512
+  opt block: 4096
+  max block: 33554432
+  available meta contexts: 2
+   base:allocation
+   qemu:dirty-bitmap:b2

 === Contrast normal status to large granularity dirty-bitmap ===

diff --git a/tests/qemu-iotests/233 b/tests/qemu-iotests/233
index 1814efe3333..5d694d9d242 100755
--- a/tests/qemu-iotests/233
+++ b/tests/qemu-iotests/233
@@ -72,6 +72,9 @@  $QEMU_IMG info --image-opts \
     --object tls-creds-x509,dir=${tls_dir}/client1,endpoint=client,id=tls0 \
     driver=nbd,host=$nbd_tcp_addr,port=$nbd_tcp_port,tls-creds=tls0 \
     2>&1 | sed "s/$nbd_tcp_port/PORT/g"
+$QEMU_NBD_PROG -L -b $nbd_tcp_addr -p $nbd_tcp_port \
+    --object tls-creds-x509,dir=${tls_dir}/client1,endpoint=client,id=tls0 \
+    --tls-creds=tls0

 nbd_server_stop

@@ -84,6 +87,7 @@  nbd_server_start_tcp_socket \
     -f $IMGFMT "$TEST_IMG"

 $QEMU_IMG info nbd://localhost:$nbd_tcp_port 2>&1 | sed "s/$nbd_tcp_port/PORT/g"
+$QEMU_NBD_PROG -L -b $nbd_tcp_addr -p $nbd_tcp_port

 echo
 echo "== check TLS works =="
@@ -91,6 +95,9 @@  $QEMU_IMG info --image-opts \
     --object tls-creds-x509,dir=${tls_dir}/client1,endpoint=client,id=tls0 \
     driver=nbd,host=$nbd_tcp_addr,port=$nbd_tcp_port,tls-creds=tls0 \
     2>&1 | sed "s/$nbd_tcp_port/PORT/g"
+$QEMU_NBD_PROG -L -b $nbd_tcp_addr -p $nbd_tcp_port \
+    --object tls-creds-x509,dir=${tls_dir}/client1,endpoint=client,id=tls0 \
+    --tls-creds=tls0

 echo
 echo "== check TLS with different CA fails =="
@@ -98,6 +105,9 @@  $QEMU_IMG info --image-opts \
     --object tls-creds-x509,dir=${tls_dir}/client2,endpoint=client,id=tls0 \
     driver=nbd,host=$nbd_tcp_addr,port=$nbd_tcp_port,tls-creds=tls0 \
     2>&1 | sed "s/$nbd_tcp_port/PORT/g"
+$QEMU_NBD_PROG -L -b $nbd_tcp_addr -p $nbd_tcp_port \
+    --object tls-creds-x509,dir=${tls_dir}/client2,endpoint=client,id=tls0 \
+    --tls-creds=tls0

 echo
 echo "== perform I/O over TLS =="
diff --git a/tests/qemu-iotests/233.out b/tests/qemu-iotests/233.out
index 5f416721b03..ab669488669 100644
--- a/tests/qemu-iotests/233.out
+++ b/tests/qemu-iotests/233.out
@@ -15,20 +15,35 @@  wrote 1048576/1048576 bytes at offset 1048576
 == check TLS client to plain server fails ==
 qemu-img: Could not open 'driver=nbd,host=127.0.0.1,port=PORT,tls-creds=tls0': Denied by server for option 5 (starttls)
 server reported: TLS not configured
+qemu-nbd: Denied by server for option 5 (starttls)
+server reported: TLS not configured

 == check plain client to TLS server fails ==
 qemu-img: Could not open 'nbd://localhost:PORT': TLS negotiation required before option 8 (structured reply)
 server reported: Option 0x8 not permitted before TLS
+qemu-nbd: TLS negotiation required before option 8 (structured reply)
+server reported: Option 0x8 not permitted before TLS

 == check TLS works ==
 image: nbd://127.0.0.1:PORT
 file format: nbd
 virtual size: 64M (67108864 bytes)
 disk size: unavailable
+exports available: 1
+ export: ''
+  size:  67108864
+  flags: 0x4ed ( flush fua trim zeroes df cache )
+  min block: 512
+  opt block: 4096
+  max block: 33554432
+  available meta contexts: 1
+   base:allocation

 == check TLS with different CA fails ==
 qemu-nbd: option negotiation failed: Verify failed: No certificate was found.
 qemu-img: Could not open 'driver=nbd,host=127.0.0.1,port=PORT,tls-creds=tls0': The certificate hasn't got a known issuer
+qemu-nbd: option negotiation failed: Verify failed: No certificate was found.
+qemu-nbd: The certificate hasn't got a known issuer

 == perform I/O over TLS ==
 read 1048576/1048576 bytes at offset 1048576