This adds support for testing the LUKS driver with the block I/O test framework. cd tests/qemu-io-tests ./check -luks A handful of test cases are modified to work with luks - 004 - whitelist luks format - 012 - use TEST_IMG_FILE instead of TEST_IMG for file ops - 048 - use TEST_IMG_FILE instead of TEST_IMG for file ops. don't assume extended image contents is all zeros, explicitly initialize with zeros Make file size smaller to avoid having to decrypt 1 GB of data. - 052 - don't assume initial image contents is all zeros, explicitly initialize with zeros - 100 - don't assume initial image contents is all zeros, explicitly initialize with zeros With this patch applied, the results are as follows: Passed: 001 002 003 004 005 008 009 010 011 012 021 032 043 047 048 049 052 087 100 134 143 Failed: 033 120 140 145 Skipped: 007 013 014 015 017 018 019 020 022 023 024 025 026 027 028 029 030 031 034 035 036 037 038 039 040 041 042 043 044 045 046 047 049 050 051 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 101 102 103 104 105 107 108 109 110 111 112 113 114 115 116 117 118 119 121 122 123 124 128 129 130 131 132 133 134 135 136 137 138 139 141 142 144 146 148 150 152 The reasons for the failed tests are: - 033 - needs adapting to use image opts syntax with blkdebug and test image in order to correctly set align property - 120 - needs adapting to use correct -drive syntax for luks - 140 - needs adapting to use correct -drive syntax for luks - 145 - needs adapting to use correct -drive syntax for luks The vast majority of skipped tests are exercising code that is qcow2 specific, though a couple could probably be usefully enabled for luks too. Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Message-id: 1462896689-18450-4-git-send-email-berrange@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
104 lines
2.3 KiB
Bash
Executable file
104 lines
2.3 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# Make sure we can't read and write outside of the image size.
|
|
#
|
|
# Copyright (C) 2009 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=hch@lst.de
|
|
|
|
seq=`basename $0`
|
|
echo "QA output created by $seq"
|
|
|
|
here=`pwd`
|
|
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 raw qcow qcow2 qed vdi vmdk vhdx luks
|
|
_supported_proto generic
|
|
_supported_os Linux
|
|
|
|
|
|
size=128M
|
|
pre_offset=127M
|
|
past_offset=140M
|
|
|
|
_make_test_img $size
|
|
|
|
echo
|
|
echo "write before image boundary"
|
|
$QEMU_IO -c "write $pre_offset 1M" "$TEST_IMG" | _filter_qemu_io
|
|
|
|
echo
|
|
echo "write into image boundary"
|
|
$QEMU_IO -c "write $pre_offset 4M" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "write at image boundary"
|
|
$QEMU_IO -c "write $size 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "write past image boundary"
|
|
$QEMU_IO -c "write $past_offset 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "pwrite past image boundary"
|
|
$QEMU_IO -c "write -p $past_offset 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "writev past image boundary"
|
|
$QEMU_IO -c "writev $past_offset 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "read before image boundary"
|
|
$QEMU_IO -c "read $pre_offset 1M" "$TEST_IMG" | _filter_qemu_io
|
|
|
|
echo
|
|
echo "read into image boundary"
|
|
$QEMU_IO -c "read $pre_offset 4M" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "read at image boundary"
|
|
$QEMU_IO -c "read $size 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "read past image boundary"
|
|
$QEMU_IO -c "read $past_offset 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "pread past image boundary"
|
|
$QEMU_IO -c "read -p $past_offset 4096" "$TEST_IMG"
|
|
|
|
echo
|
|
echo "readv past image boundary"
|
|
$QEMU_IO -c "readv $past_offset 4096" "$TEST_IMG"
|
|
|
|
|
|
# success, all done
|
|
echo "*** done"
|
|
rm -f $seq.full
|
|
status=0
|