#!/usr/bin/env bash
#
# Live migration test
#
# Performs a migration from one VM to another via monitor commands
#
# Copyright (C) 2014 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!

MIG_FIFO="${TEST_DIR}/migrate"

_cleanup()
{
    rm -f "${MIG_FIFO}"
    _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
_supported_os Linux
_default_cache_mode none
_supported_cache_modes writethrough none writeback

size=1G

_make_test_img $size

mkfifo "${MIG_FIFO}"

echo
echo === Starting QEMU VM1 ===
echo

qemu_comm_method="monitor"
_launch_qemu -drive file="${TEST_IMG}",cache=${CACHEMODE},aio=${AIOMODE},id=disk
h1=$QEMU_HANDLE

echo
echo === Starting QEMU VM2 ===
echo
_launch_qemu -drive file="${TEST_IMG}",cache=${CACHEMODE},aio=${AIOMODE},id=disk \
             -incoming "exec: cat '${MIG_FIFO}'"
h2=$QEMU_HANDLE

echo
echo === VM 1: Migrate from VM1 to VM2  ===
echo

silent=yes
_send_qemu_cmd $h1 'qemu-io disk "write -P 0x22 0 4M"' "(qemu)"
echo "vm1: qemu-io disk write complete"
_send_qemu_cmd $h1 "migrate \"exec: cat > '${MIG_FIFO}'\"" "(qemu)"
echo "vm1: live migration started"
qemu_cmd_repeat=20 _send_qemu_cmd $h1 "info migrate" "completed"
echo "vm1: live migration completed"

echo
echo === VM 2: Post-migration, write to disk, verify running ===
echo

_send_qemu_cmd $h2 'qemu-io disk "write 4M 1M"' "(qemu)"
echo "vm2: qemu-io disk write complete"
qemu_cmd_repeat=20 _send_qemu_cmd $h2 "info status" "running"
echo "vm2: qemu process running successfully"

echo "vm2: flush io, and quit"
_send_qemu_cmd $h2 'qemu-io disk flush' "(qemu)"
_send_qemu_cmd $h2 'quit' ""
_send_qemu_cmd $h1 'quit' ""

wait
echo "Check image pattern"
${QEMU_IO} -c "read -P 0x22 0 4M" "${TEST_IMG}" | _filter_testdir | _filter_qemu_io

echo "Running 'qemu-img check -r all \$TEST_IMG'"
_check_test_img -r all

echo "*** done"
rm -f $seq.full
status=0
