This test doesn't use iotests.VM presumably because it sets up qtest,
conflicting with -machine none.

Signed-off-by: Marc-André Lureau <[email protected]>
---
 tests/qemu-iotests/tests/copy-before-write | 130 +++++++++++++----------------
 1 file changed, 59 insertions(+), 71 deletions(-)

diff --git a/tests/qemu-iotests/tests/copy-before-write 
b/tests/qemu-iotests/tests/copy-before-write
index 5531ad8a4c0d..59ab96738d6d 100755
--- a/tests/qemu-iotests/tests/copy-before-write
+++ b/tests/qemu-iotests/tests/copy-before-write
@@ -32,6 +32,9 @@ size = '1M'
 
 
 class TestCbwError(iotests.QMPTestCase):
+    def qemu_io_result(self, res):
+        return iotests.filter_qemu_io(res['return']['human-readable-text'])
+
     def tearDown(self):
         self.vm.shutdown()
         os.remove(temp_img)
@@ -85,19 +88,14 @@ class TestCbwError(iotests.QMPTestCase):
             'file': 'cbw'
         })
 
-        result = self.vm.qmp('human-monitor-command',
-                             command_line='qemu-io cbw "write 0 1M"')
-        write_res = result['return']
-
-        result = self.vm.qmp('human-monitor-command',
-                             command_line='qemu-io access "read 0 1M"')
-        read_res = result['return']
+        write_res = self.vm.qmp('x-qemu-io', device='cbw',
+                                command='write 0 1M')
+        read_res = self.vm.qmp('x-qemu-io', device='access',
+                               command='read 0 1M')
 
         self.vm.shutdown()
-        log = self.vm.get_log()
-        log = iotests.filter_qtest(log)
-        log = iotests.filter_qemu_io(log)
-        return log, write_res, read_res
+        self.assertEqual(self.vm.get_log(), '')
+        return write_res, read_res
 
     def do_cbw_error_via_blockdev_backup(self, on_cbw_error=None):
         self.vm.cmd('blockdev-add', {
@@ -148,43 +146,37 @@ class TestCbwError(iotests.QMPTestCase):
             'file': 'cbw'
         })
 
-        result = self.vm.qmp('human-monitor-command',
-                             command_line='qemu-io cbw "write 0 1M"')
-        write_res = result['return']
-
-        result = self.vm.qmp('human-monitor-command',
-                             command_line='qemu-io access "read 0 1M"')
-        read_res = result['return']
+        write_res = self.vm.qmp('x-qemu-io', device='cbw',
+                                command='write 0 1M')
+        read_res = self.vm.qmp('x-qemu-io', device='access',
+                               command='read 0 1M')
 
         self.vm.shutdown()
-        log = self.vm.get_log()
-        log = iotests.filter_qemu_io(log)
-        return log, write_res, read_res
+        self.assertEqual(self.vm.get_log(), '')
+        return write_res, read_res
 
     def test_break_snapshot_on_cbw_error(self):
         """break-snapshot behavior:
         Guest write succeed, but further snapshot-read fails, as snapshot is
         broken.
         """
