[v2] iotest 055: refactor and speed up
diff mbox

Message ID 1470748523-13856-1-git-send-email-vsementsov@virtuozzo.com
State New
Headers show

Commit Message

Vladimir Sementsov-Ogievskiy Aug. 9, 2016, 1:15 p.m. UTC
Source disk is created and filled with test data before each test case.
Instead initialize it once for the whole unit.

Test disk filling patterns are merged into one pattern.

Also TestSetSpeed used different image_len for source and target (by
mistake) - this is automatically fixed here.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---

v2: rebase on block-next, as compression test pattern differs, merge patterns.

Need review from Pavel, is new merged disk filling pattern ok for you?

Also, removed from commit message performance measurements. On block-next this test
is too long for other reasons, so for qcow speed is not such significant: for qcow2
I have 7min:33s -> 6min:45s.


 tests/qemu-iotests/055 | 52 +++++++++++++++++---------------------------------
 1 file changed, 18 insertions(+), 34 deletions(-)

Comments

Pavel Butsykin Aug. 16, 2016, 11:44 a.m. UTC | #1
On 09.08.2016 16:15, Vladimir Sementsov-Ogievskiy wrote:
> Source disk is created and filled with test data before each test case.
> Instead initialize it once for the whole unit.
>
> Test disk filling patterns are merged into one pattern.
>
> Also TestSetSpeed used different image_len for source and target (by
> mistake) - this is automatically fixed here.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
>
> v2: rebase on block-next, as compression test pattern differs, merge patterns.
>
> Need review from Pavel, is new merged disk filling pattern ok for you?
>
> Also, removed from commit message performance measurements. On block-next this test
> is too long for other reasons, so for qcow speed is not such significant: for qcow2
> I have 7min:33s -> 6min:45s.
>
>
>   tests/qemu-iotests/055 | 52 +++++++++++++++++---------------------------------
>   1 file changed, 18 insertions(+), 34 deletions(-)
>

Reviewed-by: Pavel Butsykin <pbutsykin@virtuozzo.com>

But unfortunately, here the main slowing factor is vmdk compression.
Max Reitz Aug. 29, 2016, 12:53 p.m. UTC | #2
On 09.08.2016 15:15, Vladimir Sementsov-Ogievskiy wrote:
> Source disk is created and filled with test data before each test case.
> Instead initialize it once for the whole unit.
> 
> Test disk filling patterns are merged into one pattern.
> 
> Also TestSetSpeed used different image_len for source and target (by
> mistake) - this is automatically fixed here.
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
> 
> v2: rebase on block-next, as compression test pattern differs, merge patterns.
> 
> Need review from Pavel, is new merged disk filling pattern ok for you?
> 
> Also, removed from commit message performance measurements. On block-next this test
> is too long for other reasons, so for qcow speed is not such significant: for qcow2
> I have 7min:33s -> 6min:45s.
> 
> 
>  tests/qemu-iotests/055 | 52 +++++++++++++++++---------------------------------
>  1 file changed, 18 insertions(+), 34 deletions(-)

Thanks, Vladimir, I've applied the patch to my block-next branch:

https://github.com/XanClic/qemu/commits/block-next

Max

Patch
diff mbox

diff --git a/tests/qemu-iotests/055 b/tests/qemu-iotests/055
index ff4535e..1d3fd04 100755
--- a/tests/qemu-iotests/055
+++ b/tests/qemu-iotests/055
@@ -29,17 +29,24 @@  test_img = os.path.join(iotests.test_dir, 'test.img')
 target_img = os.path.join(iotests.test_dir, 'target.img')
 blockdev_target_img = os.path.join(iotests.test_dir, 'blockdev-target.img')
 
-class TestSingleDrive(iotests.QMPTestCase):
-    image_len = 64 * 1024 * 1024 # MB
+image_len = 64 * 1024 * 1024 # MB
+
+def setUpModule():
+    qemu_img('create', '-f', iotests.imgfmt, test_img, str(image_len))
+    qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x11 0 64k', test_img)
+    qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x00 64k 128k', test_img)
+    qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x22 162k 32k', test_img)
+    qemu_io('-f', iotests.imgfmt, '-c', 'write -P0xd5 1M 32k', test_img)
+    qemu_io('-f', iotests.imgfmt, '-c', 'write -P0xdc 32M 124k', test_img)
+    qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x33 67043328 64k', test_img)
 
