1*c13de3b3SStefan Hajnoczi#!/usr/bin/env bash 2*c13de3b3SStefan Hajnoczi# 3*c13de3b3SStefan Hajnoczi# qemu-img measure tests for LUKS images 4*c13de3b3SStefan Hajnoczi# 5*c13de3b3SStefan Hajnoczi# Copyright (C) 2020 Red Hat, Inc. 6*c13de3b3SStefan Hajnoczi# 7*c13de3b3SStefan Hajnoczi# This program is free software; you can redistribute it and/or modify 8*c13de3b3SStefan Hajnoczi# it under the terms of the GNU General Public License as published by 9*c13de3b3SStefan Hajnoczi# the Free Software Foundation; either version 2 of the License, or 10*c13de3b3SStefan Hajnoczi# (at your option) any later version. 11*c13de3b3SStefan Hajnoczi# 12*c13de3b3SStefan Hajnoczi# This program is distributed in the hope that it will be useful, 13*c13de3b3SStefan Hajnoczi# but WITHOUT ANY WARRANTY; without even the implied warranty of 14*c13de3b3SStefan Hajnoczi# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*c13de3b3SStefan Hajnoczi# GNU General Public License for more details. 16*c13de3b3SStefan Hajnoczi# 17*c13de3b3SStefan Hajnoczi# You should have received a copy of the GNU General Public License 18*c13de3b3SStefan Hajnoczi# along with this program. If not, see <http://www.gnu.org/licenses/>. 19*c13de3b3SStefan Hajnoczi# 20*c13de3b3SStefan Hajnoczi 21*c13de3b3SStefan Hajnoczi# creator 22*c13de3b3SStefan Hajnocziowner=stefanha@redhat.com 23*c13de3b3SStefan Hajnoczi 24*c13de3b3SStefan Hajnocziseq=`basename $0` 25*c13de3b3SStefan Hajnocziecho "QA output created by $seq" 26*c13de3b3SStefan Hajnoczi 27*c13de3b3SStefan Hajnoczistatus=1 # failure is the default! 28*c13de3b3SStefan Hajnoczi 29*c13de3b3SStefan Hajnoczi_cleanup() 30*c13de3b3SStefan Hajnoczi{ 31*c13de3b3SStefan Hajnoczi _cleanup_test_img 32*c13de3b3SStefan Hajnoczi rm -f "$TEST_IMG.converted" 33*c13de3b3SStefan Hajnoczi} 34*c13de3b3SStefan Hajnoczitrap "_cleanup; exit \$status" 0 1 2 3 15 35*c13de3b3SStefan Hajnoczi 36*c13de3b3SStefan Hajnoczi# get standard environment, filters and checks 37*c13de3b3SStefan Hajnoczi. ./common.rc 38*c13de3b3SStefan Hajnoczi. ./common.filter 39*c13de3b3SStefan Hajnoczi. ./common.pattern 40*c13de3b3SStefan Hajnoczi 41*c13de3b3SStefan Hajnoczi_supported_fmt luks 42*c13de3b3SStefan Hajnoczi_supported_proto file 43*c13de3b3SStefan Hajnoczi_supported_os Linux 44*c13de3b3SStefan Hajnoczi 45*c13de3b3SStefan HajnocziSECRET=secret,id=sec0,data=passphrase 46*c13de3b3SStefan Hajnoczi 47*c13de3b3SStefan Hajnocziecho "== measure 1G image file ==" 48*c13de3b3SStefan Hajnocziecho 49*c13de3b3SStefan Hajnoczi 50*c13de3b3SStefan Hajnoczi$QEMU_IMG measure --object "$SECRET" \ 51*c13de3b3SStefan Hajnoczi -O "$IMGFMT" \ 52*c13de3b3SStefan Hajnoczi -o key-secret=sec0,iter-time=10 \ 53*c13de3b3SStefan Hajnoczi --size 1G 54*c13de3b3SStefan Hajnoczi 55*c13de3b3SStefan Hajnocziecho 56*c13de3b3SStefan Hajnocziecho "== create 1G image file (size should be no greater than measured) ==" 57*c13de3b3SStefan Hajnocziecho 58*c13de3b3SStefan Hajnoczi 59*c13de3b3SStefan Hajnoczi_make_test_img 1G 60*c13de3b3SStefan Hajnoczistat -c "image file size in bytes: %s" "$TEST_IMG_FILE" 61*c13de3b3SStefan Hajnoczi 62*c13de3b3SStefan Hajnocziecho 63*c13de3b3SStefan Hajnocziecho "== modified 1G image file (size should be no greater than measured) ==" 64*c13de3b3SStefan Hajnocziecho 65*c13de3b3SStefan Hajnoczi 66*c13de3b3SStefan Hajnoczi$QEMU_IO --object "$SECRET" --image-opts "$TEST_IMG" -c "write -P 0x51 0x10000 0x400" | _filter_qemu_io | _filter_testdir 67*c13de3b3SStefan Hajnoczistat -c "image file size in bytes: %s" "$TEST_IMG_FILE" 68*c13de3b3SStefan Hajnoczi 69*c13de3b3SStefan Hajnocziecho 70*c13de3b3SStefan Hajnocziecho "== measure preallocation=falloc 1G image file ==" 71*c13de3b3SStefan Hajnocziecho 72*c13de3b3SStefan Hajnoczi 73*c13de3b3SStefan Hajnoczi$QEMU_IMG measure --object "$SECRET" \ 74*c13de3b3SStefan Hajnoczi -O "$IMGFMT" \ 75*c13de3b3SStefan Hajnoczi -o key-secret=sec0,iter-time=10,preallocation=falloc \ 76*c13de3b3SStefan Hajnoczi --size 1G 77*c13de3b3SStefan Hajnoczi 78*c13de3b3SStefan Hajnocziecho 79*c13de3b3SStefan Hajnocziecho "== measure with input image file ==" 80*c13de3b3SStefan Hajnocziecho 81*c13de3b3SStefan Hajnoczi 82*c13de3b3SStefan HajnocziIMGFMT=raw IMGKEYSECRET= IMGOPTS= _make_test_img 1G | _filter_imgfmt 83*c13de3b3SStefan HajnocziQEMU_IO_OPTIONS= IMGOPTSSYNTAX= $QEMU_IO -f raw -c "write -P 0x51 0x10000 0x400" "$TEST_IMG_FILE" | _filter_qemu_io | _filter_testdir 84*c13de3b3SStefan Hajnoczi$QEMU_IMG measure --object "$SECRET" \ 85*c13de3b3SStefan Hajnoczi -O "$IMGFMT" \ 86*c13de3b3SStefan Hajnoczi -o key-secret=sec0,iter-time=10 \ 87*c13de3b3SStefan Hajnoczi -f raw \ 88*c13de3b3SStefan Hajnoczi "$TEST_IMG_FILE" 89*c13de3b3SStefan Hajnoczi 90*c13de3b3SStefan Hajnoczi# success, all done 91*c13de3b3SStefan Hajnocziecho "*** done" 92*c13de3b3SStefan Hajnoczirm -f $seq.full 93*c13de3b3SStefan Hajnoczistatus=0 94