qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test dete


From: Fam Zheng
Subject: Re: [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic
Date: Thu, 07 Nov 2013 18:51:53 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0

On 11/06/2013 08:10 PM, Paolo Bonzini wrote:
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 <address@hidden>
---
  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?

Yes, of course.

Fam



reply via email to

[Prev in Thread] Current Thread [Next in Thread]