#!/bin/bash

set -ex
. ./functions

V=2
if [ -f /sys/module/ploop/parameters/large_disk_support ]; then
	SIZENEW=60485760000
else
	SIZENEW=2147482624
fi

while [ "${#}" -gt 0 ]; do
case "${1}" in
	"-v")
		V=${2}
		shift
		shift
		;;
	*)
		shift
		;;
	esac
done

test_cleanup

ploop init -s 10G $TEST_IMAGE >>$TEST_LOG 2>&1
dd if=/dev/zero of=$TEST_STORAGE/data bs=4K count=100 >>$TEST_LOG 2>&1
dd if=/dev/urandom of=$TEST_STORAGE/data bs=4K count=100 seek=100 >>$TEST_LOG 2>&1
ploop mount -d /dev/ploop0 -m $TEST_MNT $TEST_DDXML >>$TEST_LOG 2>&1
for ((i=0; i<1000; i++)); do
	dd if=$TEST_STORAGE/data of=$TEST_MNT/$i bs=1k >>$TEST_LOG 2>&1
done
ploop snapshot  $TEST_DDXML >>$TEST_LOG 2>&1
ploop umount -d /dev/ploop0 -m $TEST_MNT $TEST_DDXML >>$TEST_LOG 2>&1
rsync --sparse ${TEST_IMAGE}* $TEST_STORAGE/s/
rm -f ${TEST_IMAGE}*
mv -f $TEST_STORAGE/s/* $TEST_STORAGE/
rmdir -f ${TEST_IMAGE}/s
ploop mount -d /dev/ploop0 -m $TEST_MNT $TEST_DDXML >>$TEST_LOG 2>&1
for ((i=0; i<1000; i++)); do
	if ! cmp $TEST_STORAGE/data $TEST_MNT/$i; then
		echo "FAILED cmp $TEST_STORAGE/data $TEST_MNT/$i  mismatch"
		exit 1
	fi
done
ploop umount $TEST_DDXML >>$TEST_LOG 2>&1
test_cleanup
echo "FINISHED [OK]"
