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

082 (8686B)


      1#!/usr/bin/env bash
      2# group: rw quick
      3#
      4# Test qemu-img command line parsing
      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 nfs
     42_require_drivers bochs
     43
     44run_qemu_img()
     45{
     46    echo
     47    echo Testing: "$@" | _filter_testdir
     48    "$QEMU_IMG" "$@" 2>&1 | _filter_testdir
     49}
     50
     51size=128M
     52
     53echo
     54echo === create: Options specified more than once ===
     55
     56# Last -f should win
     57run_qemu_img create -f foo -f $IMGFMT "$TEST_IMG" $size
     58_img_info
     59
     60# Multiple -o should be merged
     61run_qemu_img create -f $IMGFMT -o cluster_size=4k -o lazy_refcounts=on "$TEST_IMG" $size
     62_img_info --format-specific
     63
     64# If the same -o key is specified more than once, the last one wins
     65run_qemu_img create -f $IMGFMT -o cluster_size=4k -o lazy_refcounts=on -o cluster_size=8k "$TEST_IMG" $size
     66_img_info --format-specific
     67run_qemu_img create -f $IMGFMT -o cluster_size=4k,cluster_size=8k "$TEST_IMG" $size
     68_img_info
     69
     70echo
     71echo === create: help for -o ===
     72
     73# Adding the help option to a command without other -o options
     74run_qemu_img create -f $IMGFMT -o help "$TEST_IMG" $size
     75run_qemu_img create -f $IMGFMT -o \? "$TEST_IMG" $size
     76
     77# Adding the help option to the same -o option
     78run_qemu_img create -f $IMGFMT -o cluster_size=4k,help "$TEST_IMG" $size
     79run_qemu_img create -f $IMGFMT -o cluster_size=4k,\? "$TEST_IMG" $size
     80run_qemu_img create -f $IMGFMT -o help,cluster_size=4k "$TEST_IMG" $size
     81run_qemu_img create -f $IMGFMT -o \?,cluster_size=4k "$TEST_IMG" $size
     82
     83# Adding the help option to a separate -o option
     84run_qemu_img create -f $IMGFMT -o cluster_size=4k -o help "$TEST_IMG" $size
     85run_qemu_img create -f $IMGFMT -o cluster_size=4k -o \? "$TEST_IMG" $size
     86
     87# Looks like a help option, but is part of the backing file name
     88run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,help \
     89    -F $IMGFMT "$TEST_IMG" $size
     90run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,\? \
     91    -F $IMGFMT "$TEST_IMG" $size
     92
     93# Try to trick qemu-img into creating escaped commas
     94run_qemu_img create -f $IMGFMT -o backing_file="$TEST_IMG", -o help "$TEST_IMG" $size
     95run_qemu_img create -f $IMGFMT -o backing_file="$TEST_IMG" -o ,help "$TEST_IMG" $size
     96run_qemu_img create -f $IMGFMT -o backing_file="$TEST_IMG" -o ,, -o help "$TEST_IMG" $size
     97
     98# Leave out everything that isn't needed
     99run_qemu_img create -f $IMGFMT -o help
    100run_qemu_img create -o help
    101
    102# Try help option for a format that does not support creation
    103run_qemu_img create -f bochs -o help
    104
    105echo
    106echo === convert: Options specified more than once ===
    107
    108# We need a valid source image
    109run_qemu_img create -f $IMGFMT "$TEST_IMG" $size
    110
    111# Last -f should win
    112run_qemu_img convert -f foo -f $IMGFMT "$TEST_IMG" "$TEST_IMG".base
    113TEST_IMG="${TEST_IMG}.base" _img_info
    114
    115# Last -O should win
    116run_qemu_img convert -O foo -O $IMGFMT "$TEST_IMG" "$TEST_IMG".base
    117TEST_IMG="${TEST_IMG}.base" _img_info
    118
    119# Multiple -o should be merged
    120run_qemu_img convert -O $IMGFMT -o cluster_size=4k -o lazy_refcounts=on "$TEST_IMG" "$TEST_IMG".base
    121TEST_IMG="${TEST_IMG}.base" _img_info --format-specific
    122
    123# If the same -o key is specified more than once, the last one wins
    124run_qemu_img convert -O $IMGFMT -o cluster_size=4k -o lazy_refcounts=on -o cluster_size=8k "$TEST_IMG" "$TEST_IMG".base
    125TEST_IMG="${TEST_IMG}.base" _img_info --format-specific
    126run_qemu_img convert -O $IMGFMT -o cluster_size=4k,cluster_size=8k "$TEST_IMG" "$TEST_IMG".base
    127TEST_IMG="${TEST_IMG}.base" _img_info
    128
    129echo
    130echo === convert: help for -o ===
    131
    132# Adding the help option to a command without other -o options
    133run_qemu_img convert -O $IMGFMT -o help "$TEST_IMG" "$TEST_IMG".base
    134run_qemu_img convert -O $IMGFMT -o \? "$TEST_IMG" "$TEST_IMG".base
    135
    136# Adding the help option to the same -o option
    137run_qemu_img convert -O $IMGFMT -o cluster_size=4k,help "$TEST_IMG" "$TEST_IMG".base
    138run_qemu_img convert -O $IMGFMT -o cluster_size=4k,\? "$TEST_IMG" "$TEST_IMG".base
    139run_qemu_img convert -O $IMGFMT -o help,cluster_size=4k "$TEST_IMG" "$TEST_IMG".base
    140run_qemu_img convert -O $IMGFMT -o \?,cluster_size=4k "$TEST_IMG" "$TEST_IMG".base
    141
    142# Adding the help option to a separate -o option
    143run_qemu_img convert -O $IMGFMT -o cluster_size=4k -o help "$TEST_IMG" "$TEST_IMG".base
    144run_qemu_img convert -O $IMGFMT -o cluster_size=4k -o \? "$TEST_IMG" "$TEST_IMG".base
    145
    146# Looks like a help option, but is part of the backing file name
    147run_qemu_img convert -O $IMGFMT -o backing_fmt=$IMGFMT,backing_file="$TEST_IMG",,help "$TEST_IMG" "$TEST_IMG".base
    148run_qemu_img convert -O $IMGFMT -o backing_fmt=$IMGFMT,backing_file="$TEST_IMG",,\? "$TEST_IMG" "$TEST_IMG".base
    149
    150# Try to trick qemu-img into creating escaped commas
    151run_qemu_img convert -O $IMGFMT -o backing_file="$TEST_IMG", -o help "$TEST_IMG" "$TEST_IMG".base
    152run_qemu_img convert -O $IMGFMT -o backing_file="$TEST_IMG" -o ,help "$TEST_IMG" "$TEST_IMG".base
    153run_qemu_img convert -O $IMGFMT -o backing_file="$TEST_IMG" -o ,, -o help "$TEST_IMG" "$TEST_IMG".base
    154
    155# Leave out everything that isn't needed
    156run_qemu_img convert -O $IMGFMT -o help
    157run_qemu_img convert -o help
    158
    159# Try help option for a format that does not support creation
    160run_qemu_img convert -O bochs -o help
    161
    162echo
    163echo === convert: -C and other options ===
    164
    165# Adding the help option to a command without other -o options
    166run_qemu_img convert -C -S 4k -O $IMGFMT "$TEST_IMG" "$TEST_IMG".target
    167run_qemu_img convert -C -S 8k -O $IMGFMT "$TEST_IMG" "$TEST_IMG".target
    168run_qemu_img convert -C -c -O $IMGFMT "$TEST_IMG" "$TEST_IMG".target
    169run_qemu_img convert -C --salvage -O $IMGFMT "$TEST_IMG" "$TEST_IMG".target
    170
    171echo
    172echo === amend: Options specified more than once ===
    173
    174# Last -f should win
    175run_qemu_img amend -f foo -f $IMGFMT -o lazy_refcounts=on "$TEST_IMG"
    176_img_info --format-specific
    177
    178# Multiple -o should be merged
    179run_qemu_img amend -f $IMGFMT -o size=130M -o lazy_refcounts=off "$TEST_IMG"
    180_img_info --format-specific
    181
    182# If the same -o key is specified more than once, the last one wins
    183run_qemu_img amend -f $IMGFMT -o size=8M -o lazy_refcounts=on -o size=132M "$TEST_IMG"
    184_img_info --format-specific
    185run_qemu_img amend -f $IMGFMT -o size=4M,size=148M "$TEST_IMG"
    186_img_info
    187
    188echo
    189echo === amend: help for -o ===
    190
    191# Adding the help option to a command without other -o options
    192run_qemu_img amend -f $IMGFMT -o help "$TEST_IMG"
    193run_qemu_img amend -f $IMGFMT -o \? "$TEST_IMG"
    194
    195# Adding the help option to the same -o option
    196run_qemu_img amend -f $IMGFMT -o cluster_size=4k,help "$TEST_IMG"
    197run_qemu_img amend -f $IMGFMT -o cluster_size=4k,\? "$TEST_IMG"
    198run_qemu_img amend -f $IMGFMT -o help,cluster_size=4k "$TEST_IMG"
    199run_qemu_img amend -f $IMGFMT -o \?,cluster_size=4k "$TEST_IMG"
    200
    201# Adding the help option to a separate -o option
    202run_qemu_img amend -f $IMGFMT -o cluster_size=4k -o help "$TEST_IMG"
    203run_qemu_img amend -f $IMGFMT -o cluster_size=4k -o \? "$TEST_IMG"
    204
    205# Looks like a help option, but is part of the backing file name
    206run_qemu_img amend -f $IMGFMT -o backing_file="$TEST_IMG",,help "$TEST_IMG"
    207run_qemu_img rebase -u -b "" -f $IMGFMT "$TEST_IMG"
    208
    209run_qemu_img amend -f $IMGFMT -o backing_file="$TEST_IMG",,\? "$TEST_IMG"
    210run_qemu_img rebase -u -b "" -f $IMGFMT "$TEST_IMG"
    211
    212# Try to trick qemu-img into creating escaped commas
    213run_qemu_img amend -f $IMGFMT -o backing_file="$TEST_IMG", -o help "$TEST_IMG"
    214run_qemu_img amend -f $IMGFMT -o backing_file="$TEST_IMG" -o ,help "$TEST_IMG"
    215run_qemu_img amend -f $IMGFMT -o backing_file="$TEST_IMG" -o ,, -o help "$TEST_IMG"
    216
    217# Leave out everything that isn't needed
    218run_qemu_img amend -f $IMGFMT -o help
    219
    220# amend requires specifying either a format explicitly, or a file
    221# which it can probe
    222run_qemu_img amend -o help
    223
    224# Try help option for a format that does not support amendment
    225run_qemu_img amend -f bochs -o help
    226
    227# success, all done
    228echo "*** done"
    229rm -f $seq.full
    230status=0