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

058 (3627B)


      1#!/usr/bin/env bash
      2# group: rw quick
      3#
      4# Test export internal snapshot by qemu-nbd, convert it by qemu-img.
      5#
      6# Copyright (C) 2013 IBM, Inc.
      7#
      8# Based on 029.
      9#
     10# This program is free software; you can redistribute it and/or modify
     11# it under the terms of the GNU General Public License as published by
     12# the Free Software Foundation; either version 2 of the License, or
     13# (at your option) any later version.
     14#
     15# This program is distributed in the hope that it will be useful,
     16# but WITHOUT ANY WARRANTY; without even the implied warranty of
     17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     18# GNU General Public License for more details.
     19#
     20# You should have received a copy of the GNU General Public License
     21# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     22#
     23
     24# creator
     25owner=xiawenc@linux.vnet.ibm.com
     26
     27seq=`basename $0`
     28echo "QA output created by $seq"
     29
     30status=1	# failure is the default!
     31
     32_export_nbd_snapshot()
     33{
     34    nbd_server_start_unix_socket "$TEST_IMG" -l $1
     35}
     36
     37_export_nbd_snapshot1()
     38{
     39    nbd_server_start_unix_socket "$TEST_IMG" -l snapshot.name=$1
     40}
     41
     42_cleanup()
     43{
     44    nbd_server_stop
     45    _cleanup_test_img
     46    _rm_test_img "$converted_image"
     47}
     48trap "_cleanup; exit \$status" 0 1 2 3 15
     49
     50# get standard environment, filters and checks
     51. ./common.rc
     52. ./common.filter
     53. ./common.pattern
     54. ./common.nbd
     55
     56_supported_fmt qcow2
     57_supported_proto file
     58_supported_os Linux
     59_require_command QEMU_NBD
     60# Internal snapshots are (currently) impossible with refcount_bits=1,
     61# and generally impossible with external data files
     62_unsupported_imgopts 'refcount_bits=1[^0-9]' data_file
     63
     64nbd_snapshot_img="nbd:unix:$nbd_unix_socket"
     65
     66converted_image=$TEST_IMG.converted
     67
     68# Use -f raw instead of -f $IMGFMT for the NBD connection
     69QEMU_IO_NBD="$QEMU_IO -f raw --cache=$CACHEMODE --aio=$AIOMODE"
     70
     71echo
     72echo "== preparing image =="
     73_make_test_img 64M
     74$QEMU_IO -c 'write -P 0xa 0x1000 0x1000' "$TEST_IMG" | _filter_qemu_io
     75$QEMU_IO -c 'write -P 0xb 0x2000 0x1000' "$TEST_IMG" | _filter_qemu_io
     76$QEMU_IMG snapshot -c sn1 "$TEST_IMG"
     77$QEMU_IO -c 'write -P 0xc 0x1000 0x1000' "$TEST_IMG" | _filter_qemu_io
     78$QEMU_IO -c 'write -P 0xd 0x2000 0x1000' "$TEST_IMG" | _filter_qemu_io
     79_check_test_img
     80
     81echo
     82echo "== verifying the image file with patterns =="
     83$QEMU_IO -c 'read -P 0xc 0x1000 0x1000' "$TEST_IMG" | _filter_qemu_io
     84$QEMU_IO -c 'read -P 0xd 0x2000 0x1000' "$TEST_IMG" | _filter_qemu_io
     85
     86_export_nbd_snapshot sn1
     87
     88echo
     89echo "== verifying the exported snapshot with patterns, method 1 =="
     90$QEMU_IO_NBD -r -c 'read -P 0xa 0x1000 0x1000' "$nbd_snapshot_img" | _filter_qemu_io
     91$QEMU_IO_NBD -r -c 'read -P 0xb 0x2000 0x1000' "$nbd_snapshot_img" | _filter_qemu_io
     92
     93_export_nbd_snapshot1 sn1
     94
     95echo
     96echo "== verifying the exported snapshot with patterns, method 2 =="
     97$QEMU_IO_NBD -r -c 'read -P 0xa 0x1000 0x1000' "$nbd_snapshot_img" | _filter_qemu_io
     98$QEMU_IO_NBD -r -c 'read -P 0xb 0x2000 0x1000' "$nbd_snapshot_img" | _filter_qemu_io
     99
    100$QEMU_IMG convert "$TEST_IMG" -l sn1 -O qcow2 "$converted_image"
    101
    102echo
    103echo "== verifying the converted snapshot with patterns, method 1 =="
    104$QEMU_IO -c 'read -P 0xa 0x1000 0x1000' "$converted_image" | _filter_qemu_io
    105$QEMU_IO -c 'read -P 0xb 0x2000 0x1000' "$converted_image" | _filter_qemu_io
    106
    107$QEMU_IMG convert "$TEST_IMG" -l snapshot.name=sn1 -O qcow2 "$converted_image"
    108
    109echo
    110echo "== verifying the converted snapshot with patterns, method 2 =="
    111$QEMU_IO -c 'read -P 0xa 0x1000 0x1000' "$converted_image" | _filter_qemu_io
    112$QEMU_IO -c 'read -P 0xb 0x2000 0x1000' "$converted_image" | _filter_qemu_io
    113
    114# success, all done
    115echo "*** done"
    116rm -f $seq.full
    117status=0