Message ID | e0b61d0dd2f4b5bddf10b8589cb60346d9ba4f94.1379648036.git.jcody@redhat.com |
---|---|
State | New |
Headers | show |
jcody@redhat.com writes: > This adds the VHDX format to the qemu-iotests format, and adds > a read test. The test reads from an existing sample image, that > was created with Hyper-V under Windwos Server 2012. > > The image file is a 1GB dynamic image, with 32MB blocks. > > The pattern 0xa5 exists from 0MB-33MB (past a block size boundary) > > The pattern 0x96 exists from 33MB-66MB (past another block boundary, > and leaving a partial blank block) > > From 66MB-1024MB, all reads should return 0. > > Although 1GB dynamic image with 66MB of data, the bzip2'ed image > file size is only 874 bytes. I take it there is additional meta-data in there generated by Windows Server itself? Otherwise I would be tempted to write a tool to generate the image on demand so it could be used to trigger other edge cases when found. Having said that 874 bytes certainly isn't to heavy a burden for the repository ;-) I'm currently pondering what the best way of supporting system images (i.e. kernel+rootfs) would be to make system regression testing easier. Unfortunately those images would be far too large to carry in the repo although there may be some sub-module annex type thing I could try.
Am 20.09.2013 um 11:10 hat Alex Bennée geschrieben: > > jcody@redhat.com writes: > > > This adds the VHDX format to the qemu-iotests format, and adds > > a read test. The test reads from an existing sample image, that > > was created with Hyper-V under Windwos Server 2012. > > > > The image file is a 1GB dynamic image, with 32MB blocks. > > > > The pattern 0xa5 exists from 0MB-33MB (past a block size boundary) > > > > The pattern 0x96 exists from 33MB-66MB (past another block boundary, > > and leaving a partial blank block) > > > > From 66MB-1024MB, all reads should return 0. > > > > Although 1GB dynamic image with 66MB of data, the bzip2'ed image > > file size is only 874 bytes. > > I take it there is additional meta-data in there generated by Windows > Server itself? Otherwise I would be tempted to write a tool to generate > the image on demand so it could be used to trigger other edge cases when > found. > > Having said that 874 bytes certainly isn't to heavy a burden for the > repository ;-) Eventually, qemu-img will be able to create VHDX images, but I think the point is that we compare against real Hyper-V VHDX images to ensure that we're really reading the spec the same way as they do. > I'm currently pondering what the best way of supporting system images > (i.e. kernel+rootfs) would be to make system regression testing easier. > Unfortunately those images would be far too large to carry in the repo > although there may be some sub-module annex type thing I could try. Sounds like you're looking for qemu-tests? http://git.qemu.org/?p=qemu-test.git;a=summary Kevin
kwolf@redhat.com writes: > Am 20.09.2013 um 11:10 hat Alex Bennée geschrieben: >> >> jcody@redhat.com writes: >> <<snip>> >> I'm currently pondering what the best way of supporting system images >> (i.e. kernel+rootfs) would be to make system regression testing easier. >> Unfortunately those images would be far too large to carry in the repo >> although there may be some sub-module annex type thing I could try. > > Sounds like you're looking for qemu-tests? > > http://git.qemu.org/?p=qemu-test.git;a=summary Thanks, Stefan H had already pointed me at that. I'm currently thinking of painless ways to integrate those sort of tests in the main tree to further the regression testing stuff I'm looking at. Anyway I have already diverted enough of topic so I'll save that discussion for another thread ;-)
On Fri, Sep 20, 2013 at 11:18:14AM +0200, Kevin Wolf wrote: > Am 20.09.2013 um 11:10 hat Alex Bennée geschrieben: > > > > jcody@redhat.com writes: > > > > > This adds the VHDX format to the qemu-iotests format, and adds > > > a read test. The test reads from an existing sample image, that > > > was created with Hyper-V under Windwos Server 2012. > > > > > > The image file is a 1GB dynamic image, with 32MB blocks. > > > > > > The pattern 0xa5 exists from 0MB-33MB (past a block size boundary) > > > > > > The pattern 0x96 exists from 33MB-66MB (past another block boundary, > > > and leaving a partial blank block) > > > > > > From 66MB-1024MB, all reads should return 0. > > > > > > Although 1GB dynamic image with 66MB of data, the bzip2'ed image > > > file size is only 874 bytes. > > > > I take it there is additional meta-data in there generated by Windows > > Server itself? Otherwise I would be tempted to write a tool to generate > > the image on demand so it could be used to trigger other edge cases when > > found. > > > > Having said that 874 bytes certainly isn't to heavy a burden for the > > repository ;-) > > Eventually, qemu-img will be able to create VHDX images, but I think the > point is that we compare against real Hyper-V VHDX images to ensure that > we're really reading the spec the same way as they do. > Exactly. If we use qemu-img to generate test images, we aren't really testing QEMU's compatibility with non-native formats. Also, it may be useful to occasionally put native images (qcow2, qed) in the sample_images directory for some major release, so that we can run some image format regression tests on image format code changes. > > I'm currently pondering what the best way of supporting system images > > (i.e. kernel+rootfs) would be to make system regression testing easier. > > Unfortunately those images would be far too large to carry in the repo > > although there may be some sub-module annex type thing I could try. > > Sounds like you're looking for qemu-tests? > > http://git.qemu.org/?p=qemu-test.git;a=summary > There is also autotest: https://github.com/autotest/virt-test/wiki
diff --git a/tests/qemu-iotests/064 b/tests/qemu-iotests/064 new file mode 100755 index 0000000..6a17bdb --- /dev/null +++ b/tests/qemu-iotests/064 @@ -0,0 +1,62 @@ +#!/bin/bash +# +# Test VHDX read/write from a sample image created with Hyper-V +# +# Copyright (C) 2013 Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +# creator +owner=jcody@redhat.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + _cleanup_test_img +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +_supported_fmt vhdx +_supported_proto generic +_supported_os Linux + +_use_sample_img iotest-dynamic-1G.vhdx.bz2 + +echo +echo "=== Verify pattern 0xa5, 0 - 33MB ===" +$QEMU_IO -c "read -pP 0xa5 0 33M" $TEST_IMG | _filter_qemu_io + +echo +echo "=== Verify pattern 0x96, 33M - 66M ===" +$QEMU_IO -c "read -pP 0x96 33M 33M" $TEST_IMG | _filter_qemu_io + +echo +echo "=== Verify pattern 0x00, 66M - 1024M ===" +$QEMU_IO -c "read -pP 0x00 66M 958M" $TEST_IMG | _filter_qemu_io + +# success, all done +echo "*** done" +rm -f $seq.full +status=0 diff --git a/tests/qemu-iotests/064.out b/tests/qemu-iotests/064.out new file mode 100644 index 0000000..b9e8e4a --- /dev/null +++ b/tests/qemu-iotests/064.out @@ -0,0 +1,14 @@ +QA output created by 064 + +=== Verify pattern 0xa5, 0 - 33MB === +read 34603008/34603008 bytes at offset 0 +33 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) + +=== Verify pattern 0x96, 33M - 66M === +read 34603008/34603008 bytes at offset 34603008 +33 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) + +=== Verify pattern 0x00, 66M - 1024M === +read 1004535808/1004535808 bytes at offset 69206016 +958 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +*** done diff --git a/tests/qemu-iotests/common b/tests/qemu-iotests/common index fecaf85..311c9e4 100644 --- a/tests/qemu-iotests/common +++ b/tests/qemu-iotests/common @@ -133,6 +133,7 @@ check options -qed test qed -vdi test vdi -vpc test vpc + -vhdx test vhdx -vmdk test vmdk -rbd test rbd -sheepdog test sheepdog @@ -195,6 +196,11 @@ testlist options xpand=false ;; + -vhdx) + IMGFMT=vhdx + xpand=false + ;; + -rbd) IMGPROTO=rbd xpand=false diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group index 1ad02e5..9e950fd 100644 --- a/tests/qemu-iotests/group +++ b/tests/qemu-iotests/group @@ -69,3 +69,4 @@ 061 rw auto 062 rw auto 063 rw auto +064 rw auto diff --git a/tests/qemu-iotests/sample_images/MANIFEST b/tests/qemu-iotests/sample_images/MANIFEST index 7abf287..6e4a7ef 100644 --- a/tests/qemu-iotests/sample_images/MANIFEST +++ b/tests/qemu-iotests/sample_images/MANIFEST @@ -1,2 +1,7 @@ Image Filename | Description ------------------------------------------------------------------------------ +iotest-dynamic-1G.vhdx.bz2 | 1GB dynamic VHDX image with block size of 32 MB. + | This image file has a pattern of 33MB of 0xa5, + | followed by 33MB of 0x96, followed by zeroes. + | Created with Hyper-V on Windows Server 2012. + |
This adds the VHDX format to the qemu-iotests format, and adds a read test. The test reads from an existing sample image, that was created with Hyper-V under Windwos Server 2012. The image file is a 1GB dynamic image, with 32MB blocks. The pattern 0xa5 exists from 0MB-33MB (past a block size boundary) The pattern 0x96 exists from 33MB-66MB (past another block boundary, and leaving a partial blank block) From 66MB-1024MB, all reads should return 0. Although 1GB dynamic image with 66MB of data, the bzip2'ed image file size is only 874 bytes. Signed-off-by: Jeff Cody <jcody@redhat.com> --- tests/qemu-iotests/064 | 62 +++++++++++++++++++++ tests/qemu-iotests/064.out | 14 +++++ tests/qemu-iotests/common | 6 ++ tests/qemu-iotests/group | 1 + tests/qemu-iotests/sample_images/MANIFEST | 5 ++ .../sample_images/iotest-dynamic-1G.vhdx.bz2 | Bin 0 -> 874 bytes 6 files changed, 88 insertions(+) create mode 100755 tests/qemu-iotests/064 create mode 100644 tests/qemu-iotests/064.out create mode 100644 tests/qemu-iotests/sample_images/iotest-dynamic-1G.vhdx.bz2 diff --git a/tests/qemu-iotests/sample_images/iotest-dynamic-1G.vhdx.bz2 b/tests/qemu-iotests/sample_images/iotest-dynamic-1G.vhdx.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..77d97a0bae2e45b84ad489a77788084cc09331e0 GIT binary patch literal 874 zcmV-w1C{(jT4*^jL0KkKS)@Vdf&hZIfB*mY_ijz2|NMXYGlTE%z2+coecwBIyV?7? zRYF<0^&db2mkJrM&`P9@s2TtO0000000001paz-%27#ae0017K&}e8HN-(1kVrigg z13&{nXwU!#fB~QY0000000001pg_pcpwKcJX_G+7gwSGQGHB2;7>oqbhyZB84Gbd_ zCQULjF*ML*U`z^<ku<01QIpj3N(ZFK)6~-=)Mx+=JwOB0G|{FZpglkU8fXAC(dh%q zHq|us0A%$&Lxl0c7NkVLFGMRq07UW*2)3emj1{>kK$s^jUBKR?z~CteOe$Qc!=`MK zpppgLEo&~>A_R+6h=@Ddl1ZgN7+7*hWL09_s<d&+mMmjjw<LrCx2PjFk~{@nV^|kz z6;cuaQLw8m>{bL}swE6xrU?On8VxK`u45pSB}p6^9?4@FBo_q60jNQ8)7nwfo~p{X z21&Hu-QCr>IEs=a0NK%&p{HE(oeD(TehV85d6fuURBs<`t5K&|m^Maoo0fjdi=f}{ z>E$yWvA4r~wZiNcLm<7lTF>T|a9Q1JFM7G$o)?hwxePeOZq}`A`za=Z)W^WEd#*Qp z#kZ!X0!i<$>Ta+f8L@u+=r$sPWWhg>cfbk7O*y(bhdvqNE8G<%ccZNIDKSnW9b)lr z?+BB(@#_SGMX@o$bqc@{OqyW;7?h|wi9+N-4D|@7-dVn6g4ihCM|pt2A}N5VGk<5? z{FoRKTsV)8P`B0_=}2A^fU(eP{;OfF)7siztdO#@z6*HnA0O+ly16Hl#BjL02H~Lm zU#o1s*F84YWNZGN7x>n4q>?0voA1&{kdPzmvi42q4UHtuzRJ>PzbPk0x?j$@OjIC3 z291dl2@(l)mGJeNMy5-7djC|iYdFpGgRa2BeV-I!Lj_~=H)^bLy>S7`E*Kbz7L6m% z!pI?M^X|&xFCh=b`Ky@r+f7T@9xGSDdF)KJ&1d`VHFb7cxH1v|W<-)Ch@CnRAp<+? z+_Yc$iVDdxn#!(cW8fGi)&T|p2nYZGK>!1RnrIY~H<Tz)=_E*(j#5Pu)m2EUIYNaE zB#I@zVuG?vrm|0*DoOy!8h{0W000C45I_K7m<m%&lp-yPP>8%;$rRy2Ky^V+T-`Z@ A&j0`b literal 0 HcmV?d00001