* [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-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-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: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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).