All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2] qemu-iotests: prefill some data to test image
@ 2013-10-30  9:42 Fam Zheng
  2013-10-30 11:15 ` Kevin Wolf
  2013-10-31  2:18 ` [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic Fam Zheng
  0 siblings, 2 replies; 11+ messages in thread
From: Fam Zheng @ 2013-10-30  9:42 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, stefanha, mreitz

Case 030 occasionally fails because of block job compltes too fast to be
captured by script, and 'unexpected qmp event' of job completion causes
the test failure.

Simply fill in some data to the test image to make this false alarm less
likely to happen.

(For other benefits to prefill data to test image, see also commit
ab68cdfaa).

Signed-off-by: Fam Zheng <famz@redhat.com>

---
v2: subsequent to "qemu-iotests: fix 030 for faster machines".

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 tests/qemu-iotests/030 | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
index ae56f3b..d0f96ea 100755
--- a/tests/qemu-iotests/030
+++ b/tests/qemu-iotests/030
@@ -388,7 +388,9 @@ class TestStreamStop(iotests.QMPTestCase):
 
     def setUp(self):
         qemu_img('create', backing_img, str(TestStreamStop.image_len))
+        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.launch()
 
@@ -414,7 +416,9 @@ class TestSetSpeed(iotests.QMPTestCase):
 
     def setUp(self):
         qemu_img('create', backing_img, str(TestSetSpeed.image_len))
+        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.launch()
 
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH v2] qemu-iotests: prefill some data to test image
  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-31  2:18 ` [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic Fam Zheng
  1 sibling, 1 reply; 11+ messages in thread
From: Kevin Wolf @ 2013-10-30 11:15 UTC (permalink / raw)
  To: Fam Zheng; +Cc: qemu-devel, stefanha, mreitz

Am 30.10.2013 um 10:42 hat Fam Zheng geschrieben:
> Case 030 occasionally fails because of block job compltes too fast to be
> captured by script, and 'unexpected qmp event' of job completion causes
> the test failure.
> 
> Simply fill in some data to the test image to make this false alarm less
> likely to happen.
> 
> (For other benefits to prefill data to test image, see also commit
> ab68cdfaa).
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> 
> ---
> v2: subsequent to "qemu-iotests: fix 030 for faster machines".
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>

Did you try using blkdebug to make it deterministic instead of just
making failure less likely?

Kevin

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH v2] qemu-iotests: prefill some data to test image
  2013-10-30 11:15 ` Kevin Wolf
@ 2013-10-30 11:31   ` Fam Zheng
  2013-10-30 11:51     ` Kevin Wolf
  0 siblings, 1 reply; 11+ messages in thread
From: Fam Zheng @ 2013-10-30 11:31 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: qemu-devel, stefanha, mreitz

On Wed, 10/30 12:15, Kevin Wolf wrote:
> Am 30.10.2013 um 10:42 hat Fam Zheng geschrieben:
> > Case 030 occasionally fails because of block job compltes too fast to be
> > captured by script, and 'unexpected qmp event' of job completion causes
> > the test failure.
> > 
> > Simply fill in some data to the test image to make this false alarm less
> > likely to happen.
> > 
> > (For other benefits to prefill data to test image, see also commit
> > ab68cdfaa).
> > 
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> > 
> > ---
> > v2: subsequent to "qemu-iotests: fix 030 for faster machines".
> > 
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> 
> Did you try using blkdebug to make it deterministic instead of just
> making failure less likely?

Yes. blkdebug relies on actual IO, but using images with no data doesn't
trigger any IO and just completes. Prefilling is the prerequisite to use that.
This alone already works very well for me, but blkdebug is good to have, too.

Suspending before starting the block job is obviously the way to do, but
resuming before cancel_and_wait is not deterministic, either, in the same way.
We'll need to add cancel_and_resume_and_wait().

Do you like me to respin or use a follow up patch?

Fam

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH v2] qemu-iotests: prefill some data to test image
  2013-10-30 11:31   ` Fam Zheng
@ 2013-10-30 11:51     ` Kevin Wolf
  0 siblings, 0 replies; 11+ messages in thread
From: Kevin Wolf @ 2013-10-30 11:51 UTC (permalink / raw)
  To: Fam Zheng; +Cc: qemu-devel, stefanha, mreitz

Am 30.10.2013 um 12:31 hat Fam Zheng geschrieben:
> On Wed, 10/30 12:15, Kevin Wolf wrote:
> > Am 30.10.2013 um 10:42 hat Fam Zheng geschrieben:
> > > Case 030 occasionally fails because of block job compltes too fast to be
> > > captured by script, and 'unexpected qmp event' of job completion causes
> > > the test failure.
> > > 
> > > Simply fill in some data to the test image to make this false alarm less
> > > likely to happen.
> > > 
> > > (For other benefits to prefill data to test image, see also commit
> > > ab68cdfaa).
> > > 
> > > Signed-off-by: Fam Zheng <famz@redhat.com>
> > > 
> > > ---
> > > v2: subsequent to "qemu-iotests: fix 030 for faster machines".
> > > 
> > > Signed-off-by: Fam Zheng <famz@redhat.com>
> > 
> > Did you try using blkdebug to make it deterministic instead of just
> > making failure less likely?
> 
> Yes. blkdebug relies on actual IO, but using images with no data doesn't
> trigger any IO and just completes. Prefilling is the prerequisite to use that.
> This alone already works very well for me, but blkdebug is good to have, too.

