#!/bin/bash

base=$PWD
dev=$1; shift

export dev base

if [ ! "$dev" ]; then
	echo "Need device to run on."
	exit 1
fi

set -e

# if not file systems specified, use the defaults
[ "$1" ] || set --  reiserfs jfs xfs ext2 ext3 ext4dev btrfs reiser4

mkdir -p $base/results
mkdir -p /mnt/fsbench


for fs do
	echo "Benchmarking $fs ..."
	case $fs in
	  reiserfs|xfs|jfs) mkfsopts="-f" ;;
       	  reiser4) mkfsopts="-y" ;;
	  *) mkfsopts="" ;;
	esac

	/usr/bin/time -p -a -o $base/results/$fs-000-create mkfs.$fs $mkfsopts $dev > /dev/null
	/usr/bin/time -p -a -o $base/results/$fs-000-mount mount $dev /mnt/fsbench
	cd /mnt/fsbench

	for test in $base/tests/*; do
		echo "Running test ${test##*/}: `sed -n 's/^#  *Title:  *//p' $test`"
		/usr/bin/time -p -o $base/results/$fs-${test##*/} bash $test
		sync; sleep 10
	done

	cd $base
	umount /mnt/fsbench
done
