qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Fam Zheng <famz@redhat.com>, qemu-devel@nongnu.org
Cc: kwolf@redhat.com, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH] qemu-iotests: fix 030 for faster machines
Date: Wed, 16 Oct 2013 20:45:13 +0200	[thread overview]
Message-ID: <525EDEB9.5030603@redhat.com> (raw)
In-Reply-To: <1381804911-3664-1-git-send-email-famz@redhat.com>

On 2013-10-15 04:41, Fam Zheng wrote:
> If the block job completes too fast, the test can fail. Change the
> numbers so the qmp events are more stably captured by the script.
>
> A sleep is removed for the same reason.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>   tests/qemu-iotests/030 | 11 +++++------
>   1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
> index ae56f3b..188b182 100755
> --- a/tests/qemu-iotests/030
> +++ b/tests/qemu-iotests/030
> @@ -403,14 +403,13 @@ class TestStreamStop(iotests.QMPTestCase):
>           result = self.vm.qmp('block-stream', device='drive0')
>           self.assert_qmp(result, 'return', {})
>   
> -        time.sleep(0.1)

Hm, I'm not sure whether removing the sleep actually removes the 
underlying race condition… It should work in most cases and the 
foreseeable future, though.

>           events = self.vm.get_qmp_events(wait=False)
>           self.assertEqual(events, [], 'unexpected QMP event: %s' % events)
>   
>           self.cancel_and_wait()
>   
>   class TestSetSpeed(iotests.QMPTestCase):
> -    image_len = 80 * 1024 * 1024 # MB
> +    image_len = 512 * 1024 * 1024 # MB
>   
>       def setUp(self):
>           qemu_img('create', backing_img, str(TestSetSpeed.image_len))
> @@ -457,23 +456,23 @@ class TestSetSpeed(iotests.QMPTestCase):
>           self.assert_qmp(result, 'return[0]/device', 'drive0')
>           self.assert_qmp(result, 'return[0]/speed', 0)
>   
> -        result = self.vm.qmp('block-job-set-speed', device='drive0', speed=8 * 1024 * 1024)
> +        result = self.vm.qmp('block-job-set-speed', device='drive0', speed=8 * 1024)

So the limit was already 8 MB/s? Doesn't this mean that the job should 
have taken 10 seconds anyway? Sounds to me like the block job speed is 
basically disregarded anyway.

If I re-add the sleep you removed in this patch, this test fails again 
for me. This further suggests block-job-set-speed to be kind of a no-op 
and the changes concerning the image length and the block job speed not 
really contributing to fixing the test.

So I think removing the sleep is all that would have to be done right 
now. OTOH, this is not really a permanent fix, either (the fundamental 
race condition remains). Furthermore, I guess there is some reason for 
having a sleep there - else it would not exist in the first place (and 
it apparently already caused problems some time ago which were "fixed" 
by replacing the previous "sleep(1)" by "sleep(0.1)").

All in all, if someone can assure me of the uneccessity of the sleep in 
question, I think removing it is all that's needed.

Max

>           self.assert_qmp(result, 'return', {})
>   
>           # Ensure the speed we set was accepted
>           result = self.vm.qmp('query-block-jobs')
>           self.assert_qmp(result, 'return[0]/device', 'drive0')
> -        self.assert_qmp(result, 'return[0]/speed', 8 * 1024 * 1024)
> +        self.assert_qmp(result, 'return[0]/speed', 8 * 1024)
>   
>           self.cancel_and_wait()
>   
>           # Check setting speed in block-stream works
> -        result = self.vm.qmp('block-stream', device='drive0', speed=4 * 1024 * 1024)
> +        result = self.vm.qmp('block-stream', device='drive0', speed=4 * 1024)
>           self.assert_qmp(result, 'return', {})
>   
>           result = self.vm.qmp('query-block-jobs')
>           self.assert_qmp(result, 'return[0]/device', 'drive0')
> -        self.assert_qmp(result, 'return[0]/speed', 4 * 1024 * 1024)
> +        self.assert_qmp(result, 'return[0]/speed', 4 * 1024)
>   
>           self.cancel_and_wait()
>   

  reply	other threads:[~2013-10-16 18:45 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-15  2:41 [Qemu-devel] [PATCH] qemu-iotests: fix 030 for faster machines Fam Zheng
2013-10-16 18:45 ` Max Reitz [this message]
2013-10-17  6:28   ` Fam Zheng
2013-10-18 18:17     ` Max Reitz
2013-10-17 12:38 ` Stefan Hajnoczi
2013-10-30 11:45   ` Fam Zheng

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=525EDEB9.5030603@redhat.com \
    --to=mreitz@redhat.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /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 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).