That's actually a good point.

> Suspending before starting the block job is obviously the way to do, but
> resuming before cancel_and_wait is not deterministic, either, in the same way.
> We'll need to add cancel_and_resume_and_wait().
> 
> Do you like me to respin or use a follow up patch?

A follow-up patch works for me.

Kevin

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic
  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-31  2:18 ` Fam Zheng
  2013-11-06 12:03   ` Stefan Hajnoczi
  2013-11-06 12:10   ` Paolo Bonzini
  1 sibling, 2 replies; 11+ messages in thread
From: Fam Zheng @ 2013-10-31  2:18 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, stefanha, mreitz

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:
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic
  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
  1 sibling, 1 reply; 11+ messages in thread
From: Stefan Hajnoczi @ 2013-11-06 12:03 UTC (permalink / raw)
  To: Fam Zheng; +Cc: kwolf, qemu-devel, stefanha, mreitz

On Thu, Oct 31, 2013 at 10:18:08AM +0800, Fam Zheng wrote:
> 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(-)

./check -qcow2 030 hangs with this patch applied.

Can you reproduce it or am I missing something?

Stefan

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic
  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-06 12:10   ` Paolo Bonzini
  2013-11-07 10:51     ` Fam Zheng
  2013-11-07 11:25     ` Fam Zheng
  1 sibling, 2 replies; 11+ messages in thread
From: Paolo Bonzini @ 2013-11-06 12:10 UTC (permalink / raw)
  To: Fam Zheng; +Cc: kwolf, qemu-devel, stefanha, mreitz

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic
  2013-11-06 12:03   ` Stefan Hajnoczi
@ 2013-11-07  7:58     ` Fam Zheng
  0 siblings, 0 replies; 11+ messages in thread
From: Fam Zheng @ 2013-11-07  7:58 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: kwolf, qemu-devel, stefanha, mreitz

On 11/06/2013 08:03 PM, Stefan Hajnoczi wrote:
> On Thu, Oct 31, 2013 at 10:18:08AM +0800, Fam Zheng wrote:
>> 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(-)
>
> ./check -qcow2 030 hangs with this patch applied.
>
> Can you reproduce it or am I missing something?
>

Yes, Occasionally. I'll look into it.

Fam

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic
  2013-11-06 12:10   ` Paolo Bonzini
@ 2013-11-07 10:51     ` Fam Zheng
  2013-11-07 11:25     ` Fam Zheng
  1 sibling, 0 replies; 11+ messages in thread
From: Fam Zheng @ 2013-11-07 10:51 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: kwolf, qemu-devel, stefanha, mreitz

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 <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?

Yes, of course.

Fam

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic
  2013-11-06 12:10   ` Paolo Bonzini
  2013-11-07 10:51     ` Fam Zheng
@ 2013-11-07 11:25     ` Fam Zheng
  2013-11-07 11:33       ` Paolo Bonzini
  1 sibling, 1 reply; 11+ messages in thread
From: Fam Zheng @ 2013-11-07 11:25 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: kwolf, qemu-devel, stefanha, mreitz

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 <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,

Mirror doesn't complete automatically, so we don't need the sequence:

1) Pause IO on device.
2) Start job.
3) Send block job cancel/complete command to wire.
4) Resume IO.

Block stream/commit/backup need because without step 1) the job could 
complete after 2) but before 3), so the block-job-complete may get an 
error return (no job no device).

Is it?

So I'll review commit and backup cases then.

Fam

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH v3] qemu-iotests: use blkdebug to make test deterministic
  2013-11-07 11:25     ` Fam Zheng
@ 2013-11-07 11:33       ` Paolo Bonzini
  0 siblings, 0 replies; 11+ messages in thread
From: Paolo Bonzini @ 2013-11-07 11:33 UTC (permalink / raw)
  To: Fam Zheng; +Cc: kwolf, qemu-devel, stefanha, mreitz

Il 07/11/2013 12:25, Fam Zheng ha scritto:
> Mirror doesn't complete automatically, so we don't need the sequence:
> 
> 1) Pause IO on device.
> 2) Start job.
> 3) Send block job cancel/complete command to wire.
> 4) Resume IO.
> 
> Block stream/commit/backup need because without step 1) the job could
> complete after 2) but before 3), so the block-job-complete may get an
> error return (no job no device).
> 
> Is it?

Yes.

> So I'll review commit and backup cases then.

Yes.

Paolo

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2013-11-07 11:33 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2013-11-07 10:51     ` Fam Zheng
2013-11-07 11:25     ` Fam Zheng
2013-11-07 11:33       ` Paolo Bonzini

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.