qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Fam Zheng <famz@redhat.com>
Cc: kwolf@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com,
	mreitz@redhat.com
Subject: Re: [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic
Date: Wed, 06 Nov 2013 13:10:52 +0100	[thread overview]
Message-ID: <527A31CC.7070806@redhat.com> (raw)
In-Reply-To: <1383185888-8131-1-git-send-email-famz@redhat.com>

Il 31/10/2013 03:18, Fam Zheng ha scritto:
> This patch suspends the test image IO before starting block stream job
> so that it doesn't complete before we could check the status.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  tests/qemu-iotests/030        | 10 ++++++----
>  tests/qemu-iotests/iotests.py |  5 ++++-
>  2 files changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
> index d0f96ea..bc66e6f 100755
> --- a/tests/qemu-iotests/030
> +++ b/tests/qemu-iotests/030
> @@ -391,7 +391,7 @@ class TestStreamStop(iotests.QMPTestCase):
>          qemu_io('-c', 'write -P 0x1 0 32M', backing_img)
>          qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
>          qemu_io('-c', 'write -P 0x1 32M 32M', test_img)
> -        self.vm = iotests.VM().add_drive(test_img)
> +        self.vm = iotests.VM().add_drive("blkdebug::" + test_img)
>          self.vm.launch()
>  
>      def tearDown(self):
> @@ -402,6 +402,7 @@ class TestStreamStop(iotests.QMPTestCase):
>      def test_stream_stop(self):
>          self.assert_no_active_block_jobs()
>  
> +        self.vm.qmp('human-monitor-command', command_line='qemu-io drive0 "break write_aio a"')
>          result = self.vm.qmp('block-stream', device='drive0')
>          self.assert_qmp(result, 'return', {})
>  
> @@ -409,7 +410,7 @@ class TestStreamStop(iotests.QMPTestCase):
>          events = self.vm.get_qmp_events(wait=False)
>          self.assertEqual(events, [], 'unexpected QMP event: %s' % events)
>  
> -        self.cancel_and_wait()
> +        self.cancel_and_wait(resume='a')
>  
>  class TestSetSpeed(iotests.QMPTestCase):
>      image_len = 80 * 1024 * 1024 # MB
> @@ -419,7 +420,7 @@ class TestSetSpeed(iotests.QMPTestCase):
>          qemu_io('-c', 'write -P 0x1 0 32M', backing_img)
>          qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
>          qemu_io('-c', 'write -P 0x1 32M 32M', test_img)
> -        self.vm = iotests.VM().add_drive(test_img)
> +        self.vm = iotests.VM().add_drive('blkdebug::' + test_img)
>          self.vm.launch()
>  
>      def tearDown(self):
> @@ -453,6 +454,7 @@ class TestSetSpeed(iotests.QMPTestCase):
>      def test_set_speed(self):
>          self.assert_no_active_block_jobs()
>  
> +        self.vm.qmp('human-monitor-command', command_line='qemu-io drive0 "break write_aio a"')
>          result = self.vm.qmp('block-stream', device='drive0')
>          self.assert_qmp(result, 'return', {})
>  
> @@ -469,7 +471,7 @@ class TestSetSpeed(iotests.QMPTestCase):
>          self.assert_qmp(result, 'return[0]/device', 'drive0')
>          self.assert_qmp(result, 'return[0]/speed', 8 * 1024 * 1024)
>  
> -        self.cancel_and_wait()
> +        self.cancel_and_wait(resume='a')
>  
>          # Check setting speed in block-stream works
>          result = self.vm.qmp('block-stream', device='drive0', speed=4 * 1024 * 1024)
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index fb10ff4..de45079 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -222,11 +222,14 @@ class QMPTestCase(unittest.TestCase):
>          result = self.vm.qmp('query-block-jobs')
>          self.assert_qmp(result, 'return', [])
>  
> -    def cancel_and_wait(self, drive='drive0', force=False):
> +    def cancel_and_wait(self, drive='drive0', force=False, resume=""):
>          '''Cancel a block job and wait for it to finish, returning the event'''
>          result = self.vm.qmp('block-job-cancel', device=drive, force=force)
>          self.assert_qmp(result, 'return', {})
>  
> +        if resume:
> +            self.vm.qmp('human-monitor-command', command_line='qemu-io %s "resume %s"' % (drive, resume))
> +
>          cancelled = False
>          result = None
>          while not cancelled:
> 

Can you do the same for the mirror test too?

Paolo

  parent reply	other threads:[~2013-11-06 12:11 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-30  9:42 [Qemu-devel] [PATCH v2] qemu-iotests: prefill some data to test image Fam Zheng
2013-10-30 11:15 ` Kevin Wolf
2013-10-30 11:31   ` Fam Zheng
2013-10-30 11:51     ` Kevin Wolf
2013-10-31  2:18 ` [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic Fam Zheng
2013-11-06 12:03   ` Stefan Hajnoczi
2013-11-07  7:58     ` Fam Zheng
2013-11-06 12:10   ` Paolo Bonzini [this message]
2013-11-07 10:51     ` Fam Zheng
2013-11-07 11:25     ` Fam Zheng
2013-11-07 11:33       ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=527A31CC.7070806@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).