Replace HMP migration and savevm/loadvm commands with QMP equivalents. Signed-off-by: Marc-André Lureau <[email protected]> --- tests/qemu-iotests/181 | 86 ++++++++++++++++++++++++++++++++-------------- tests/qemu-iotests/181.out | 36 +++++++++---------- 2 files changed, 78 insertions(+), 44 deletions(-)
diff --git a/tests/qemu-iotests/181 b/tests/qemu-iotests/181 index 458cb737f1cb..d814a1b8226e 100755 --- a/tests/qemu-iotests/181 +++ b/tests/qemu-iotests/181 @@ -47,7 +47,6 @@ _supported_fmt generic _unsupported_fmt qcow vdi vhdx vmdk vpc vvfat parallels _supported_proto generic _supported_os Linux -_require_hmp _flaky_test https://gitlab.com/qemu-project/qemu/-/work_items/3515 @@ -58,8 +57,6 @@ echo echo === Starting VMs === echo -qemu_comm_method="monitor" - if [ "$IMGOPTSSYNTAX" = "true" ]; then _launch_qemu \ -drive "${TEST_IMG}",cache=${CACHEMODE},aio=$AIOMODE,id=disk @@ -80,15 +77,27 @@ else fi dest=$QEMU_HANDLE +silent=yes +_send_qemu_cmd $src \ + "{ 'execute': 'qmp_capabilities' }" \ + 'return' +_send_qemu_cmd $dest \ + "{ 'execute': 'qmp_capabilities' }" \ + 'return' + echo echo === Write something on the source === echo silent= -_send_qemu_cmd $src 'qemu-io disk "write -P 0x55 0 64k"' "(qemu)" -_send_qemu_cmd $src "" "ops/sec" -_send_qemu_cmd $src 'qemu-io disk "read -P 0x55 0 64k"' "(qemu)" -_send_qemu_cmd $src "" "ops/sec" +_send_qemu_cmd $src \ + "{ 'execute': 'x-qemu-io', + 'arguments': { 'device': 'disk', 'command': 'write -P 0x55 0 64k' } }" \ + 'return' +_send_qemu_cmd $src \ + "{ 'execute': 'x-qemu-io', + 'arguments': { 'device': 'disk', 'command': 'read -P 0x55 0 64k' } }" \ + 'return' echo echo === Do postcopy migration to destination === @@ -98,28 +107,45 @@ echo # switch to postcopy # Enable postcopy-ram capability both on source and destination silent=yes -_send_qemu_cmd $dest 'migrate_set_capability postcopy-ram on' "(qemu)" - qemu_error_no_exit=yes success_or_failure=yes \ - _send_qemu_cmd $dest '' "(qemu)" "Postcopy is not supported" + _send_qemu_cmd $dest \ + "{ 'execute': 'migrate-set-capabilities', + 'arguments': { 'capabilities': [ + { 'capability': 'postcopy-ram', 'state': true } ] } }" \ + 'return' 'error' if [ ${QEMU_STATUS[$dest]} -lt 0 ]; then - _send_qemu_cmd $dest '' "(qemu)" - - _send_qemu_cmd $src 'quit' "" - _send_qemu_cmd $dest 'quit' "" + _send_qemu_cmd $src \ + "{ 'execute': 'quit' }" \ + 'return' + _send_qemu_cmd $dest \ + "{ 'execute': 'quit' }" \ + 'return' wait=1 _cleanup_qemu _notrun 'Postcopy is not supported' fi -_send_qemu_cmd $src 'migrate_set_parameter max-bandwidth 4k' "(qemu)" -_send_qemu_cmd $src 'migrate_set_capability postcopy-ram on' "(qemu)" -_send_qemu_cmd $src "migrate -d unix:${MIG_SOCKET}" "(qemu)" -_send_qemu_cmd $src 'migrate_start_postcopy' "(qemu)" +_send_qemu_cmd $src \ + "{ 'execute': 'migrate-set-parameters', + 'arguments': { 'max-bandwidth': 4096 } }" \ + 'return' +_send_qemu_cmd $src \ + "{ 'execute': 'migrate-set-capabilities', + 'arguments': { 'capabilities': [ + { 'capability': 'postcopy-ram', 'state': true } ] } }" \ + 'return' +_send_qemu_cmd $src \ + "{ 'execute': 'migrate', + 'arguments': { 'uri': 'unix:${MIG_SOCKET}' } }" \ + 'return' +_send_qemu_cmd $src \ + "{ 'execute': 'migrate-start-postcopy' }" \ + 'return' QEMU_COMM_TIMEOUT=1 qemu_cmd_repeat=10 silent=yes \ - _send_qemu_cmd $src "info migrate" "completed\|failed" -silent=yes _send_qemu_cmd $src "" "(qemu)" + _send_qemu_cmd $src \ + "{ 'execute': 'query-migrate' }" \ + '"status": "completed"\|"status": "failed"' echo echo === Do some I/O on the destination === @@ -129,17 +155,25 @@ echo # of the node name, which would create a new BlockBackend and not test whether # the guest has the necessary permissions to access the image now silent= -_send_qemu_cmd $dest 'qemu-io disk "read -P 0x55 0 64k"' "(qemu)" -_send_qemu_cmd $dest "" "ops/sec" -_send_qemu_cmd $dest 'qemu-io disk "write -P 0x66 1M 64k"' "(qemu)" -_send_qemu_cmd $dest "" "ops/sec" +_send_qemu_cmd $dest \ + "{ 'execute': 'x-qemu-io', + 'arguments': { 'device': 'disk', 'command': 'read -P 0x55 0 64k' } }" \ + 'return' +_send_qemu_cmd $dest \ + "{ 'execute': 'x-qemu-io', + 'arguments': { 'device': 'disk', 'command': 'write -P 0x66 1M 64k' } }" \ + 'return' echo echo === Shut down and check image === echo -_send_qemu_cmd $src 'quit' "" -_send_qemu_cmd $dest 'quit' "" +_send_qemu_cmd $src \ + "{ 'execute': 'quit' }" \ + 'return' +_send_qemu_cmd $dest \ + "{ 'execute': 'quit' }" \ + 'return' wait=1 _cleanup_qemu _check_test_img diff --git a/tests/qemu-iotests/181.out b/tests/qemu-iotests/181.out index d58c6a9dabb0..43dc83bc9cae 100644 --- a/tests/qemu-iotests/181.out +++ b/tests/qemu-iotests/181.out @@ -6,32 +6,32 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 === Write something on the source === -QEMU X.Y.Z monitor - type 'help' for more information -(qemu) qemu-io disk "write -P 0x55 0 64k" -wrote 65536/65536 bytes at offset 0 -64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -(qemu) -(qemu) qemu-io disk "read -P 0x55 0 64k" -read 65536/65536 bytes at offset 0 -64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +{ 'execute': 'x-qemu-io', + 'arguments': { 'device': 'disk', 'command': 'write -P 0x55 0 64k' } } +{"return": {"human-readable-text": "wrote 65536/65536 bytes at offset 0n64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)n"}} +{ 'execute': 'x-qemu-io', + 'arguments': { 'device': 'disk', 'command': 'read -P 0x55 0 64k' } } +{"return": {"human-readable-text": "read 65536/65536 bytes at offset 0n64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)n"}} === Do postcopy migration to destination === === Do some I/O on the destination === -(qemu) qemu-io disk "read -P 0x55 0 64k" -read 65536/65536 bytes at offset 0 -64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -(qemu) -(qemu) qemu-io disk "write -P 0x66 1M 64k" -wrote 65536/65536 bytes at offset 1048576 -64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +{ 'execute': 'x-qemu-io', + 'arguments': { 'device': 'disk', 'command': 'read -P 0x55 0 64k' } } +{"return": {"human-readable-text": "read 65536/65536 bytes at offset 0n64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)n"}} +{ 'execute': 'x-qemu-io', + 'arguments': { 'device': 'disk', 'command': 'write -P 0x66 1M 64k' } } +{"return": {"human-readable-text": "wrote 65536/65536 bytes at offset 1048576n64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)n"}} === Shut down and check image === -(qemu) quit -(qemu) -(qemu) quit +{ 'execute': 'quit' } +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} +{"return": {}} +{ 'execute': 'quit' } +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} +{"return": {}} No errors were found on the image. *** done -- 2.56.0.rc0.29.g47ce80527c56
