#!/usr/bin/env bash
#
# Test for force canceling a running blockjob that is paused in
# an error state.
#
# Copyright (C) 2018 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=jcody@redhat.com

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

status=1	# failure is the default!

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

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

# Needs backing file and backing format support
_supported_fmt qcow2 qed
_supported_proto file
_supported_os Linux


DEST_IMG="$TEST_DIR/d.$IMGFMT"
TEST_IMG="$TEST_DIR/b.$IMGFMT"

_make_test_img 2M

# destination for mirror will be too small, causing error
TEST_IMG=$DEST_IMG _make_test_img 1M

$QEMU_IO -c 'write 0 2M' "$TEST_IMG" | _filter_qemu_io

_launch_qemu -drive id=testdisk,file="$TEST_IMG",format="$IMGFMT"

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

echo
echo '=== Starting drive-mirror, causing error & stop  ==='
echo

_send_qemu_cmd $QEMU_HANDLE \
    "{'execute': 'drive-mirror',
                 'arguments': {'device': 'testdisk',
                               'format': '$IMGFMT',
                               'target': '$DEST_IMG',
                               'sync':   'full',
                               'mode':   'existing',
                               'on-source-error': 'stop',
                               'on-target-error': 'stop' }}"    \
     "JOB_STATUS_CHANGE.*pause"

echo
echo '=== Force cancel job paused in error state  ==='
echo

# Filter out BLOCK_JOB_ERROR events because they may or may not occur.
# Cancelling the job means resuming it for a bit before it is actually
# aborted, and in that time it may or may not re-encounter the error.
success_or_failure="y" _send_qemu_cmd $QEMU_HANDLE \
    "{'execute': 'block-job-cancel',
                 'arguments': { 'device': 'testdisk',
                                'force': true}}" \
     "BLOCK_JOB_CANCELLED" "Assertion" \
    | grep -v '"BLOCK_JOB_ERROR"'

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