On Thu, Jun 27, 2013 at 07:28:45PM -0700, Ian Main wrote:
> diff --git a/tests/qemu-iotests/055 b/tests/qemu-iotests/055
> index c66f8db..6de81ff 100755
> --- a/tests/qemu-iotests/055
> +++ b/tests/qemu-iotests/055
> @@ -23,8 +23,9 @@
>  import time
>  import os
>  import iotests
> -from iotests import qemu_img, qemu_io
> +from iotests import qemu_img, qemu_io, create_image
>  
> +backing_img = os.path.join(iotests.test_dir, 'backing.img')
>  test_img = os.path.join(iotests.test_dir, 'test.img')
>  target_img = os.path.join(iotests.test_dir, 'target.img')
>  
> @@ -60,6 +61,20 @@ class TestSingleDrive(iotests.QMPTestCase):
>          event = self.cancel_and_wait()
>          self.assert_qmp(event, 'data/type', 'backup')
>  
> +    def test_cancel_sync_none(self):
> +        self.assert_no_active_block_jobs()
> +
> +        result = self.vm.qmp('drive-backup', device='drive0',
> +                             sync='none', target=target_img)
> +        self.assert_qmp(result, 'return', {})
> +        time.sleep(1)
> +
> +        # This is generally very hard to test, we would have to
> +        # have some writing going on in the VM to test and know
> +        # what the result should be.

You can use the qemu-io HMP command to write to the disk from this test
case.

First take a look at the qemu-io(1) command-line help output.  To fill
the first sector with 0x5e you would do something like this:

  $ qemu-io -c 'write -P0x5e 0 512' test.img

Kevin recently added an HMP command so you can invoke this from the
monitor.  It operates on an open drive, see hmp-commands.hx.

Finally, you need to use the QMP 'human-monitor-command' to invoke HMP
commands from your test case.

Basically you need something like:

  self.vm.qmp('human-monitor-command',
              command-line='drive0 "write -P0x5e 0 512"')

We should probably wrap this in a new method called VM.hmp_qemu_io() in
iotests.py, so that tests can simply do:

  self.vm.hmp_qemu_io('drive0', 'write -P0x5e 0 512')

Anyway, this lets you write to the drive.  This should be good for
testing sync=none.

Reply via email to