xref: /openbmc/qemu/tests/qemu-iotests/284 (revision 087ab8e7)
1*087ab8e7SDaniel P. Berrangé#!/usr/bin/env bash
2*087ab8e7SDaniel P. Berrangé#
3*087ab8e7SDaniel P. Berrangé# Test ref count checks on encrypted images
4*087ab8e7SDaniel P. Berrangé#
5*087ab8e7SDaniel P. Berrangé# Copyright (C) 2019 Red Hat, Inc.
6*087ab8e7SDaniel P. Berrangé#
7*087ab8e7SDaniel P. Berrangé# This program is free software; you can redistribute it and/or modify
8*087ab8e7SDaniel P. Berrangé# it under the terms of the GNU General Public License as published by
9*087ab8e7SDaniel P. Berrangé# the Free Software Foundation; either version 2 of the License, or
10*087ab8e7SDaniel P. Berrangé# (at your option) any later version.
11*087ab8e7SDaniel P. Berrangé#
12*087ab8e7SDaniel P. Berrangé# This program is distributed in the hope that it will be useful,
13*087ab8e7SDaniel P. Berrangé# but WITHOUT ANY WARRANTY; without even the implied warranty of
14*087ab8e7SDaniel P. Berrangé# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*087ab8e7SDaniel P. Berrangé# GNU General Public License for more details.
16*087ab8e7SDaniel P. Berrangé#
17*087ab8e7SDaniel P. Berrangé# You should have received a copy of the GNU General Public License
18*087ab8e7SDaniel P. Berrangé# along with this program.  If not, see <http://www.gnu.org/licenses/>.
19*087ab8e7SDaniel P. Berrangé#
20*087ab8e7SDaniel P. Berrangé
21*087ab8e7SDaniel P. Berrangé# creator
22*087ab8e7SDaniel P. Berrangéowner=berrange@redhat.com
23*087ab8e7SDaniel P. Berrangé
24*087ab8e7SDaniel P. Berrangéseq=`basename $0`
25*087ab8e7SDaniel P. Berrangéecho "QA output created by $seq"
26*087ab8e7SDaniel P. Berrangé
27*087ab8e7SDaniel P. Berrangéstatus=1        # failure is the default!
28*087ab8e7SDaniel P. Berrangé
29*087ab8e7SDaniel P. Berrangé_cleanup()
30*087ab8e7SDaniel P. Berrangé{
31*087ab8e7SDaniel P. Berrangé        _cleanup_test_img
32*087ab8e7SDaniel P. Berrangé}
33*087ab8e7SDaniel P. Berrangétrap "_cleanup; exit \$status" 0 1 2 3 15
34*087ab8e7SDaniel P. Berrangé
35*087ab8e7SDaniel P. Berrangé# get standard environment, filters and checks
36*087ab8e7SDaniel P. Berrangé. ./common.rc
37*087ab8e7SDaniel P. Berrangé. ./common.filter
38*087ab8e7SDaniel P. Berrangé
39*087ab8e7SDaniel P. Berrangé_supported_fmt qcow2
40*087ab8e7SDaniel P. Berrangé_supported_proto generic
41*087ab8e7SDaniel P. Berrangé_supported_os Linux
42*087ab8e7SDaniel P. Berrangé
43*087ab8e7SDaniel P. Berrangé
44*087ab8e7SDaniel P. Berrangésize=1M
45*087ab8e7SDaniel P. Berrangé
46*087ab8e7SDaniel P. BerrangéSECRET="secret,id=sec0,data=astrochicken"
47*087ab8e7SDaniel P. Berrangé
48*087ab8e7SDaniel P. BerrangéIMGSPEC="driver=$IMGFMT,file.filename=$TEST_IMG,encrypt.key-secret=sec0"
49*087ab8e7SDaniel P. BerrangéQEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
50*087ab8e7SDaniel P. Berrangé
51*087ab8e7SDaniel P. Berrangé_run_test()
52*087ab8e7SDaniel P. Berrangé{
53*087ab8e7SDaniel P. Berrangé        IMGOPTSSYNTAX=true
54*087ab8e7SDaniel P. Berrangé        OLD_TEST_IMG="$TEST_IMG"
55*087ab8e7SDaniel P. Berrangé        TEST_IMG="driver=$IMGFMT,file.filename=$TEST_IMG,encrypt.key-secret=sec0"
56*087ab8e7SDaniel P. Berrangé        QEMU_IMG_EXTRA_ARGS="--image-opts --object $SECRET"
57*087ab8e7SDaniel P. Berrangé
58*087ab8e7SDaniel P. Berrangé        echo
59*087ab8e7SDaniel P. Berrangé        echo "== cluster size $csize"
60*087ab8e7SDaniel P. Berrangé        echo "== checking image refcounts =="
61*087ab8e7SDaniel P. Berrangé        _check_test_img
62*087ab8e7SDaniel P. Berrangé
63*087ab8e7SDaniel P. Berrangé        echo
64*087ab8e7SDaniel P. Berrangé        echo "== writing some data =="
65*087ab8e7SDaniel P. Berrangé        $QEMU_IO -c "write -P 0x9 0 1"  $QEMU_IMG_EXTRA_ARGS $TEST_IMG | _filter_qemu_io | _filter_testdir
66*087ab8e7SDaniel P. Berrangé        echo
67*087ab8e7SDaniel P. Berrangé        echo "== rechecking image refcounts =="
68*087ab8e7SDaniel P. Berrangé        _check_test_img
69*087ab8e7SDaniel P. Berrangé
70*087ab8e7SDaniel P. Berrangé        echo
71*087ab8e7SDaniel P. Berrangé        echo "== writing some more data =="
72*087ab8e7SDaniel P. Berrangé        $QEMU_IO -c "write -P 0x9 $csize 1" $QEMU_IMG_EXTRA_ARGS $TEST_IMG | _filter_qemu_io | _filter_testdir
73*087ab8e7SDaniel P. Berrangé        echo
74*087ab8e7SDaniel P. Berrangé        echo "== rechecking image refcounts =="
75*087ab8e7SDaniel P. Berrangé        _check_test_img
76*087ab8e7SDaniel P. Berrangé
77*087ab8e7SDaniel P. Berrangé        TEST_IMG="$OLD_TEST_IMG"
78*087ab8e7SDaniel P. Berrangé        QEMU_IMG_EXTRA_ARGS=
79*087ab8e7SDaniel P. Berrangé        IMGOPTSSYNTAX=
80*087ab8e7SDaniel P. Berrangé}
81*087ab8e7SDaniel P. Berrangé
82*087ab8e7SDaniel P. Berrangé
83*087ab8e7SDaniel P. Berrangéecho
84*087ab8e7SDaniel P. Berrangéecho "testing LUKS qcow2 encryption"
85*087ab8e7SDaniel P. Berrangéecho
86*087ab8e7SDaniel P. Berrangé
87*087ab8e7SDaniel P. Berrangéfor csize in 512 2048 32768
88*087ab8e7SDaniel P. Berrangédo
89*087ab8e7SDaniel P. Berrangé  _make_test_img --object $SECRET -o "encrypt.format=luks,encrypt.key-secret=sec0,encrypt.iter-time=10,cluster_size=$csize" $size
90*087ab8e7SDaniel P. Berrangé  _run_test
91*087ab8e7SDaniel P. Berrangé  _cleanup_test_img
92*087ab8e7SDaniel P. Berrangédone
93*087ab8e7SDaniel P. Berrangé
94*087ab8e7SDaniel P. Berrangé# success, all done
95*087ab8e7SDaniel P. Berrangéecho "*** done"
96*087ab8e7SDaniel P. Berrangérm -f $seq.full
97*087ab8e7SDaniel P. Berrangéstatus=0
98