111a82d14SPhilippe Mathieu-Daudé#!/usr/bin/env bash 2*9dd003a9SVladimir Sementsov-Ogievskiy# group: rw migration quick 37c3a3028SDaniel Henrique Barboza# 47c3a3028SDaniel Henrique Barboza# Test savevm and loadvm after live migration with postcopy flag 57c3a3028SDaniel Henrique Barboza# 67c3a3028SDaniel Henrique Barboza# Copyright (C) 2017, IBM Corporation. 77c3a3028SDaniel Henrique Barboza# 87c3a3028SDaniel Henrique Barboza# This file is derived from tests/qemu-iotests/181 by Kevin Wolf 97c3a3028SDaniel Henrique Barboza# 107c3a3028SDaniel Henrique Barboza# This program is free software; you can redistribute it and/or modify 117c3a3028SDaniel Henrique Barboza# it under the terms of the GNU General Public License as published by 127c3a3028SDaniel Henrique Barboza# the Free Software Foundation; either version 2 of the License, or 137c3a3028SDaniel Henrique Barboza# (at your option) any later version. 147c3a3028SDaniel Henrique Barboza# 157c3a3028SDaniel Henrique Barboza# This program is distributed in the hope that it will be useful, 167c3a3028SDaniel Henrique Barboza# but WITHOUT ANY WARRANTY; without even the implied warranty of 177c3a3028SDaniel Henrique Barboza# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 187c3a3028SDaniel Henrique Barboza# GNU General Public License for more details. 197c3a3028SDaniel Henrique Barboza# 207c3a3028SDaniel Henrique Barboza# You should have received a copy of the GNU General Public License 217c3a3028SDaniel Henrique Barboza# along with this program. If not, see <http://www.gnu.org/licenses/>. 227c3a3028SDaniel Henrique Barboza 237c3a3028SDaniel Henrique Barbozaseq=`basename $0` 247c3a3028SDaniel Henrique Barbozaecho "QA output created by $seq" 257c3a3028SDaniel Henrique Barboza 267c3a3028SDaniel Henrique Barbozastatus=1 # failure is the default! 277c3a3028SDaniel Henrique Barboza 282b4af465SMax ReitzMIG_SOCKET="${SOCK_DIR}/migrate" 297c3a3028SDaniel Henrique Barboza 307c3a3028SDaniel Henrique Barboza# get standard environment, filters and checks 317c3a3028SDaniel Henrique Barboza. ./common.rc 327c3a3028SDaniel Henrique Barboza. ./common.filter 337c3a3028SDaniel Henrique Barboza. ./common.qemu 347c3a3028SDaniel Henrique Barboza 357c3a3028SDaniel Henrique Barboza_cleanup() 367c3a3028SDaniel Henrique Barboza{ 377c3a3028SDaniel Henrique Barboza rm -f "${MIG_SOCKET}" 387c3a3028SDaniel Henrique Barboza _cleanup_test_img 397c3a3028SDaniel Henrique Barboza _cleanup_qemu 407c3a3028SDaniel Henrique Barboza} 417c3a3028SDaniel Henrique Barbozatrap "_cleanup; exit \$status" 0 1 2 3 15 427c3a3028SDaniel Henrique Barboza 437c3a3028SDaniel Henrique Barboza_supported_fmt qcow2 447c3a3028SDaniel Henrique Barboza_supported_proto generic 457c3a3028SDaniel Henrique Barboza_supported_os Linux 467c3a3028SDaniel Henrique Barboza 473be2024aSMax Reitz# Internal snapshots are (currently) impossible with refcount_bits=1, 483be2024aSMax Reitz# and generally impossible with external data files 493be2024aSMax Reitz_unsupported_imgopts 'refcount_bits=1[^0-9]' data_file 507c3a3028SDaniel Henrique Barboza 517c3a3028SDaniel Henrique Barbozasize=64M 527c3a3028SDaniel Henrique Barboza_make_test_img $size 537c3a3028SDaniel Henrique Barboza 547c3a3028SDaniel Henrique Barbozaecho 557c3a3028SDaniel Henrique Barbozaecho === Starting VMs === 567c3a3028SDaniel Henrique Barbozaecho 577c3a3028SDaniel Henrique Barboza 587c3a3028SDaniel Henrique Barbozaqemu_comm_method="monitor" 597c3a3028SDaniel Henrique Barboza 607c3a3028SDaniel Henrique Barbozaif [ "$IMGOPTSSYNTAX" = "true" ]; then 617c3a3028SDaniel Henrique Barboza _launch_qemu \ 628dff69b9SAarushi Mehta -drive "${TEST_IMG}",cache=${CACHEMODE},aio=$AIOMODE,id=disk 637c3a3028SDaniel Henrique Barbozaelse 647c3a3028SDaniel Henrique Barboza _launch_qemu \ 658dff69b9SAarushi Mehta -drive file="${TEST_IMG}",cache=${CACHEMODE},aio=$AIOMODE,driver=$IMGFMT,id=disk 667c3a3028SDaniel Henrique Barbozafi 677c3a3028SDaniel Henrique Barbozasrc=$QEMU_HANDLE 687c3a3028SDaniel Henrique Barboza 697c3a3028SDaniel Henrique Barbozaif [ "$IMGOPTSSYNTAX" = "true" ]; then 707c3a3028SDaniel Henrique Barboza _launch_qemu \ 718dff69b9SAarushi Mehta -drive "${TEST_IMG}",cache=${CACHEMODE},aio=$AIOMODE,id=disk \ 727c3a3028SDaniel Henrique Barboza -incoming "unix:${MIG_SOCKET}" 737c3a3028SDaniel Henrique Barbozaelse 747c3a3028SDaniel Henrique Barboza _launch_qemu \ 758dff69b9SAarushi Mehta -drive file="${TEST_IMG}",cache=${CACHEMODE},aio=$AIOMODE,driver=$IMGFMT,id=disk \ 767c3a3028SDaniel Henrique Barboza -incoming "unix:${MIG_SOCKET}" 777c3a3028SDaniel Henrique Barbozafi 787c3a3028SDaniel Henrique Barbozadest=$QEMU_HANDLE 797c3a3028SDaniel Henrique Barboza 807c3a3028SDaniel Henrique Barbozaecho 817c3a3028SDaniel Henrique Barbozaecho === Set \'migrate_set_capability postcopy-ram on\' and migrate === 827c3a3028SDaniel Henrique Barbozaecho 837c3a3028SDaniel Henrique Barboza 847c3a3028SDaniel Henrique Barbozasilent=yes 857c3a3028SDaniel Henrique Barboza_send_qemu_cmd $dest 'migrate_set_capability postcopy-ram on' "(qemu)" 86b05a2225SMax Reitz 87b05a2225SMax Reitzqemu_error_no_exit=yes success_or_failure=yes \ 88b05a2225SMax Reitz _send_qemu_cmd $dest '' "(qemu)" "Postcopy is not supported" 89b05a2225SMax Reitzif [ ${QEMU_STATUS[$dest]} -lt 0 ]; then 90b05a2225SMax Reitz _send_qemu_cmd $dest '' "(qemu)" 91b05a2225SMax Reitz 92b05a2225SMax Reitz _send_qemu_cmd $src 'quit' "" 93b05a2225SMax Reitz _send_qemu_cmd $dest 'quit' "" 94b05a2225SMax Reitz wait=1 _cleanup_qemu 95b05a2225SMax Reitz 96b05a2225SMax Reitz _notrun 'Postcopy is not supported' 97b05a2225SMax Reitzfi 98b05a2225SMax Reitz 997c3a3028SDaniel Henrique Barboza_send_qemu_cmd $src 'migrate_set_capability postcopy-ram on' "(qemu)" 1007c3a3028SDaniel Henrique Barboza_send_qemu_cmd $src "migrate -d unix:${MIG_SOCKET}" "(qemu)" 1017c3a3028SDaniel Henrique Barboza 1027c3a3028SDaniel Henrique BarbozaQEMU_COMM_TIMEOUT=1 qemu_cmd_repeat=10 silent=yes \ 1037c3a3028SDaniel Henrique Barboza _send_qemu_cmd $src "info migrate" "completed\|failed" 1047c3a3028SDaniel Henrique Barbozasilent=yes _send_qemu_cmd $src "" "(qemu)" 1057c3a3028SDaniel Henrique Barboza 1067c3a3028SDaniel Henrique Barbozaecho 1077c3a3028SDaniel Henrique Barbozaecho === Check if migration was successful === 1087c3a3028SDaniel Henrique Barbozaecho 1097c3a3028SDaniel Henrique Barboza 1107c3a3028SDaniel Henrique BarbozaQEMU_COMM_TIMEOUT=1 silent=yes \ 1117c3a3028SDaniel Henrique Barboza _send_qemu_cmd $src "info migrate" "completed" 1127c3a3028SDaniel Henrique Barbozasilent=yes _send_qemu_cmd $src "" "(qemu)" 1137c3a3028SDaniel Henrique Barboza 1147c3a3028SDaniel Henrique Barbozaecho 1157c3a3028SDaniel Henrique Barbozaecho === On destination, execute savevm and loadvm === 1167c3a3028SDaniel Henrique Barbozaecho 1177c3a3028SDaniel Henrique Barboza 1187c3a3028SDaniel Henrique Barbozasilent= 1197c3a3028SDaniel Henrique Barboza_send_qemu_cmd $dest 'savevm state1' "(qemu)" 1207c3a3028SDaniel Henrique Barboza_send_qemu_cmd $dest 'loadvm state1' "(qemu)" 1217c3a3028SDaniel Henrique Barboza 1227c3a3028SDaniel Henrique Barbozaecho 1237c3a3028SDaniel Henrique Barbozaecho === Shut down and check image === 1247c3a3028SDaniel Henrique Barbozaecho 1257c3a3028SDaniel Henrique Barboza 1267c3a3028SDaniel Henrique Barboza_send_qemu_cmd $src 'quit' "" 1277c3a3028SDaniel Henrique Barboza_send_qemu_cmd $dest 'quit' "" 1287c3a3028SDaniel Henrique Barbozawait=1 _cleanup_qemu 1297c3a3028SDaniel Henrique Barboza 1307c3a3028SDaniel Henrique Barboza_check_test_img 1317c3a3028SDaniel Henrique Barboza 1327c3a3028SDaniel Henrique Barboza# success, all done 1337c3a3028SDaniel Henrique Barbozaecho "*** done" 1347c3a3028SDaniel Henrique Barbozastatus=0 135