1*d1fde4adSJeff Cody#!/bin/bash 2*d1fde4adSJeff Cody# 3*d1fde4adSJeff Cody# Test for commit of larger active layer 4*d1fde4adSJeff Cody# 5*d1fde4adSJeff Cody# This tests live snapshots of images on a running QEMU instance, using 6*d1fde4adSJeff Cody# QMP commands. Both single disk snapshots, and transactional group 7*d1fde4adSJeff Cody# snapshots are performed. 8*d1fde4adSJeff Cody# 9*d1fde4adSJeff Cody# Copyright (C) 2014 Red Hat, Inc. 10*d1fde4adSJeff Cody# 11*d1fde4adSJeff Cody# This program is free software; you can redistribute it and/or modify 12*d1fde4adSJeff Cody# it under the terms of the GNU General Public License as published by 13*d1fde4adSJeff Cody# the Free Software Foundation; either version 2 of the License, or 14*d1fde4adSJeff Cody# (at your option) any later version. 15*d1fde4adSJeff Cody# 16*d1fde4adSJeff Cody# This program is distributed in the hope that it will be useful, 17*d1fde4adSJeff Cody# but WITHOUT ANY WARRANTY; without even the implied warranty of 18*d1fde4adSJeff Cody# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*d1fde4adSJeff Cody# GNU General Public License for more details. 20*d1fde4adSJeff Cody# 21*d1fde4adSJeff Cody# You should have received a copy of the GNU General Public License 22*d1fde4adSJeff Cody# along with this program. If not, see <http://www.gnu.org/licenses/>. 23*d1fde4adSJeff Cody# 24*d1fde4adSJeff Cody# creator 25*d1fde4adSJeff Codyowner=jcody@redhat.com 26*d1fde4adSJeff Cody 27*d1fde4adSJeff Codyseq=`basename $0` 28*d1fde4adSJeff Codyecho "QA output created by $seq" 29*d1fde4adSJeff Cody 30*d1fde4adSJeff Codyhere=`pwd` 31*d1fde4adSJeff Codystatus=1 # failure is the default! 32*d1fde4adSJeff Cody 33*d1fde4adSJeff Cody_cleanup() 34*d1fde4adSJeff Cody{ 35*d1fde4adSJeff Cody _cleanup_qemu 36*d1fde4adSJeff Cody rm -f "${TEST_IMG}.base" "${TEST_IMG}.snp1" 37*d1fde4adSJeff Cody _cleanup_test_img 38*d1fde4adSJeff Cody} 39*d1fde4adSJeff Codytrap "_cleanup; exit \$status" 0 1 2 3 15 40*d1fde4adSJeff Cody 41*d1fde4adSJeff Cody# get standard environment, filters and checks 42*d1fde4adSJeff Cody. ./common.rc 43*d1fde4adSJeff Cody. ./common.filter 44*d1fde4adSJeff Cody. ./common.qemu 45*d1fde4adSJeff Cody 46*d1fde4adSJeff Cody_supported_fmt qcow2 47*d1fde4adSJeff Cody_supported_proto file 48*d1fde4adSJeff Cody_supported_os Linux 49*d1fde4adSJeff Cody 50*d1fde4adSJeff Codysize_smaller=5M 51*d1fde4adSJeff Codysize_larger=100M 52*d1fde4adSJeff Cody 53*d1fde4adSJeff Cody_make_test_img $size_smaller 54*d1fde4adSJeff Codymv "${TEST_IMG}" "${TEST_IMG}.base" 55*d1fde4adSJeff Cody 56*d1fde4adSJeff Cody_make_test_img -b "${TEST_IMG}.base" $size_larger 57*d1fde4adSJeff Codymv "${TEST_IMG}" "${TEST_IMG}.snp1" 58*d1fde4adSJeff Cody 59*d1fde4adSJeff Cody_make_test_img -b "${TEST_IMG}.snp1" $size_larger 60*d1fde4adSJeff Cody 61*d1fde4adSJeff Codyecho 62*d1fde4adSJeff Codyecho "=== Base image info before commit and resize ===" 63*d1fde4adSJeff Cody$QEMU_IMG info "${TEST_IMG}.base" | _filter_testdir 64*d1fde4adSJeff Cody 65*d1fde4adSJeff Codyecho 66*d1fde4adSJeff Codyecho === Running QEMU Live Commit Test === 67*d1fde4adSJeff Codyecho 68*d1fde4adSJeff Cody 69*d1fde4adSJeff Codyqemu_comm_method="qmp" 70*d1fde4adSJeff Cody_launch_qemu -drive file="${TEST_IMG}",if=virtio,id=test 71*d1fde4adSJeff Codyh=$QEMU_HANDLE 72*d1fde4adSJeff Cody 73*d1fde4adSJeff Cody_send_qemu_cmd $h "{ 'execute': 'qmp_capabilities' }" "return" 74*d1fde4adSJeff Cody 75*d1fde4adSJeff Cody_send_qemu_cmd $h "{ 'execute': 'block-commit', 76*d1fde4adSJeff Cody 'arguments': { 'device': 'test', 77*d1fde4adSJeff Cody 'top': '"${TEST_IMG}.snp1"' } }" "BLOCK_JOB_COMPLETED" 78*d1fde4adSJeff Cody 79*d1fde4adSJeff Codyecho 80*d1fde4adSJeff Codyecho "=== Base image info after commit and resize ===" 81*d1fde4adSJeff Cody$QEMU_IMG info "${TEST_IMG}.base" | _filter_testdir 82*d1fde4adSJeff Cody 83*d1fde4adSJeff Cody# success, all done 84*d1fde4adSJeff Codyecho "*** done" 85*d1fde4adSJeff Codyrm -f $seq.full 86*d1fde4adSJeff Codystatus=0 87