121 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			121 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | #!/bin/bash | ||
|  | # | ||
|  | # Test savevm and loadvm after live migration with postcopy flag | ||
|  | # | ||
|  | # Copyright (C) 2017, IBM Corporation. | ||
|  | # | ||
|  | # This file is derived from tests/qemu-iotests/181 by Kevin Wolf | ||
|  | # | ||
|  | # 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/>. | ||
|  | 
 | ||
|  | seq=`basename $0` | ||
|  | echo "QA output created by $seq" | ||
|  | 
 | ||
|  | status=1	# failure is the default! | ||
|  | 
 | ||
|  | MIG_SOCKET="${TEST_DIR}/migrate" | ||
|  | 
 | ||
|  | # get standard environment, filters and checks | ||
|  | . ./common.rc | ||
|  | . ./common.filter | ||
|  | . ./common.qemu | ||
|  | 
 | ||
|  | _cleanup() | ||
|  | { | ||
|  |     rm -f "${MIG_SOCKET}" | ||
|  |     _cleanup_test_img | ||
|  |     _cleanup_qemu | ||
|  | } | ||
|  | trap "_cleanup; exit \$status" 0 1 2 3 15 | ||
|  | 
 | ||
|  | _supported_fmt qcow2 | ||
|  | _supported_proto generic | ||
|  | _supported_os Linux | ||
|  | 
 | ||
|  | # Internal snapshots are (currently) impossible with refcount_bits=1 | ||
|  | # This was taken from test 080 | ||
|  | _unsupported_imgopts 'refcount_bits=1[^0-9]' | ||
|  | 
 | ||
|  | size=64M | ||
|  | _make_test_img $size | ||
|  | 
 | ||
|  | echo | ||
|  | echo === Starting VMs === | ||
|  | echo | ||
|  | 
 | ||
|  | qemu_comm_method="monitor" | ||
|  | 
 | ||
|  | if [ "$IMGOPTSSYNTAX" = "true" ]; then | ||
|  |     _launch_qemu \ | ||
|  |         -drive "${TEST_IMG}",cache=${CACHEMODE},id=disk | ||
|  | else | ||
|  |     _launch_qemu \ | ||
|  |         -drive file="${TEST_IMG}",cache=${CACHEMODE},driver=$IMGFMT,id=disk | ||
|  | fi | ||
|  | src=$QEMU_HANDLE | ||
|  | 
 | ||
|  | if [ "$IMGOPTSSYNTAX" = "true" ]; then | ||
|  |     _launch_qemu \ | ||
|  |         -drive "${TEST_IMG}",cache=${CACHEMODE},id=disk \ | ||
|  |         -incoming "unix:${MIG_SOCKET}" | ||
|  | else | ||
|  |     _launch_qemu \ | ||
|  |         -drive file="${TEST_IMG}",cache=${CACHEMODE},driver=$IMGFMT,id=disk \ | ||
|  |         -incoming "unix:${MIG_SOCKET}" | ||
|  | fi | ||
|  | dest=$QEMU_HANDLE | ||
|  | 
 | ||
|  | echo | ||
|  | echo === Set \'migrate_set_capability postcopy-ram on\' and migrate === | ||
|  | echo | ||
|  | 
 | ||
|  | silent=yes | ||
|  | _send_qemu_cmd $dest 'migrate_set_capability postcopy-ram on' "(qemu)" | ||
|  | _send_qemu_cmd $src 'migrate_set_capability postcopy-ram on' "(qemu)" | ||
|  | _send_qemu_cmd $src "migrate -d unix:${MIG_SOCKET}" "(qemu)" | ||
|  | 
 | ||
|  | QEMU_COMM_TIMEOUT=1 qemu_cmd_repeat=10 silent=yes \ | ||
|  |     _send_qemu_cmd $src "info migrate" "completed\|failed" | ||
|  | silent=yes _send_qemu_cmd $src "" "(qemu)" | ||
|  | 
 | ||
|  | echo | ||
|  | echo === Check if migration was successful === | ||
|  | echo | ||
|  | 
 | ||
|  | QEMU_COMM_TIMEOUT=1 silent=yes \ | ||
|  |     _send_qemu_cmd $src "info migrate" "completed" | ||
|  | silent=yes _send_qemu_cmd $src "" "(qemu)" | ||
|  | 
 | ||
|  | echo | ||
|  | echo === On destination, execute savevm and loadvm === | ||
|  | echo | ||
|  | 
 | ||
|  | silent= | ||
|  | _send_qemu_cmd $dest 'savevm state1' "(qemu)" | ||
|  | _send_qemu_cmd $dest 'loadvm state1' "(qemu)" | ||
|  | 
 | ||
|  | echo | ||
|  | echo === Shut down and check image === | ||
|  | echo | ||
|  | 
 | ||
|  | _send_qemu_cmd $src 'quit' "" | ||
|  | _send_qemu_cmd $dest 'quit' "" | ||
|  | wait=1 _cleanup_qemu | ||
|  | 
 | ||
|  | _check_test_img | ||
|  | 
 | ||
|  | # success, all done | ||
|  | echo "*** done" | ||
|  | status=0 |