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