From: Max Reitz <mreitz@redhat.com>
To: Fam Zheng <famz@redhat.com>, qemu-devel@nongnu.org
Cc: kwolf@redhat.com, pbonzini@redhat.com, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH v4 3/4] qemu-iotest: Add pause_drive and resume_drive methods
Date: Fri, 15 Nov 2013 16:31:49 +0100 [thread overview]
Message-ID: <52863E65.9020900@redhat.com> (raw)
In-Reply-To: <1384420220-9244-4-git-send-email-famz@redhat.com>
On 14.11.2013 10:10, Fam Zheng wrote:
> They wrap blkdebug "break" and "remove_break".
>
> Add optional argument "resume" to cancel_and_wait().
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
> tests/qemu-iotests/iotests.py | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index fb10ff4..a483865 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -107,6 +107,18 @@ class VM(object):
> self._num_drives += 1
> return self
>
> + def pause_drive(self, drive, event=""):
> + '''Pause drive r/w operations'''
> + if not event:
> + self.pause_drive(drive, "read_aio")
> + self.pause_drive(drive, "write_aio")
> + self.qmp('human-monitor-command',
> + command_line='qemu-io %s "break %s bp_%s"' % (drive, event, drive))
In the default event="" case (on, say, "drive0"), you'll execute the
three HMP commands 'qemu-io drive0 "break read_aio bp_drive0"', 'qemu-io
drive0 "break write_aio bp_drive0"', 'qemu-io drive0 "break
bp_drive0"', that is, this code will issue three HMP commands with the
last one having an empty string as the event (which is probably not what
you want and will probably result in a silently ignored error from the
break command).
Also, I'd propose using something like None instead of "" for the
default event.
> +
> + def resume_drive(self, drive):
> + self.qmp('human-monitor-command',
> + command_line='qemu-io %s "remove_break bp_%s"' % (drive, drive))
> +
> def hmp_qemu_io(self, drive, cmd):
> '''Write to a given drive using an HMP command'''
> return self.qmp('human-monitor-command',
> @@ -222,11 +234,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.resume_drive(drive)
> +
I'd propose using a bool as the resume value (i.e., resume=False as
default). In the next patch, it looks like the parameter should be the
drive name, although it actually doesn't matter at all what string it
contains (as long as it isn't empty). Thus, a boolean value is probably
more appropriate.
Max
> cancelled = False
> result = None
> while not cancelled:
next prev parent reply other threads:[~2013-11-15 15:32 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-14 9:10 [Qemu-devel] [PATCH v4 0/4] Use blkdebug to make test deterministic Fam Zheng
2013-11-14 9:10 ` [Qemu-devel] [PATCH v4 1/4] qemu-iotests: Drop local version of cancel_and_wait from 040 Fam Zheng
2013-11-14 9:10 ` [Qemu-devel] [PATCH v4 2/4] blkdebug: add "remove_break" command Fam Zheng
2013-11-15 15:18 ` Max Reitz
2013-11-14 9:10 ` [Qemu-devel] [PATCH v4 3/4] qemu-iotest: Add pause_drive and resume_drive methods Fam Zheng
2013-11-15 15:31 ` Max Reitz [this message]
2013-11-14 9:10 ` [Qemu-devel] [PATCH v4 4/4] qemu-iotests: Make test case 030, 040 and 055 deterministic Fam Zheng
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=52863E65.9020900@redhat.com \
--to=mreitz@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.