#!/usr/bin/env bash
# group: rw auto quick
#
# Test that all qcow2 header extensions survive a header rewrite
#
# Copyright (C) 2011 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=kwolf@redhat.com

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

status=1	# failure is the default!

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

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

# This tests qcow2-specific low-level functionality
_supported_fmt qcow2
_supported_proto file fuse
# We want to test compat=0.10, which does not support external data
# files or refcount widths other than 16
_unsupported_imgopts data_file 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'

CLUSTER_SIZE=65536

# qcow2.py output depends on the exact options used, so override the command
# line here as an exception
for compat in "compat=0.10" "compat=1.1"; do

    echo
    echo ===== Testing with -o $compat =====
    echo
    echo === Create image with unknown header extension ===
    echo
    _make_test_img -o $compat 64M
    $PYTHON qcow2.py "$TEST_IMG" add-header-ext 0x12345678 "This is a test header extension"
    $PYTHON qcow2.py "$TEST_IMG" dump-header
    _check_test_img

    echo
    echo === Rewrite header with no backing file ===
    echo
    $QEMU_IMG rebase -u -b "" "$TEST_IMG"
    $PYTHON qcow2.py "$TEST_IMG" dump-header
    _check_test_img

    echo
    echo === Add a backing file and format ===
    echo
    $QEMU_IMG rebase -u -b "/some/backing/file/path" -F host_device "$TEST_IMG"
    $PYTHON qcow2.py "$TEST_IMG" dump-header
done

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