xref: /openbmc/qemu/tests/qemu-iotests/288 (revision c13de3b32fdeffb3e53494fd7d5cecb67cb65799)
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