#!/usr/bin/env bash
# group: quick
#
# qemu-img measure tests for LUKS images
#
# Copyright (C) 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=stefanha@redhat.com

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

status=1    # failure is the default!

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

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

_supported_fmt luks
_supported_proto file
_supported_os Linux

SECRET=secret,id=sec0,data=passphrase

echo "== measure 1G image file =="
echo

$QEMU_IMG measure --object "$SECRET" \
	          -O "$IMGFMT" \
		  -o key-secret=sec0,iter-time=10 \
		  --size 1G

echo
echo "== create 1G image file (size should be no greater than measured) =="
echo

_make_test_img 1G
stat -c "image file size in bytes: %s" "$TEST_IMG_FILE"

echo
echo "== modified 1G image file (size should be no greater than measured) =="
echo

$QEMU_IO --object "$SECRET" --image-opts "$TEST_IMG" -c "write -P 0x51 0x10000 0x400" | _filter_qemu_io | _filter_testdir
stat -c "image file size in bytes: %s" "$TEST_IMG_FILE"

echo
echo "== measure preallocation=falloc 1G image file =="
echo

$QEMU_IMG measure --object "$SECRET" \
	          -O "$IMGFMT" \
		  -o key-secret=sec0,iter-time=10,preallocation=falloc \
		  --size 1G

echo
echo "== measure with input image file =="
echo

IMGFMT=raw IMGKEYSECRET= IMGOPTS= _make_test_img 1G | _filter_imgfmt
QEMU_IO_OPTIONS= IMGOPTSSYNTAX= $QEMU_IO -f raw -c "write -P 0x51 0x10000 0x400" "$TEST_IMG_FILE" | _filter_qemu_io | _filter_testdir
$QEMU_IMG measure --object "$SECRET" \
	          -O "$IMGFMT" \
		  -o key-secret=sec0,iter-time=10 \
		  -f raw \
		  "$TEST_IMG_FILE"

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