#!/bin/bash

record="$1"

pyver=$(echo "$record" | awk -F'%' ' { print $1 }')
python=$(echo "$record" | awk -F'%' ' { print $2 }')

this_good=True

rm -rf save-dir-"$pyver"

echo "Hello world" > to-be-saved/modified-file

if ! find to-be-saved -name .svn -prune -o -print0 | \
	"$python" ../../backshift \
		--save-directory save-dir-"$pyver" \
		--backup \
		--hostname $(hostname) \
		--subset test \
		--init-savedir > /dev/null 2>&1
then
	echo False
	exit 0
fi

# Give the files we just backed up, some time to age
sleep 30

if ! first_backup_id=$(set -eu; "$python" ../../backshift --save-directory save-dir-"$pyver" --list-backups | \
	tail -1 | \
	sed 's/ .*$//')
then
	echo False
	exit 0
fi

# Our second backup has one less file to worry about
rm -f to-be-saved/modified-file

# Do a new backup, sans "modified-file"
if ! find to-be-saved -name .svn -prune -o -print0 | \
	"$python" ../../backshift \
		--save-directory save-dir-"$pyver" \
		--backup \
		--hostname $(hostname) \
		--subset test > /dev/null 2>&1
then
	echo False
	exit 0
fi

if ! second_backup_id=$(set -eu; "$python" ../../backshift --save-directory save-dir-"$pyver" --list-backups | \
	tail -1 | \
	sed 's/ .*$//')
then
	echo False
	exit 0
fi

# A bit of a hack - tell backshift to remove any chunk/savesetsummary older than 30 seconds.
# Note that this test assumes that the stuff that happens after the "sleep 30" above takes less than
# 30 seconds to execute!  On a very slow machine, that might not be true.
mkdir -p save-dir-"$pyver"/overall
echo 30 > save-dir-"$pyver"/overall/maximum-age

if "$python" ../../backshift --save-directory save-dir-"$pyver" --expire > /dev/tty 2>&1
then
	rm -rf first-restore-dir-"$pyver"
	mkdir -p first-restore-dir-"$pyver"

	rm -rf second-restore-dir-"$pyver"
	mkdir -p second-restore-dir-"$pyver"

	this_good=True

	if "$python" ../../backshift \
		--save-directory save-dir-"$pyver" \
		--produce-tar \
		--backup-id "$first_backup_id" > /dev/null 2>&1
	then
		echo "$0: First backup restore succeeded: That's a bad thing" 1>&2
		this_good=False
	else
		echo "$0: First backup restore failed: That's a good thing" 1>&2
	fi
		
	if "$python" ../../backshift \
		--save-directory save-dir-"$pyver" \
		--produce-tar \
		--backup-id "$second_backup_id" > /dev/null 2>&1
	then
		echo "$0: Second backup restore succeeded: That's a good thing" 1>&2
	else
		echo "$0: Second backup restore failed: That's a bad thing" 1>&2
		this_good=False
	fi
else
	this_good=False
	all_good=False
fi

echo "$this_good"