#!/usr/bin/env bash
# group: rw auto quick
#
# qemu-img measure sub-command tests on huge qcow2 files
#
# Copyright (C) 2017-2020 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=eblake@redhat.com

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

status=1    # failure is the default!

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

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

# See 178 for more extensive tests across more formats
_supported_fmt qcow2
_supported_proto file
# compat=0.10 does not support bitmaps
_unsupported_imgopts 'compat=0.10'

echo "== Huge file without bitmaps =="
echo

_make_test_img -o 'cluster_size=2M' 2T

$QEMU_IMG measure -O raw -f qcow2 "$TEST_IMG"
$QEMU_IMG measure -O qcow2 -o cluster_size=64k -f qcow2 "$TEST_IMG"
$QEMU_IMG measure -O qcow2 -o cluster_size=2M -f qcow2 "$TEST_IMG"

echo
echo "== Huge file with bitmaps =="
echo

$QEMU_IMG bitmap --add --granularity 512 -f qcow2 "$TEST_IMG" b1
$QEMU_IMG bitmap --add -g 2M -f qcow2 "$TEST_IMG" b2

# No bitmap without a source
$QEMU_IMG measure -O qcow2 --size 10M
# No bitmap output, since raw does not support it
$QEMU_IMG measure -O raw -f qcow2 "$TEST_IMG"
# No bitmap output, since no bitmaps on raw source. Munge required size, as
# some filesystems store the qcow2 file with less sparseness than others
$QEMU_IMG measure -O qcow2 -f raw "$TEST_IMG" |
    sed '/^required size:/ s/[0-9][0-9]*/SIZE/'
# No bitmap output, since v2 does not support it
$QEMU_IMG measure -O qcow2 -o compat=0.10 -f qcow2 "$TEST_IMG"

# Compute expected output: bitmap clusters + bitmap tables + bitmaps directory
echo
val2T=$((2*1024*1024*1024*1024))
cluster=$((64*1024))
b1clusters=$(( (val2T/512/8 + cluster - 1) / cluster ))
b2clusters=$(( (val2T/2/1024/1024/8 + cluster - 1) / cluster ))
echo expected bitmap $((b1clusters * cluster +
                        (b1clusters * 8 + cluster - 1) / cluster * cluster +
                        b2clusters * cluster +
                        (b2clusters * 8 + cluster - 1) / cluster * cluster +
                        cluster))
$QEMU_IMG measure -O qcow2 -o cluster_size=64k -f qcow2 "$TEST_IMG"

# Compute expected output: bitmap clusters + bitmap tables + bitmaps directory
echo
cluster=$((2*1024*1024))
b1clusters=$(( (val2T/512/8 + cluster - 1) / cluster ))
b2clusters=$(( (val2T/2/1024/1024/8 + cluster - 1) / cluster ))
echo expected bitmap $((b1clusters * cluster +
                        (b1clusters * 8 + cluster - 1) / cluster * cluster +
                        b2clusters * cluster +
                        (b2clusters * 8 + cluster - 1) / cluster * cluster +
                        cluster))
$QEMU_IMG measure --output=json -O qcow2 -o cluster_size=2M -f qcow2 "$TEST_IMG"

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