#!/usr/bin/env bash
# group: backing quick
#
# Test qcow backing file warnings
#
# Copyright (C) 2020 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/>.
#

seq=`basename $0`
echo "QA output created by $seq"

status=1 # failure is the default!

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

# get standard environment, filters and checks
. ./common.rc
. ./common.filter

_supported_fmt qcow
_supported_proto file
_supported_os Linux

size=32M

echo
echo "== qcow backed by qcow =="

TEST_IMG="$TEST_IMG.base" _make_test_img $size
_make_test_img -b "$TEST_IMG.base" $size
_img_info
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
_img_info

echo
echo "== mismatched command line detection =="

_make_test_img -b "$TEST_IMG.base" -F vmdk
_make_test_img -b "$TEST_IMG.base" -F vmdk $size
echo
# Use of -u bypasses the backing format sanity check
_make_test_img -u -b "$TEST_IMG.base" -F vmdk
_make_test_img -u -b "$TEST_IMG.base" -F vmdk $size
echo
# But the format must still be recognized
_make_test_img -b "$TEST_IMG.base" -F garbage $size
_make_test_img -u -b "$TEST_IMG.base" -F garbage $size
_img_info

echo
echo "== qcow backed by raw =="

rm "$TEST_IMG.base"
truncate --size=$size "$TEST_IMG.base"
_make_test_img -b "$TEST_IMG.base" $size
_img_info
_make_test_img -b "$TEST_IMG.base" -F raw $size
_img_info

echo
echo "== commit cannot change type of raw backing file =="
TEST_IMG="$TEST_IMG.qcow2" IMGFMT=qcow2 _make_test_img $size
truncate --size=$size "$TEST_IMG.qcow2"
$QEMU_IMG convert -n -f raw -O $IMGFMT "$TEST_IMG.qcow2" "$TEST_IMG"
$QEMU_IMG commit -f $IMGFMT "$TEST_IMG" && echo "unexpected success"
TEST_IMG="$TEST_IMG.base" _img_info

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