#!/bin/bash
#
# qcow2 pattern test with various cluster sizes
#
# Copyright (C) 2009 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 <http://www.gnu.org/licenses/>.
#

# creator
owner=kwolf@redhat.com

seq=`basename $0`
echo "QA output created by $seq"

here=`pwd`
tmp=/tmp/$$
status=1	# failure is the default!

_cleanup()
{
	_cleanup_test_img
}
trap "_cleanup; exit \$status" 0 1 2 3 15

# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.pattern

# much of this could be generic for any format supporting compression.
_supported_fmt qcow qcow2
_supported_proto file
_supported_os Linux

TEST_OFFSETS="0 4294967296"
TEST_OPS="writev read write readv"

# Can't use 512 byte clusters, the tests use cluster halves
CLUSTER_SIZES="1024 4096 16384 65536"

for CLUSTER_SIZE in $CLUSTER_SIZES; do

    echo "Creating new image; cluster size: $CLUSTER_SIZE"
    echo

    _make_test_img 8G

    echo "Testing empty image"
    echo

    for offset in $TEST_OFFSETS; do
        echo "At offset $offset:"
        for op in $TEST_OPS; do
            io_test $op $offset $CLUSTER_SIZE 3
        done
        _check_test_img
    done

    echo "Compressing image"
    echo

    mv "$TEST_IMG" "$TEST_IMG.orig"
    $QEMU_IMG convert -f $IMGFMT -O $IMGFMT -c "$TEST_IMG.orig" "$TEST_IMG"

    echo "Testing compressed image"
    echo

    for offset in $TEST_OFFSETS; do
        echo "With offset $offset:"
        for op in read readv; do
            io_test $op $offset $CLUSTER_SIZE 3
        done
        _check_test_img
    done

    echo "Testing compressed image with odd offsets"
    echo
    for offset in $TEST_OFFSETS; do
        # Some odd offset (1 sector), so tests will write to areas occupied partly
        # by old (compressed) data and empty clusters
        offset=$((offset + 512))
        echo "With offset $offset:"
        for op in $TEST_OPS; do
            io_test $op $offset $CLUSTER_SIZE 3
        done
        _check_test_img
    done

    echo "Creating another new image"
    echo

    _make_test_img 8G

    echo "More complex patterns"
    echo

    for offset in $TEST_OFFSETS; do
        echo test2: With offset $offset
        io_test2 $offset $CLUSTER_SIZE 4
        _check_test_img
    done

done

# success, all done
echo "*** done"
rm -f $seq.full
status=0
