#!/bin/bash # # Test for commit of larger active layer # # This tests live snapshots of images on a running QEMU instance, using # QMP commands. Both single disk snapshots, and transactional group # snapshots are performed. # # 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 . # # creator owner=jcody@redhat.com seq=`basename $0` echo "QA output created by $seq" here=`pwd` status=1 # failure is the default! _cleanup() { _cleanup_qemu rm -f "${TEST_IMG}.base" "${TEST_IMG}.snp1" _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 size_smaller=5M size_larger=100M TEST_IMG="$TEST_IMG.base" _make_test_img $size_smaller TEST_IMG="$TEST_IMG.snp1" _make_test_img -b "$TEST_IMG.base" $size_larger _make_test_img -b "${TEST_IMG}.snp1" $size_larger echo echo "=== Base image info before commit and resize ===" TEST_IMG="${TEST_IMG}.base" _img_info echo echo === Running QEMU Live Commit Test === echo qemu_comm_method="qmp" _launch_qemu -drive file="${TEST_IMG}",if=virtio,id=test h=$QEMU_HANDLE _send_qemu_cmd $h "{ 'execute': 'qmp_capabilities' }" "return" _send_qemu_cmd $h "{ 'execute': 'block-commit', 'arguments': { 'device': 'test', 'top': '"${TEST_IMG}.snp1"' } }" "BLOCK_JOB_COMPLETED" echo echo "=== Base image info after commit and resize ===" TEST_IMG="${TEST_IMG}.base" _img_info # success, all done echo "*** done" rm -f $seq.full status=0