-        log, write_res, read_res = self.do_cbw_error('break-snapshot')
-        self.assertEqual(write_res, '')
-        self.assertIn('read failed: Permission denied', read_res)
-
-        self.assertEqual(log, """\
+        write_res, read_res = self.do_cbw_error('break-snapshot')
+        self.assertEqual(self.qemu_io_result(write_res), """\
 wrote 1048576/1048576 bytes at offset 0
 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 """)
+        self.assertIn('read failed: Permission denied',
+                      read_res['error']['desc'])
 
     def test_break_guest_write_on_cbw_error(self):
         """break-guest-write behavior:
         Guest write fails, but snapshot-access continues working and further
         snapshot-read succeeds.
         """
-        log, write_res, read_res = self.do_cbw_error('break-guest-write')
-        self.assertIn('write failed: Input/output error', write_res)
-        self.assertEqual(read_res, '')
-
-        self.assertEqual(log, """\
+        write_res, read_res = self.do_cbw_error('break-guest-write')
+        self.assertIn('write failed: Input/output error',
+                      write_res['error']['desc'])
+        self.assertEqual(self.qemu_io_result(read_res), """\
 read 1048576/1048576 bytes at offset 0
 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 """)
@@ -193,24 +185,24 @@ read 1048576/1048576 bytes at offset 0
         """Ensure CBW filter accepts break-snapshot policy
         specified in blockdev-backup QMP command.
         """
-        log, write_res, read_res = \
+        write_res, read_res = \
             self.do_cbw_error_via_blockdev_backup('break-snapshot')
-        self.assertEqual(write_res, '')
-        self.assertIn('read failed: Permission denied', read_res)
-        self.assertEqual(log, """\
+        self.assertEqual(self.qemu_io_result(write_res), """\
 wrote 1048576/1048576 bytes at offset 0
 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 """)
+        self.assertIn('read failed: Permission denied',
+                      read_res['error']['desc'])
 
     def test_break_guest_write_policy_forwarding(self):
         """Ensure CBW filter accepts break-guest-write policy
         specified in blockdev-backup QMP command.
         """
-        log, write_res, read_res = \
+        write_res, read_res = \
             self.do_cbw_error_via_blockdev_backup('break-guest-write')
-        self.assertIn('write failed: Input/output error', write_res)
-        self.assertEqual(read_res, '')
-        self.assertEqual(log, """\
+        self.assertIn('write failed: Input/output error',
+                      write_res['error']['desc'])
+        self.assertEqual(self.qemu_io_result(read_res), """\
 read 1048576/1048576 bytes at offset 0
 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 """)
@@ -219,11 +211,11 @@ read 1048576/1048576 bytes at offset 0
         """Ensure break-guest-write policy is used by default when
         on-cbw-error is not explicitly specified.
         """
-        log, write_res, read_res = \
+        write_res, read_res = \
             self.do_cbw_error_via_blockdev_backup()
-        self.assertIn('write failed: Input/output error', write_res)
-        self.assertEqual(read_res, '')
-        self.assertEqual(log, """\
+        self.assertIn('write failed: Input/output error',
+                      write_res['error']['desc'])
+        self.assertEqual(self.qemu_io_result(read_res), """\
 read 1048576/1048576 bytes at offset 0
 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 """)
@@ -266,60 +258,56 @@ read 1048576/1048576 bytes at offset 0
             'file': 'cbw'
         })
 
-        result = self.vm.qmp('human-monitor-command',
-                             command_line='qemu-io cbw "write 0 512K"')
-        write1_res = result['return']
+        write1_res = self.vm.qmp('x-qemu-io', device='cbw',
+                                 command='write 0 512K')
 
         # We need second write to trigger throttling
-        result = self.vm.qmp('human-monitor-command',
-                             command_line='qemu-io cbw "write 512K 512K"')
-        write2_res = result['return']
-
-        result = self.vm.qmp('human-monitor-command',
-                             command_line='qemu-io access "read 0 1M"')
-        read_res = result['return']
+        write2_res = self.vm.qmp('x-qemu-io', device='cbw',
+                                 command='write 512K 512K')
+        read_res = self.vm.qmp('x-qemu-io', device='access',
+                               command='read 0 1M')
 
         self.vm.shutdown()
         log = self.vm.get_log()
         log = re.sub(r'^\[I \d+\.\d+\] OPENED\n', '', log)
         log = re.sub(r'\[I \+\d+\.\d+\] CLOSED\n?$', '', log)
-        log = iotests.filter_qemu_io(log)
-        return log, write1_res, write2_res, read_res
+        self.assertEqual(log, '')
+        return write1_res, write2_res, read_res
 
     def test_timeout_break_guest(self):
-        log, write1_res, write2_res, read_res = \
+        write1_res, write2_res, read_res = \
             self.do_cbw_timeout('break-guest-write')
-        self.assertEqual(write1_res, '')
+        self.assertEqual(self.qemu_io_result(write1_res), """\
+wrote 524288/524288 bytes at offset 0
+512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+""")
         # macOS and FreeBSD tend to represent ETIMEDOUT as
         # "Operation timed out", when Linux prefer
         # "Connection timed out"
-        write2_res = write2_res.replace('Operation timed out',
-                                        'Connection timed out')
-        self.assertIn('write failed: Connection timed out', write2_res)
-        self.assertEqual(read_res, '')
-        self.assertEqual(log, """\
-wrote 524288/524288 bytes at offset 0
-512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+        write2_err = write2_res['error']['desc'].replace(
+            'Operation timed out', 'Connection timed out')
+        self.assertIn('write failed: Connection timed out', write2_err)
+        self.assertEqual(self.qemu_io_result(read_res), """\
 read 1048576/1048576 bytes at offset 0
 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 """)
 
     def test_timeout_break_snapshot(self):
-        log, write1_res, write2_res, read_res = \
+        write1_res, write2_res, read_res = \
             self.do_cbw_timeout('break-snapshot')
-        self.assertEqual(write1_res, '')
-        self.assertEqual(write2_res, '')
-        self.assertIn('read failed: Permission denied', read_res)
-        self.assertEqual(log, """\
+        self.assertEqual(self.qemu_io_result(write1_res), """\
 wrote 524288/524288 bytes at offset 0
 512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+""")
+        self.assertEqual(self.qemu_io_result(write2_res), """\
 wrote 524288/524288 bytes at offset 524288
 512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 """)
+        self.assertIn('read failed: Permission denied',
+                      read_res['error']['desc'])
 
 
 if __name__ == '__main__':
     iotests.main(supported_fmts=['qcow2'],
                  supported_protocols=['file'],
-                 required_fmts=['copy-before-write'],
-                 require_hmp=True)
+                 required_fmts=['copy-before-write'])

-- 
2.56.0.rc0.29.g47ce80527c56


Reply via email to