1*b2e10493SAlexandre Derumier#!/bin/bash 2*b2e10493SAlexandre Derumier# 3*b2e10493SAlexandre Derumier# test of qemu-img convert -n - convert without creation 4*b2e10493SAlexandre Derumier# 5*b2e10493SAlexandre Derumier# Copyright (C) 2009 Red Hat, Inc. 6*b2e10493SAlexandre Derumier# Copyright (C) 2013 Alex Bligh (alex@alex.org.uk) 7*b2e10493SAlexandre Derumier# 8*b2e10493SAlexandre Derumier# This program is free software; you can redistribute it and/or modify 9*b2e10493SAlexandre Derumier# it under the terms of the GNU General Public License as published by 10*b2e10493SAlexandre Derumier# the Free Software Foundation; either version 2 of the License, or 11*b2e10493SAlexandre Derumier# (at your option) any later version. 12*b2e10493SAlexandre Derumier# 13*b2e10493SAlexandre Derumier# This program is distributed in the hope that it will be useful, 14*b2e10493SAlexandre Derumier# but WITHOUT ANY WARRANTY; without even the implied warranty of 15*b2e10493SAlexandre Derumier# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16*b2e10493SAlexandre Derumier# GNU General Public License for more details. 17*b2e10493SAlexandre Derumier# 18*b2e10493SAlexandre Derumier# You should have received a copy of the GNU General Public License 19*b2e10493SAlexandre Derumier# along with this program. If not, see <http://www.gnu.org/licenses/>. 20*b2e10493SAlexandre Derumier# 21*b2e10493SAlexandre Derumier 22*b2e10493SAlexandre Derumier# creator 23*b2e10493SAlexandre Derumierowner=alex@alex.org.uk 24*b2e10493SAlexandre Derumier 25*b2e10493SAlexandre Derumierseq=`basename $0` 26*b2e10493SAlexandre Derumierecho "QA output created by $seq" 27*b2e10493SAlexandre Derumier 28*b2e10493SAlexandre Derumierhere=`pwd` 29*b2e10493SAlexandre Derumiertmp=/tmp/$$ 30*b2e10493SAlexandre Derumierstatus=1 # failure is the default! 31*b2e10493SAlexandre Derumier 32*b2e10493SAlexandre Derumier_cleanup() 33*b2e10493SAlexandre Derumier{ 34*b2e10493SAlexandre Derumier _cleanup_test_img 35*b2e10493SAlexandre Derumier rm -f $TEST_IMG.orig $TEST_IMG.raw $TEST_IMG.raw2 36*b2e10493SAlexandre Derumier} 37*b2e10493SAlexandre Derumiertrap "_cleanup; exit \$status" 0 1 2 3 15 38*b2e10493SAlexandre Derumier 39*b2e10493SAlexandre Derumier# get standard environment, filters and checks 40*b2e10493SAlexandre Derumier. ./common.rc 41*b2e10493SAlexandre Derumier. ./common.filter 42*b2e10493SAlexandre Derumier. ./common.pattern 43*b2e10493SAlexandre Derumier 44*b2e10493SAlexandre Derumier_supported_fmt qcow qcow2 vmdk qed raw 45*b2e10493SAlexandre Derumier_supported_proto generic 46*b2e10493SAlexandre Derumier_supported_os Linux 47*b2e10493SAlexandre Derumier 48*b2e10493SAlexandre Derumier_make_test_img 4M 49*b2e10493SAlexandre Derumier 50*b2e10493SAlexandre Derumierecho "== Testing conversion with -n fails with no target file ==" 51*b2e10493SAlexandre Derumier# check .orig file does not exist 52*b2e10493SAlexandre Derumierrm -f $TEST_IMG.orig 53*b2e10493SAlexandre Derumierif $QEMU_IMG convert -f $IMGFMT -O $IMGFMT -n $TEST_IMG $TEST_IMG.orig >/dev/null 2>&1; then 54*b2e10493SAlexandre Derumier exit 1 55*b2e10493SAlexandre Derumierfi 56*b2e10493SAlexandre Derumier 57*b2e10493SAlexandre Derumierecho "== Testing conversion with -n succeeds with a target file ==" 58*b2e10493SAlexandre Derumierrm -f $TEST_IMG.orig 59*b2e10493SAlexandre Derumiercp $TEST_IMG $TEST_IMG.orig 60*b2e10493SAlexandre Derumierif ! $QEMU_IMG convert -f $IMGFMT -O $IMGFMT -n $TEST_IMG $TEST_IMG.orig ; then 61*b2e10493SAlexandre Derumier exit 1 62*b2e10493SAlexandre Derumierfi 63*b2e10493SAlexandre Derumier 64*b2e10493SAlexandre Derumierecho "== Testing conversion to raw is the same after conversion with -n ==" 65*b2e10493SAlexandre Derumier# compare the raw files 66*b2e10493SAlexandre Derumierif ! $QEMU_IMG convert -f $IMGFMT -O raw $TEST_IMG $TEST_IMG.raw1 ; then 67*b2e10493SAlexandre Derumier exit 1 68*b2e10493SAlexandre Derumierfi 69*b2e10493SAlexandre Derumier 70*b2e10493SAlexandre Derumierif ! $QEMU_IMG convert -f $IMGFMT -O raw $TEST_IMG.orig $TEST_IMG.raw2 ; then 71*b2e10493SAlexandre Derumier exit 1 72*b2e10493SAlexandre Derumierfi 73*b2e10493SAlexandre Derumier 74*b2e10493SAlexandre Derumierif ! cmp $TEST_IMG.raw1 $TEST_IMG.raw2 ; then 75*b2e10493SAlexandre Derumier exit 1 76*b2e10493SAlexandre Derumierfi 77*b2e10493SAlexandre Derumier 78*b2e10493SAlexandre Derumierecho "== Testing conversion back to original format ==" 79*b2e10493SAlexandre Derumierif ! $QEMU_IMG convert -f raw -O $IMGFMT -n $TEST_IMG.raw2 $TEST_IMG ; then 80*b2e10493SAlexandre Derumier exit 1 81*b2e10493SAlexandre Derumierfi 82*b2e10493SAlexandre Derumier_check_test_img 83*b2e10493SAlexandre Derumier 84*b2e10493SAlexandre Derumierecho "== Testing conversion to a smaller file fails ==" 85*b2e10493SAlexandre Derumierrm -f $TEST_IMG.orig 86*b2e10493SAlexandre Derumiermv $TEST_IMG $TEST_IMG.orig 87*b2e10493SAlexandre Derumier_make_test_img 2M 88*b2e10493SAlexandre Derumierif $QEMU_IMG convert -f $IMGFMT -O $IMGFMT -n $TEST_IMG.orig $TEST_IMG >/dev/null 2>&1; then 89*b2e10493SAlexandre Derumier exit 1 90*b2e10493SAlexandre Derumierfi 91*b2e10493SAlexandre Derumier 92*b2e10493SAlexandre Derumierrm -f $TEST_IMG.orig $TEST_IMG.raw $TEST_IMG.raw2 93*b2e10493SAlexandre Derumier 94*b2e10493SAlexandre Derumierecho "*** done" 95*b2e10493SAlexandre Derumierrm -f $seq.full 96*b2e10493SAlexandre Derumierstatus=0 97*b2e10493SAlexandre Derumierexit 0 98