#!/bin/bash
#
# Test 'info block' with all kinds of configurations
#
# Copyright (C) 2017 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

_supported_fmt qcow2
_supported_proto file
_supported_os Linux

if [ "$QEMU_DEFAULT_MACHINE" != "pc" ]; then
    _notrun "Requires a PC machine"
fi

do_run_qemu()
{
    echo Testing: "$@"

    (
        if ! test -t 0; then
            while read cmd; do
                echo $cmd
            done
        fi
        echo quit
    ) | $QEMU -S -display none -device virtio-scsi-pci -monitor stdio "$@" 2>&1
    echo
}

check_info_block()
{
    echo "info block" |
    do_run_qemu "$@" | _filter_win32 | _filter_hmp | _filter_qemu |
        _filter_generated_node_ids | _filter_qom_path
}


size=64M
_make_test_img $size

removable="floppy ide-cd scsi-cd"
fixed="ide-hd scsi-hd virtio-blk-pci"

echo
echo "=== Empty drives ==="
echo

for dev in $removable; do
    check_info_block -device $dev
    check_info_block -device $dev,id=qdev_id
done

echo
echo "=== -blockdev/-device=<node-name> ==="
echo

for dev in $fixed $removable; do
    check_info_block -blockdev driver=null-co,node-name=null -device $dev,drive=null
    check_info_block -blockdev driver=null-co,node-name=null -device $dev,drive=null,id=qdev_id
done

echo
echo "=== -drive if=none/-device=<node-name> ==="
echo

# This creates two BlockBackends that will show up in 'info block'!
# A monitor-owned one from -drive, and anonymous one from -device
for dev in $fixed $removable; do
    check_info_block -drive if=none,driver=null-co,node-name=null -device $dev,drive=null,id=qdev_id
done

echo
echo "=== -drive if=none/-device=<bb-name> (with medium) ==="
echo

for dev in $fixed $removable; do
    check_info_block -drive if=none,driver=null-co,node-name=null -device $dev,drive=none0
    check_info_block -drive if=none,driver=null-co,node-name=null -device $dev,drive=none0,id=qdev_id
done

echo
echo "=== -drive if=none/-device=<bb-name> (without medium) ==="
echo

check_info_block -drive if=none

for dev in $removable; do
    check_info_block -drive if=none -device $dev,drive=none0
    check_info_block -drive if=none -device $dev,drive=none0,id=qdev_id
done

echo
echo "=== -drive if=... ==="
echo

check_info_block -drive if=floppy
check_info_block -drive if=floppy,driver=null-co

check_info_block -drive if=ide,driver=null-co
check_info_block -drive if=ide,media=cdrom
check_info_block -drive if=ide,driver=null-co,media=cdrom

check_info_block -drive if=virtio,driver=null-co

check_info_block -drive if=pflash,driver=null-co,size=1M

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