cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

087 (4427B)


      1#!/usr/bin/env bash
      2# group: rw quick
      3#
      4# Test unsupported blockdev-add cases
      5#
      6# Copyright (C) 2014 Red Hat, Inc.
      7#
      8# This program is free software; you can redistribute it and/or modify
      9# it under the terms of the GNU General Public License as published by
     10# the Free Software Foundation; either version 2 of the License, or
     11# (at your option) any later version.
     12#
     13# This program is distributed in the hope that it will be useful,
     14# but WITHOUT ANY WARRANTY; without even the implied warranty of
     15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16# GNU General Public License for more details.
     17#
     18# You should have received a copy of the GNU General Public License
     19# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     20#
     21
     22# creator
     23owner=kwolf@redhat.com
     24
     25seq=`basename $0`
     26echo "QA output created by $seq"
     27
     28status=1	# failure is the default!
     29
     30_cleanup()
     31{
     32    _cleanup_test_img
     33}
     34trap "_cleanup; exit \$status" 0 1 2 3 15
     35
     36# get standard environment, filters and checks
     37. ./common.rc
     38. ./common.filter
     39
     40_supported_fmt qcow2
     41_supported_proto file
     42_supported_os Linux
     43_require_working_luks
     44
     45do_run_qemu()
     46{
     47    echo Testing: "$@"
     48    $QEMU -nographic -qmp stdio -serial none "$@"
     49    echo
     50}
     51
     52run_qemu()
     53{
     54    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp \
     55                          | _filter_qemu | _filter_imgfmt \
     56                          | _filter_actual_image_size
     57}
     58
     59size=128M
     60
     61_make_test_img $size
     62
     63echo
     64echo === Missing ID and node-name ===
     65echo
     66
     67run_qemu <<EOF
     68{ "execute": "qmp_capabilities" }
     69{ "execute": "blockdev-add",
     70  "arguments": {
     71      "driver": "$IMGFMT",
     72      "file": {
     73          "driver": "file",
     74          "filename": "$TEST_IMG"
     75      }
     76    }
     77  }
     78{ "execute": "quit" }
     79EOF
     80
     81echo
     82echo === Duplicate ID ===
     83echo
     84
     85run_qemu -drive driver=$IMGFMT,id=disk,node-name=test-node,file="$TEST_IMG" <<EOF
     86{ "execute": "qmp_capabilities" }
     87{ "execute": "blockdev-add",
     88  "arguments": {
     89      "driver": "$IMGFMT",
     90      "node-name": "disk",
     91      "file": {
     92          "driver": "null-co"
     93      }
     94    }
     95  }
     96{ "execute": "blockdev-add",
     97  "arguments": {
     98      "driver": "$IMGFMT",
     99      "node-name": "test-node",
    100      "file": {
    101          "driver": "null-co"
    102      }
    103    }
    104  }
    105{ "execute": "quit" }
    106EOF
    107
    108echo
    109echo === aio=native without O_DIRECT ===
    110echo
    111
    112# Skip this test if AIO is not enabled in this build
    113run_qemu_filter_aio()
    114{
    115    run_qemu "$@" | \
    116        sed -e 's/is not supported in this build/it requires cache.direct=on, which was not specified/'
    117}
    118
    119run_qemu_filter_aio <<EOF
    120{ "execute": "qmp_capabilities" }
    121{ "execute": "blockdev-add",
    122  "arguments": {
    123      "driver": "$IMGFMT",
    124      "node-name": "disk",
    125      "file": {
    126          "driver": "file",
    127          "filename": "$TEST_IMG",
    128          "aio": "native"
    129      }
    130    }
    131  }
    132{ "execute": "quit" }
    133EOF
    134
    135echo
    136echo === Encrypted image QCow ===
    137echo
    138
    139_make_test_img --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 $size
    140run_qemu <<EOF
    141{ "execute": "qmp_capabilities" }
    142{ "execute": "object-add",
    143  "arguments": {
    144      "qom-type": "secret",
    145      "id": "sec0",
    146      "data": "123456"
    147  }
    148}
    149{ "execute": "blockdev-add",
    150  "arguments": {
    151      "driver": "$IMGFMT",
    152      "node-name": "disk",
    153      "file": {
    154          "driver": "file",
    155          "filename": "$TEST_IMG"
    156      },
    157      "encrypt": {
    158          "format": "aes",
    159          "key-secret": "sec0"
    160      }
    161    }
    162  }
    163{ "execute": "quit" }
    164EOF
    165
    166echo
    167echo === Encrypted image LUKS ===
    168echo
    169
    170_make_test_img --object secret,id=sec0,data=123456 -o encrypt.format=luks,encrypt.key-secret=sec0 $size
    171run_qemu <<EOF
    172{ "execute": "qmp_capabilities" }
    173{ "execute": "object-add",
    174  "arguments": {
    175      "qom-type": "secret",
    176      "id": "sec0",
    177      "data": "123456"
    178  }
    179}
    180{ "execute": "blockdev-add",
    181  "arguments": {
    182      "driver": "$IMGFMT",
    183      "node-name": "disk",
    184      "file": {
    185          "driver": "file",
    186          "filename": "$TEST_IMG"
    187      },
    188      "encrypt": {
    189        "format": "luks",
    190        "key-secret": "sec0"
    191      }
    192    }
    193  }
    194{ "execute": "quit" }
    195EOF
    196
    197echo
    198echo === Missing driver ===
    199echo
    200
    201_make_test_img --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 $size
    202run_qemu -S <<EOF
    203{ "execute": "qmp_capabilities" }
    204{ "execute": "blockdev-add",
    205  "arguments": {
    206      "node-name": "disk"
    207    }
    208  }
    209{ "execute": "quit" }
    210EOF
    211
    212# success, all done
    213echo "*** done"
    214rm -f $seq.full
    215status=0