#!/usr/bin/env bash
# group: rw auto backing
#
# Test that qemu-img info --backing-chain detects infinite loops
#
# Copyright (C) 2012 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=stefanha@redhat.com

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

status=1	# failure is the default!

_cleanup()
{
    _cleanup_test_img
    for img in "$TEST_IMG".[123].base; do
        _rm_test_img "$img"
    done
}
trap "_cleanup; exit \$status" 0 1 2 3 15

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

# Any format supporting backing files
_supported_fmt qcow2 qed
_supported_proto file


size=128M
_make_test_img $size
$QEMU_IMG rebase -u -b "$TEST_IMG" -F $IMGFMT "$TEST_IMG"

echo
echo "== backing file references self =="
_img_info --backing-chain

_make_test_img $size
mv "$TEST_IMG" "$TEST_IMG.base"
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
$QEMU_IMG rebase -u -b "$TEST_IMG" -F $IMGFMT "$TEST_IMG.base"

echo
echo "== parent references self =="
_img_info --backing-chain

_make_test_img $size
mv "$TEST_IMG" "$TEST_IMG.1.base"
_make_test_img -b "$TEST_IMG.1.base" -F $IMGFMT $size
mv "$TEST_IMG" "$TEST_IMG.2.base"
_make_test_img -b "$TEST_IMG.2.base" -F $IMGFMT $size
mv "$TEST_IMG" "$TEST_IMG.3.base"
_make_test_img -b "$TEST_IMG.3.base" -F $IMGFMT $size
$QEMU_IMG rebase -u -b "$TEST_IMG.2.base" -F $IMGFMT "$TEST_IMG.1.base"

echo
echo "== ancestor references another ancestor =="
_img_info --backing-chain

_make_test_img $size
mv "$TEST_IMG" "$TEST_IMG.1.base"
_make_test_img -b "$TEST_IMG.1.base" -F $IMGFMT $size
mv "$TEST_IMG" "$TEST_IMG.2.base"
_make_test_img -b "$TEST_IMG.2.base" -F $IMGFMT $size

echo
echo "== finite chain of length 3 (human) =="
# Exclude backing format, since qed differs from qcow2 on what gets stored
_img_info --backing-chain | grep -v '^backing file format:'

echo
echo "== finite chain of length 3 (json) =="
_img_info --backing-chain --output=json | grep -v 'backing-filename-format'

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