xref: /openbmc/qemu/tests/qemu-iotests/095 (revision d1fde4ad3c22137f8e589e625c21bf2ea7f6ba62)
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