#!/usr/bin/env bash
#
# Test case for shared BDS between backend trees
#
# Copyright (C) 2016 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=mreitz@redhat.com

seq="$(basename $0)"
echo "QA output created by $seq"

status=1	# failure is the default!

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

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

_supported_fmt qcow2
_supported_proto file fuse

_make_test_img 64k

_launch_qemu

_send_qemu_cmd $QEMU_HANDLE \
    "{ 'execute': 'qmp_capabilities' }" \
    'return'

_send_qemu_cmd $QEMU_HANDLE \
    "{ 'execute': 'blockdev-add',
       'arguments': { 'node-name': 'protocol',
                      'driver': 'file',
                      'filename': '$TEST_IMG' } }" \
    'return'

_send_qemu_cmd $QEMU_HANDLE \
    "{ 'execute': 'blockdev-add',
       'arguments': { 'node-name': 'format',
                      'driver': '$IMGFMT',
                      'file': 'protocol' } }" \
    'return'

_send_qemu_cmd $QEMU_HANDLE \
    "{ 'execute': 'human-monitor-command',
       'arguments': { 'command-line': 'qemu-io format \"write -P 42 0 64k\"' } }" \
    'return'

_send_qemu_cmd $QEMU_HANDLE \
    "{ 'execute': 'quit' }" \
    'return'

wait=1 _cleanup_qemu

_check_test_img

$QEMU_IO -c 'read -P 42 0 64k' "$TEST_IMG" | _filter_qemu_io

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