1*7c3a3028SDaniel Henrique Barboza#!/bin/bash 2*7c3a3028SDaniel Henrique Barboza# 3*7c3a3028SDaniel Henrique Barboza# Test savevm and loadvm after live migration with postcopy flag 4*7c3a3028SDaniel Henrique Barboza# 5*7c3a3028SDaniel Henrique Barboza# Copyright (C) 2017, IBM Corporation. 6*7c3a3028SDaniel Henrique Barboza# 7*7c3a3028SDaniel Henrique Barboza# This file is derived from tests/qemu-iotests/181 by Kevin Wolf 8*7c3a3028SDaniel Henrique Barboza# 9*7c3a3028SDaniel Henrique Barboza# This program is free software; you can redistribute it and/or modify 10*7c3a3028SDaniel Henrique Barboza# it under the terms of the GNU General Public License as published by 11*7c3a3028SDaniel Henrique Barboza# the Free Software Foundation; either version 2 of the License, or 12*7c3a3028SDaniel Henrique Barboza# (at your option) any later version. 13*7c3a3028SDaniel Henrique Barboza# 14*7c3a3028SDaniel Henrique Barboza# This program is distributed in the hope that it will be useful, 15*7c3a3028SDaniel Henrique Barboza# but WITHOUT ANY WARRANTY; without even the implied warranty of 16*7c3a3028SDaniel Henrique Barboza# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*7c3a3028SDaniel Henrique Barboza# GNU General Public License for more details. 18*7c3a3028SDaniel Henrique Barboza# 19*7c3a3028SDaniel Henrique Barboza# You should have received a copy of the GNU General Public License 20*7c3a3028SDaniel Henrique Barboza# along with this program. If not, see <http://www.gnu.org/licenses/>. 21*7c3a3028SDaniel Henrique Barboza 22*7c3a3028SDaniel Henrique Barbozaseq=`basename $0` 23*7c3a3028SDaniel Henrique Barbozaecho "QA output created by $seq" 24*7c3a3028SDaniel Henrique Barboza 25*7c3a3028SDaniel Henrique Barbozastatus=1 # failure is the default! 26*7c3a3028SDaniel Henrique Barboza 27*7c3a3028SDaniel Henrique BarbozaMIG_SOCKET="${TEST_DIR}/migrate" 28*7c3a3028SDaniel Henrique Barboza 29*7c3a3028SDaniel Henrique Barboza# get standard environment, filters and checks 30*7c3a3028SDaniel Henrique Barboza. ./common.rc 31*7c3a3028SDaniel Henrique Barboza. ./common.filter 32*7c3a3028SDaniel Henrique Barboza. ./common.qemu 33*7c3a3028SDaniel Henrique Barboza 34*7c3a3028SDaniel Henrique Barboza_cleanup() 35*7c3a3028SDaniel Henrique Barboza{ 36*7c3a3028SDaniel Henrique Barboza rm -f "${MIG_SOCKET}" 37*7c3a3028SDaniel Henrique Barboza _cleanup_test_img 38*7c3a3028SDaniel Henrique Barboza _cleanup_qemu 39*7c3a3028SDaniel Henrique Barboza} 40*7c3a3028SDaniel Henrique Barbozatrap "_cleanup; exit \$status" 0 1 2 3 15 41*7c3a3028SDaniel Henrique Barboza 42*7c3a3028SDaniel Henrique Barboza_supported_fmt qcow2 43*7c3a3028SDaniel Henrique Barboza_supported_proto generic 44*7c3a3028SDaniel Henrique Barboza_supported_os Linux 45*7c3a3028SDaniel Henrique Barboza 46*7c3a3028SDaniel Henrique Barboza# Internal snapshots are (currently) impossible with refcount_bits=1 47*7c3a3028SDaniel Henrique Barboza# This was taken from test 080 48*7c3a3028SDaniel Henrique Barboza_unsupported_imgopts 'refcount_bits=1[^0-9]' 49*7c3a3028SDaniel Henrique Barboza 50*7c3a3028SDaniel Henrique Barbozasize=64M 51*7c3a3028SDaniel Henrique Barboza_make_test_img $size 52*7c3a3028SDaniel Henrique Barboza 53*7c3a3028SDaniel Henrique Barbozaecho 54*7c3a3028SDaniel Henrique Barbozaecho === Starting VMs === 55*7c3a3028SDaniel Henrique Barbozaecho 56*7c3a3028SDaniel Henrique Barboza 57*7c3a3028SDaniel Henrique Barbozaqemu_comm_method="monitor" 58*7c3a3028SDaniel Henrique Barboza 59*7c3a3028SDaniel Henrique Barbozaif [ "$IMGOPTSSYNTAX" = "true" ]; then 60*7c3a3028SDaniel Henrique Barboza _launch_qemu \ 61*7c3a3028SDaniel Henrique Barboza -drive "${TEST_IMG}",cache=${CACHEMODE},id=disk 62*7c3a3028SDaniel Henrique Barbozaelse 63*7c3a3028SDaniel Henrique Barboza _launch_qemu \ 64*7c3a3028SDaniel Henrique Barboza -drive file="${TEST_IMG}",cache=${CACHEMODE},driver=$IMGFMT,id=disk 65*7c3a3028SDaniel Henrique Barbozafi 66*7c3a3028SDaniel Henrique Barbozasrc=$QEMU_HANDLE 67*7c3a3028SDaniel Henrique Barboza 68*7c3a3028SDaniel Henrique Barbozaif [ "$IMGOPTSSYNTAX" = "true" ]; then 69*7c3a3028SDaniel Henrique Barboza _launch_qemu \ 70*7c3a3028SDaniel Henrique Barboza -drive "${TEST_IMG}",cache=${CACHEMODE},id=disk \ 71*7c3a3028SDaniel Henrique Barboza -incoming "unix:${MIG_SOCKET}" 72*7c3a3028SDaniel Henrique Barbozaelse 73*7c3a3028SDaniel Henrique Barboza _launch_qemu \ 74*7c3a3028SDaniel Henrique Barboza -drive file="${TEST_IMG}",cache=${CACHEMODE},driver=$IMGFMT,id=disk \ 75*7c3a3028SDaniel Henrique Barboza -incoming "unix:${MIG_SOCKET}" 76*7c3a3028SDaniel Henrique Barbozafi 77*7c3a3028SDaniel Henrique Barbozadest=$QEMU_HANDLE 78*7c3a3028SDaniel Henrique Barboza 79*7c3a3028SDaniel Henrique Barbozaecho 80*7c3a3028SDaniel Henrique Barbozaecho === Set \'migrate_set_capability postcopy-ram on\' and migrate === 81*7c3a3028SDaniel Henrique Barbozaecho 82*7c3a3028SDaniel Henrique Barboza 83*7c3a3028SDaniel Henrique Barbozasilent=yes 84*7c3a3028SDaniel Henrique Barboza_send_qemu_cmd $dest 'migrate_set_capability postcopy-ram on' "(qemu)" 85*7c3a3028SDaniel Henrique Barboza_send_qemu_cmd $src 'migrate_set_capability postcopy-ram on' "(qemu)" 86*7c3a3028SDaniel Henrique Barboza_send_qemu_cmd $src "migrate -d unix:${MIG_SOCKET}" "(qemu)" 87*7c3a3028SDaniel Henrique Barboza 88*7c3a3028SDaniel Henrique BarbozaQEMU_COMM_TIMEOUT=1 qemu_cmd_repeat=10 silent=yes \ 89*7c3a3028SDaniel Henrique Barboza _send_qemu_cmd $src "info migrate" "completed\|failed" 90*7c3a3028SDaniel Henrique Barbozasilent=yes _send_qemu_cmd $src "" "(qemu)" 91*7c3a3028SDaniel Henrique Barboza 92*7c3a3028SDaniel Henrique Barbozaecho 93*7c3a3028SDaniel Henrique Barbozaecho === Check if migration was successful === 94*7c3a3028SDaniel Henrique Barbozaecho 95*7c3a3028SDaniel Henrique Barboza 96*7c3a3028SDaniel Henrique BarbozaQEMU_COMM_TIMEOUT=1 silent=yes \ 97*7c3a3028SDaniel Henrique Barboza _send_qemu_cmd $src "info migrate" "completed" 98*7c3a3028SDaniel Henrique Barbozasilent=yes _send_qemu_cmd $src "" "(qemu)" 99*7c3a3028SDaniel Henrique Barboza 100*7c3a3028SDaniel Henrique Barbozaecho 101*7c3a3028SDaniel Henrique Barbozaecho === On destination, execute savevm and loadvm === 102*7c3a3028SDaniel Henrique Barbozaecho 103*7c3a3028SDaniel Henrique Barboza 104*7c3a3028SDaniel Henrique Barbozasilent= 105*7c3a3028SDaniel Henrique Barboza_send_qemu_cmd $dest 'savevm state1' "(qemu)" 106*7c3a3028SDaniel Henrique Barboza_send_qemu_cmd $dest 'loadvm state1' "(qemu)" 107*7c3a3028SDaniel Henrique Barboza 108*7c3a3028SDaniel Henrique Barbozaecho 109*7c3a3028SDaniel Henrique Barbozaecho === Shut down and check image === 110*7c3a3028SDaniel Henrique Barbozaecho 111*7c3a3028SDaniel Henrique Barboza 112*7c3a3028SDaniel Henrique Barboza_send_qemu_cmd $src 'quit' "" 113*7c3a3028SDaniel Henrique Barboza_send_qemu_cmd $dest 'quit' "" 114*7c3a3028SDaniel Henrique Barbozawait=1 _cleanup_qemu 115*7c3a3028SDaniel Henrique Barboza 116*7c3a3028SDaniel Henrique Barboza_check_test_img 117*7c3a3028SDaniel Henrique Barboza 118*7c3a3028SDaniel Henrique Barboza# success, all done 119*7c3a3028SDaniel Henrique Barbozaecho "*** done" 120*7c3a3028SDaniel Henrique Barbozastatus=0 121