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