From: Ian Main <imain@redhat.com>
To: qemu-devel@nongnu.org
Cc: Ian Main <imain@redhat.com>
Subject: [Qemu-devel] [PATCH V1 2/2] Add tests for sync modes 'TOP' and 'NONE'
Date: Thu, 27 Jun 2013 19:28:45 -0700 [thread overview]
Message-ID: <1372386525-23155-3-git-send-email-imain@redhat.com> (raw)
In-Reply-To: <1372386525-23155-1-git-send-email-imain@redhat.com>
This patch adds tests for sync modes top and none. I'd be interested in
hearing ideas on how to improve these tests if people feel they are
inadequate. Especially SYNC_MODE_NONE would be hard to test.
Signed-off-by: Ian Main <imain@redhat.com>
---
tests/qemu-iotests/055 | 63 +++++++++++++++++++++++++++++++++++++++++++---
tests/qemu-iotests/055.out | 4 +--
tests/qemu-iotests/group | 2 +-
3 files changed, 63 insertions(+), 6 deletions(-)
diff --git a/tests/qemu-iotests/055 b/tests/qemu-iotests/055
index c66f8db..6de81ff 100755
--- a/tests/qemu-iotests/055
+++ b/tests/qemu-iotests/055
@@ -23,8 +23,9 @@
import time
import os
import iotests
-from iotests import qemu_img, qemu_io
+from iotests import qemu_img, qemu_io, create_image
+backing_img = os.path.join(iotests.test_dir, 'backing.img')
test_img = os.path.join(iotests.test_dir, 'test.img')
target_img = os.path.join(iotests.test_dir, 'target.img')
@@ -60,6 +61,20 @@ class TestSingleDrive(iotests.QMPTestCase):
event = self.cancel_and_wait()
self.assert_qmp(event, 'data/type', 'backup')
+ def test_cancel_sync_none(self):
+ self.assert_no_active_block_jobs()
+
+ result = self.vm.qmp('drive-backup', device='drive0',
+ sync='none', target=target_img)
+ self.assert_qmp(result, 'return', {})
+ time.sleep(1)
+
+ # This is generally very hard to test, we would have to
+ # have some writing going on in the VM to test and know
+ # what the result should be.
+ event = self.cancel_and_wait()
+ self.assert_qmp(event, 'data/type', 'backup')
+
def test_pause(self):
self.assert_no_active_block_jobs()
@@ -102,6 +117,47 @@ class TestSingleDrive(iotests.QMPTestCase):
target=target_img, sync='full')
self.assert_qmp(result, 'error/class', 'DeviceNotFound')
+class TestSyncModeTop(iotests.QMPTestCase):
+ image_len = 2 * 1024 * 1024 # MB
+
+ def setUp(self):
+ create_image(backing_img, TestSyncModeTop.image_len)
+ qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
+ qemu_io('-c', 'write -P0x5d 0 64k', test_img)
+ qemu_io('-c', 'write -P0xd5 1M 32k', test_img)
+ qemu_io('-c', 'write -P0xdc 32M 124k', test_img)
+ self.vm = iotests.VM().add_drive(test_img)
+ self.vm.launch()
+
+ def tearDown(self):
+ self.vm.shutdown()
+ os.remove(test_img)
+ os.remove(backing_img)
+ try:
+ os.remove(target_img)
+ except OSError:
+ pass
+
+ def test_complete_top(self):
+ self.assert_no_active_block_jobs()
+ result = self.vm.qmp('drive-backup', device='drive0', sync='top',
+ target=target_img)
+ self.assert_qmp(result, 'return', {})
+
+ # Custom completed check as we are not copying all data.
+ completed = False
+ while not completed:
+ for event in self.vm.get_qmp_events(wait=True):
+ if event['event'] == 'BLOCK_JOB_COMPLETED':
+ self.assert_qmp(event, 'data/device', 'drive0')
+ self.assert_qmp_absent(event, 'data/error')
+ completed = True
+
+ self.assert_no_active_block_jobs()
+ self.vm.shutdown()
+ self.assertTrue(iotests.compare_images(test_img, target_img),
+ 'target image does not match source after backup')
+
class TestSetSpeed(iotests.QMPTestCase):
image_len = 80 * 1024 * 1024 # MB
@@ -127,7 +183,8 @@ 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 * 1024)
self.assert_qmp(result, 'return', {})
# Ensure the speed we set was accepted
@@ -285,4 +342,4 @@ class TestSingleTransaction(iotests.QMPTestCase):
self.assert_no_active_block_jobs()
if __name__ == '__main__':
- iotests.main(supported_fmts=['raw', 'qcow2'])
+ iotests.main(supported_fmts=['qcow2', 'qed'])
diff --git a/tests/qemu-iotests/055.out b/tests/qemu-iotests/055.out
index fa16b5c..96961ed 100644
--- a/tests/qemu-iotests/055.out
+++ b/tests/qemu-iotests/055.out
@@ -1,5 +1,5 @@
-.............
+...............
----------------------------------------------------------------------
-Ran 13 tests
+Ran 15 tests
OK
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index fdc6ed1..d3c3f61 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -61,4 +61,4 @@
052 rw auto backing
053 rw auto
054 rw auto
-055 rw auto
+055 rw auto backing
--
1.8.1.4
next prev parent reply other threads:[~2013-06-28 2:29 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-28 2:28 [Qemu-devel] [PATCH V1 0/2] Implement sync modes for drive-backup Ian Main
2013-06-28 2:28 ` [Qemu-devel] [PATCH V1 1/2] " Ian Main
2013-07-01 12:16 ` Paolo Bonzini
2013-07-03 18:14 ` Ian Main
2013-07-04 7:45 ` Paolo Bonzini
2013-07-08 9:21 ` Fam Zheng
2013-07-15 10:50 ` Paolo Bonzini
2013-07-15 17:49 ` Ian Main
2013-07-15 20:47 ` Paolo Bonzini
2013-07-16 18:17 ` Ian Main
2013-06-28 2:28 ` Ian Main [this message]
2013-07-04 13:20 ` [Qemu-devel] [PATCH V1 2/2] Add tests for sync modes 'TOP' and 'NONE' Stefan Hajnoczi
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=1372386525-23155-3-git-send-email-imain@redhat.com \
--to=imain@redhat.com \
--cc=qemu-devel@nongnu.org \
/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 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.