qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] qemu-iotests: fix 030 for faster machines


From: Max Reitz
Subject: Re: [Qemu-devel] [PATCH] qemu-iotests: fix 030 for faster machines
Date: Wed, 16 Oct 2013 20:45:13 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.0

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 <address@hidden>
---
  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 via email to

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