diff mbox

[RFC,v4,10/13] iotests: add event_wait to VM class

Message ID 1425057891-29848-11-git-send-email-vsementsov@parallels.com
State New
Headers show

Commit Message

Vladimir Sementsov-Ogievskiy Feb. 27, 2015, 5:24 p.m. UTC
Signed-off-by: John Snow <jsnow@redhat.com>
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@parallels.com>
---
 tests/qemu-iotests/iotests.py | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

John Snow May 7, 2015, 7:45 p.m. UTC | #1
On 02/27/2015 12:24 PM, Vladimir Sementsov-Ogievskiy wrote:
> Signed-off-by: John Snow <jsnow@redhat.com>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@parallels.com>
> ---
>  tests/qemu-iotests/iotests.py | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index 75640b2..294b158 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -203,6 +203,13 @@ class VM(object):
>          self._qmp.clear_events()
>          return events
>  
> +    def event_wait(self, name='BLOCK_JOB_COMPLETED', maxwait=10):
> +        for _ in range(maxwait):
> +            for event in self.get_qmp_events(wait=True):
> +                if event['event'] == name:
> +                    return event
> +            return None
> +
>  index_re = re.compile(r'([^\[]+)\[([^\]]+)\]')
>  
>  class QMPTestCase(unittest.TestCase):
> 

For v5, I have already included this upstream and expanded it slightly
to include a proper timeout mechanism as well as a new "match" parameter
that accepts a dict that can be used as a "filter" to only select events
for which 'match' is a recursive subset.

This patch can likely be dropped again.
diff mbox

Patch

diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 75640b2..294b158 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -203,6 +203,13 @@  class VM(object):
         self._qmp.clear_events()
         return events
 
+    def event_wait(self, name='BLOCK_JOB_COMPLETED', maxwait=10):
+        for _ in range(maxwait):
+            for event in self.get_qmp_events(wait=True):
+                if event['event'] == name:
+                    return event
+            return None
+
 index_re = re.compile(r'([^\[]+)\[([^\]]+)\]')
 
 class QMPTestCase(unittest.TestCase):