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 26a2fd3..3c053c2 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 eba0ded..0dadba6 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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