From a8d8a1a06c8ebf630f39bb7263bc711b8297d367 Mon Sep 17 00:00:00 2001 From: Fam Zheng Date: Wed, 30 Jul 2014 14:39:09 +0800 Subject: [PATCH] qemu-iotests: Add data pattern in version3 VMDK sample image in 059 It's possible that we diverge from the specification with our implementation. Having a reference image in the test cases may detect such problems when we introduce a bug that can read what it creates, but can't handle a real VMDK. Signed-off-by: Fam Zheng Signed-off-by: Stefan Hajnoczi --- tests/qemu-iotests/059 | 4 + tests/qemu-iotests/059.out | 202 +++++++++++++++++- .../sample_images/iotest-version3.vmdk.bz2 | Bin 414 -> 4764 bytes 3 files changed, 205 insertions(+), 1 deletion(-) diff --git a/tests/qemu-iotests/059 b/tests/qemu-iotests/059 index 26a2fd3e0e..3c053c29b4 100755 --- a/tests/qemu-iotests/059 +++ b/tests/qemu-iotests/059 @@ -114,6 +114,10 @@ echo echo "=== Testing version 3 ===" _use_sample_img iotest-version3.vmdk.bz2 _img_info +for i in {0..99}; do + $QEMU_IO -r -c "read -P $(( i % 10 + 0x30 )) $(( i * 64 * 1024 * 10 + i * 512 )) 512" $TEST_IMG \ + | _filter_qemu_io +done echo echo "=== Testing 4TB monolithicFlat creation and IO ===" diff --git a/tests/qemu-iotests/059.out b/tests/qemu-iotests/059.out index eba0dedda0..0dadba658f 100644 --- a/tests/qemu-iotests/059.out +++ b/tests/qemu-iotests/059.out @@ -2056,8 +2056,208 @@ wrote 512/512 bytes at offset 10240 === Testing version 3 === image: TEST_DIR/iotest-version3.IMGFMT file format: IMGFMT -virtual size: 1.0G (1073741824 bytes) +virtual size: 16G (17179869184 bytes) cluster_size: 65536 +read 512/512 bytes at offset 0 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 655872 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 1311744 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 1967616 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 2623488 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 3279360 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 3935232 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 4591104 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 5246976 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 5902848 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 6558720 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 7214592 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 7870464 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 8526336 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 9182208 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 9838080 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 10493952 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 11149824 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 11805696 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 12461568 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 13117440 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 13773312 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 14429184 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 15085056 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 15740928 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 16396800 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 17052672 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 17708544 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 18364416 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 19020288 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 19676160 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 20332032 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 20987904 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 21643776 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 22299648 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 22955520 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 23611392 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 24267264 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 24923136 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 25579008 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 26234880 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 26890752 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 27546624 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 28202496 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 28858368 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 29514240 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 30170112 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 30825984 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 31481856 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 32137728 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 32793600 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 33449472 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 34105344 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 34761216 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 35417088 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 36072960 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 36728832 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 37384704 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 38040576 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 38696448 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 39352320 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 40008192 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 40664064 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 41319936 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 41975808 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 42631680 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 43287552 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 43943424 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 44599296 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 45255168 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 45911040 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 46566912 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 47222784 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 47878656 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 48534528 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 49190400 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 49846272 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 50502144 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 51158016 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 51813888 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 52469760 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 53125632 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 53781504 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 54437376 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 55093248 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 55749120 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 56404992 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 57060864 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 57716736 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 58372608 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 59028480 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 59684352 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 60340224 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 60996096 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 61651968 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 62307840 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 62963712 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 63619584 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 64275456 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +read 512/512 bytes at offset 64931328 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) === Testing 4TB monolithicFlat creation and IO === Formatting 'TEST_DIR/iotest-version3.IMGFMT', fmt=IMGFMT size=4398046511104 diff --git a/tests/qemu-iotests/sample_images/iotest-version3.vmdk.bz2 b/tests/qemu-iotests/sample_images/iotest-version3.vmdk.bz2 index 30abf217e72d38e97b1e34a5db6add15ca3812d9..619329a246cd44f2592c034cd11d9d0afbcc1d38 100644 GIT binary patch literal 4764 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 cFH9QJhE|eb*kDQ}oWup($ZYNuP+onz zC89&oo+5m#SRo3f$tj3j4cj-uY<9AFkA%eEJTaa)*;e;U06X$QBY(3aGcne4@Z5Q` zOld1c2c2n5eaHx1cF@GqGfd88M9D~UB914v;WOL96@WSu-<9};viD>nCB_lZ=L5MA zWAhh{E!lb{@J3L6J+%};gkaKNrNrxivB)qiB85a>b>(iaNAFyd9Z|7XRWs!&h*2TY z2uM_*TOC2Lp=5yL%rudbN4;JP^)svmH_P%A-P+35?p=v$3M>tU*);6x0S=pmRj{{| z7O