From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55108) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UsOR9-0001Ny-Bw for qemu-devel@nongnu.org; Thu, 27 Jun 2013 22:29:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UsOR5-0007IF-KR for qemu-devel@nongnu.org; Thu, 27 Jun 2013 22:29:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:25926) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UsOR5-0007IA-Cj for qemu-devel@nongnu.org; Thu, 27 Jun 2013 22:29:19 -0400 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r5S2TIaj022704 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 27 Jun 2013 22:29:18 -0400 From: Ian Main Date: Thu, 27 Jun 2013 19:28:45 -0700 Message-Id: <1372386525-23155-3-git-send-email-imain@redhat.com> In-Reply-To: <1372386525-23155-1-git-send-email-imain@redhat.com> References: <1372386525-23155-1-git-send-email-imain@redhat.com> Subject: [Qemu-devel] [PATCH V1 2/2] Add tests for sync modes 'TOP' and 'NONE' List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Ian Main 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 --- 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