From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>,
qemu-block@nongnu.org, Max Reitz <mreitz@redhat.com>,
Cleber Rosa <crosa@redhat.com>, John Snow <jsnow@redhat.com>
Subject: [PATCH v4 1/3] qmp.py: change event_wait to use a dict
Date: Wed, 13 May 2020 22:25:34 -0400 [thread overview]
Message-ID: <20200514022536.2568-2-jsnow@redhat.com> (raw)
In-Reply-To: <20200514022536.2568-1-jsnow@redhat.com>
It's easier to work with than a list of tuples, because we can check the
keys for membership.
Signed-off-by: John Snow <jsnow@redhat.com>
---
python/qemu/machine.py | 10 +++++-----
tests/qemu-iotests/040 | 12 ++++++------
tests/qemu-iotests/260 | 5 +++--
tests/qemu-iotests/iotests.py | 16 ++++++++--------
4 files changed, 22 insertions(+), 21 deletions(-)
diff --git a/python/qemu/machine.py b/python/qemu/machine.py
index b9a98e2c86..eaedc25172 100644
--- a/python/qemu/machine.py
+++ b/python/qemu/machine.py
@@ -478,21 +478,21 @@ def event_wait(self, name, timeout=60.0, match=None):
timeout: QEMUMonitorProtocol.pull_event timeout parameter.
match: Optional match criteria. See event_match for details.
"""
- return self.events_wait([(name, match)], timeout)
+ return self.events_wait({name: match}, timeout)
def events_wait(self, events, timeout=60.0):
"""
events_wait waits for and returns a named event from QMP with a timeout.
- events: a sequence of (name, match_criteria) tuples.
+ events: a mapping containing {name: match_criteria}.
The match criteria are optional and may be None.
See event_match for details.
timeout: QEMUMonitorProtocol.pull_event timeout parameter.
"""
def _match(event):
- for name, match in events:
- if event['event'] == name and self.event_match(event, match):
- return True
+ name = event['event']
+ if name in events:
+ return self.event_match(event, events[name])
return False
# Search cached events
diff --git a/tests/qemu-iotests/040 b/tests/qemu-iotests/040
index 32c82b4ec6..90b59081ff 100755
--- a/tests/qemu-iotests/040
+++ b/tests/qemu-iotests/040
@@ -485,12 +485,12 @@ class TestErrorHandling(iotests.QMPTestCase):
def run_job(self, expected_events, error_pauses_job=False):
match_device = {'data': {'device': 'job0'}}
- events = [
- ('BLOCK_JOB_COMPLETED', match_device),
- ('BLOCK_JOB_CANCELLED', match_device),
- ('BLOCK_JOB_ERROR', match_device),
- ('BLOCK_JOB_READY', match_device),
- ]
+ events = {
+ 'BLOCK_JOB_COMPLETED': match_device,
+ 'BLOCK_JOB_CANCELLED': match_device,
+ 'BLOCK_JOB_ERROR': match_device,
+ 'BLOCK_JOB_READY': match_device,
+ }
completed = False
log = []
diff --git a/tests/qemu-iotests/260 b/tests/qemu-iotests/260
index 804a7addb9..729f031122 100755
--- a/tests/qemu-iotests/260
+++ b/tests/qemu-iotests/260
@@ -67,8 +67,9 @@ def test(persistent, restart):
vm.qmp_log('block-commit', device='drive0', top=top,
filters=[iotests.filter_qmp_testfiles])
- ev = vm.events_wait((('BLOCK_JOB_READY', None),
- ('BLOCK_JOB_COMPLETED', None)))
+ ev = vm.events_wait({
+ 'BLOCK_JOB_READY': None,
+ 'BLOCK_JOB_COMPLETED': None })
log(filter_qmp_event(ev))
if (ev['event'] == 'BLOCK_JOB_COMPLETED'):
vm.shutdown()
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 6c0e781af7..aada94f4f9 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -635,14 +635,14 @@ def run_job(self, job, auto_finalize=True, auto_dismiss=False,
"""
match_device = {'data': {'device': job}}
match_id = {'data': {'id': job}}
- events = [
- ('BLOCK_JOB_COMPLETED', match_device),
- ('BLOCK_JOB_CANCELLED', match_device),
- ('BLOCK_JOB_ERROR', match_device),
- ('BLOCK_JOB_READY', match_device),
- ('BLOCK_JOB_PENDING', match_id),
- ('JOB_STATUS_CHANGE', match_id)
- ]
+ events = {
+ 'BLOCK_JOB_COMPLETED': match_device,
+ 'BLOCK_JOB_CANCELLED': match_device,
+ 'BLOCK_JOB_ERROR': match_device,
+ 'BLOCK_JOB_READY': match_device,
+ 'BLOCK_JOB_PENDING': match_id,
+ 'JOB_STATUS_CHANGE': match_id,
+ }
error = None
while True:
ev = filter_qmp_event(self.events_wait(events, timeout=wait))
--
2.21.1
next prev parent reply other threads:[~2020-05-14 2:27 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-14 2:25 [PATCH v4 0/3] iotests: add JobRunner framework John Snow
2020-05-14 2:25 ` John Snow [this message]
2020-05-14 14:47 ` [PATCH v4 1/3] qmp.py: change event_wait to use a dict Kevin Wolf
2020-05-14 15:07 ` John Snow
2020-05-14 15:59 ` Kevin Wolf
2020-05-14 19:31 ` John Snow
2020-06-16 21:41 ` Eric Blake
2020-06-17 2:49 ` John Snow
2020-05-14 2:25 ` [PATCH v4 2/3] iotests: add JobRunner class John Snow
2020-05-14 15:40 ` Kevin Wolf
2020-05-14 19:32 ` John Snow
2020-05-14 2:25 ` [PATCH v4 3/3] iotests: modify test 040 to use JobRunner John Snow
2020-05-14 15:53 ` Kevin Wolf
2020-05-14 19:37 ` John Snow
2020-05-15 9:46 ` Kevin Wolf
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=20200514022536.2568-2-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=crosa@redhat.com \
--cc=ehabkost@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/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.