#!/usr/bin/env bash
#
# 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
# 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
