#!/bin/sh
# do a quick performance test of pseudo
die() {
    printf "%s\n" "$*" >&2
    exit 1
}

doit() (
    cd $dir
    printf "%s\n" "Making test data..."
    time ./makedata
    printf "%s\n" "Timing tar command."
    time sh -c 'tar cf - dir_[0-9] | tar -C new -xf -'
    printf "%s\n" "Timing find command."
    time find new -perm 0100 -exec true {} +
    printf "%s\n" "Timing rm."
    time rm -rf dir_[0-9] new
)

[ -x bin/pseudo ] || die "You need a bin/pseudo to test."
case $# in
0)	dir="perftest.d";;
1)	[ -d "$1" ] || die "Specify an existing directory to test in."
	dir="$1/perftest.d"
	;;
*)	die "Usage: perftest [directory]"
	;;
esac

case `id -u` in
0)	printf "%s\n" "Running test."
	doit
	printf "%s\n" "Done."
	;;
*)	[ -d $dir ] && die "$dir directory already exists, delete it if you're done."
	mkdir $dir
        mkdir $dir/new
	cc -o $dir/makedata makedata.c
	printf "%s\n" "Running performance test (total time at end)"
	time bin/pseudo ./perftest $1
	rm -rf $dir
	rm -f makedata
	;;
esac