+def tearDownModule():
+    os.remove(test_img)
+
+
+class TestSingleDrive(iotests.QMPTestCase):
     def setUp(self):
-        # Write data to the image so we can compare later
-        qemu_img('create', '-f', iotests.imgfmt, test_img, str(TestSingleDrive.image_len))
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x5d 0 64k', test_img)
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0xd5 1M 32k', test_img)
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0xdc 32M 124k', test_img)
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0xdc 67043328 64k', test_img)
-        qemu_img('create', '-f', iotests.imgfmt, blockdev_target_img, str(TestSingleDrive.image_len))
+        qemu_img('create', '-f', iotests.imgfmt, blockdev_target_img, str(image_len))
 
         self.vm = iotests.VM().add_drive(test_img).add_drive(blockdev_target_img)
         if iotests.qemu_default_machine == 'pc':
@@ -48,7 +55,6 @@  class TestSingleDrive(iotests.QMPTestCase):
 
     def tearDown(self):
         self.vm.shutdown()
-        os.remove(test_img)
         os.remove(blockdev_target_img)
         try:
             os.remove(target_img)
@@ -155,19 +161,14 @@  class TestSingleDrive(iotests.QMPTestCase):
         self.assert_qmp(result, 'error/class', 'GenericError')
 
 class TestSetSpeed(iotests.QMPTestCase):
-    image_len = 80 * 1024 * 1024 # MB
-
     def setUp(self):
-        qemu_img('create', '-f', iotests.imgfmt, test_img, str(TestSetSpeed.image_len))
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P1 0 512', test_img)
-        qemu_img('create', '-f', iotests.imgfmt, blockdev_target_img, str(TestSingleDrive.image_len))
+        qemu_img('create', '-f', iotests.imgfmt, blockdev_target_img, str(image_len))
 
         self.vm = iotests.VM().add_drive(test_img).add_drive(blockdev_target_img)
         self.vm.launch()
 
     def tearDown(self):
         self.vm.shutdown()
-        os.remove(test_img)
         os.remove(blockdev_target_img)
         try:
             os.remove(target_img)
@@ -243,15 +244,8 @@  class TestSetSpeed(iotests.QMPTestCase):
         self.do_test_set_speed_invalid('blockdev-backup',  'drive1')
 
 class TestSingleTransaction(iotests.QMPTestCase):
-    image_len = 64 * 1024 * 1024 # MB
-
     def setUp(self):
-        qemu_img('create', '-f', iotests.imgfmt, test_img, str(TestSingleTransaction.image_len))
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x5d 0 64k', test_img)
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0xd5 1M 32k', test_img)
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0xdc 32M 124k', test_img)
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0xdc 67043328 64k', test_img)
-        qemu_img('create', '-f', iotests.imgfmt, blockdev_target_img, str(TestSingleDrive.image_len))
+        qemu_img('create', '-f', iotests.imgfmt, blockdev_target_img, str(image_len))
 
         self.vm = iotests.VM().add_drive(test_img).add_drive(blockdev_target_img)
         if iotests.qemu_default_machine == 'pc':
@@ -260,7 +254,6 @@  class TestSingleTransaction(iotests.QMPTestCase):
 
     def tearDown(self):
         self.vm.shutdown()
-        os.remove(test_img)
         os.remove(blockdev_target_img)
         try:
             os.remove(target_img)
@@ -454,17 +447,8 @@  class TestDriveCompression(iotests.QMPTestCase):
     fmt_supports_compression = [{'type': 'qcow2', 'args': ()},
                                 {'type': 'vmdk', 'args': ('-o', 'subformat=streamOptimized')}]
 
-    def setUp(self):
-        # Write data to the image so we can compare later
-        qemu_img('create', '-f', iotests.imgfmt, test_img, str(TestDriveCompression.image_len))
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x11 0 64k', test_img)
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x00 64k 128k', test_img)
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x22 162k 32k', test_img)
-        qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x33 67043328 64k', test_img)
-
     def tearDown(self):
         self.vm.shutdown()
-        os.remove(test_img)
         os.remove(blockdev_target_img)
         try:
             os.remove(target_img)