#!/bin/bash
#
# Test case for qemu-io -c map and qemu-img map
#
# Copyright (C) 2014 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

# creator
owner=mreitz@redhat.com

seq=$(basename $0)
echo "QA output created by $seq"

here=$PWD
status=1	# failure is the default!

_cleanup()
{
	_cleanup_test_img
}
trap "_cleanup; exit \$status" 0 1 2 3 15

# get standard environment, filters and qemu instance handling
. ./common.rc
. ./common.filter
. ./common.qemu

_supported_fmt qcow2
_supported_proto file
_supported_os Linux

IMG_SIZE=64K

echo
echo '=== Testing map command on truncated image ==='
echo

_make_test_img $IMG_SIZE
# Create cluster
$QEMU_IO -c 'write 0 64k' "$TEST_IMG" | _filter_qemu_io
# Remove data cluster from image (first cluster: image header, second: reftable,
# third: refblock, fourth: L1 table, fifth: L2 table)
$QEMU_IMG resize -f raw "$TEST_IMG" $((5 * 64 * 1024))

$QEMU_IO -c map "$TEST_IMG"
$QEMU_IMG map "$TEST_IMG"

echo
echo '=== Testing map on an image file truncated outside of qemu ==='
echo

# Same as above, only now we concurrently truncate and map the image
_make_test_img $IMG_SIZE
$QEMU_IO -c 'write 0 64k' "$TEST_IMG" | _filter_qemu_io

qemu_comm_method=monitor _launch_qemu -drive if=none,file="$TEST_IMG",id=drv0

$QEMU_IMG resize -f raw "$TEST_IMG" $((5 * 64 * 1024))

_send_qemu_cmd $QEMU_HANDLE 'qemu-io drv0 map' 'allocated' \
    | sed -e 's/^(qemu).*qemu-io drv0 map...$/(qemu) qemu-io drv0 map/'
_send_qemu_cmd $QEMU_HANDLE 'quit' ''

# success, all done
echo '*** done'
rm -f $seq.full
status=0
