From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36571) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YldXF-0004Tf-Lr for qemu-devel@nongnu.org; Fri, 24 Apr 2015 09:20:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YldXE-0001uT-D4 for qemu-devel@nongnu.org; Fri, 24 Apr 2015 09:20:49 -0400 Message-ID: <553A42FA.7090503@redhat.com> Date: Fri, 24 Apr 2015 15:19:54 +0200 From: Max Reitz MIME-Version: 1.0 References: <57782138d21e277dddee0fd348a8ba437411bd64.1429875134.git.berto@igalia.com> In-Reply-To: <57782138d21e277dddee0fd348a8ba437411bd64.1429875134.git.berto@igalia.com> Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 08/11] qemu-iotests: add no-op streaming test List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alberto Garcia , qemu-devel@nongnu.org Cc: Kevin Wolf , qemu-block@nongnu.org, Stefan Hajnoczi On 24.04.2015 13:40, Alberto Garcia wrote: > This patch updates test_stream_partial() to test that the block-stream > operation never copies data from the image specified as base. > > Signed-off-by: Alberto Garcia > --- > tests/qemu-iotests/030 | 13 +++++++++++++ > 1 file changed, 13 insertions(+) I think it would be better to add this as an own test case. But I won't oppose adding it as a special case of test_stream_partial either, because strictly speaking, streaming nothing is a special case of streaming partially. > diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030 > index 6e6cb5a..a395a03 100755 > --- a/tests/qemu-iotests/030 > +++ b/tests/qemu-iotests/030 > @@ -94,6 +94,19 @@ class TestSingleDrive(iotests.QMPTestCase): > def test_stream_partial(self): > self.assert_no_active_block_jobs() > > + # This is a no-op: no data should ever be copied from the base image > + result = self.vm.qmp('block-stream', device='drive0', base=mid_img) > + self.assert_qmp(result, 'return', {}) > + > + self.wait_until_completed() > + > + self.assert_no_active_block_jobs() > + > + self.assertNotEqual(qemu_io('-f', iotests.imgfmt, '-c', 'map', mid_img), > + qemu_io('-f', iotests.imgfmt, '-c', 'map', test_img), > + 'image file map matches backing file after a no-op') Well, you haven't really proven anything by doing this, except that the mid_img hasn't been streamed completely into test_img... What you want to prove is that test_img is empty after streaming, right? This can be done by either comparing against an empty image specifically created for this single test, or by comparing the qemu_io map output against "[ 0] 2048/ 2048 sectors not allocated at offset 0 bytes (0)\n", which should be the map output for every empty 1 MB image (regardless of format, and so on). Max > + > + # And this is the operation that actually copies data > result = self.vm.qmp('block-stream', device='drive0', base=backing_img) > self.assert_qmp(result, 'return', {})