#!/bin/bash
#
# Test case for drive-mirror to NBD
#
# Copyright (C) 2015 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"

here="$PWD"
status=1	# failure is the default!

_cleanup()
{
    _cleanup_qemu
    _cleanup_test_img
    rm -f "$TEST_DIR/source.$IMGFMT"
}

trap "_cleanup; exit \$status" 0 1 2 3 15

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

_supported_fmt generic
_supported_proto nbd
_supported_os Linux
_unsupported_imgopts "subformat=monolithicFlat" "subformat=twoGbMaxExtentFlat"

_make_test_img 64M
$QEMU_IMG create -f $IMGFMT "$TEST_DIR/source.$IMGFMT" 64M | _filter_img_create

_launch_qemu -drive if=none,id=src,file="$TEST_DIR/source.$IMGFMT",format=raw \
             -nodefaults

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

# 'format': 'nbd' is not actually "correct", but this was the only way to
# test the bug fixed in commit f53a829.  Though the bug's related code
# bdrv_swap() was replaced later, let's make sure we don't fall in the same
# pit again.
_send_qemu_cmd $QEMU_HANDLE  \
    "{'execute': 'drive-mirror',
      'arguments': {'device': 'src',
                    'target': '$TEST_IMG',
                    'format': 'nbd',
                    'sync':'full',
                    'mode':'existing'}}" \
    'BLOCK_JOB_READY'

_send_qemu_cmd $QEMU_HANDLE  \
    "{'execute': 'block-job-complete',
      'arguments': {'device': 'src'}}" \
    'BLOCK_JOB_COMPLETE'

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

wait=1 _cleanup_qemu


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