#!/bin/bash
# This script runs tbench for varying numbers of clients
###SHELLPACK preamble dbench-bench 4.0

SERVER_HOST=127.0.0.1
if [ "$REMOTE_SERVER_HOST" != "" ]; then
        SERVER_HOST=$REMOTE_SERVER_HOST
fi

###SHELLPACK parseargBegin
###SHELLPACK parseargInstall
###SHELLPACK parseargParam --max-clients         TBENCH_MAX_CLIENTS
###SHELLPACK parseargEnd
###SHELLPACK monitor_hooks

install-depends popt-devel
###SHELLPACK check_install_required dbench-${VERSION}
###SHELLPACK init_complete

server_start() {
	echo Starting tbench_srv
	mmtests_activity tserver-$SERVERSIDE_NAME
	monitor_pre_hook $LOGDIR_RESULTS $NR_THREADS
	if [ "$REMOTE_SERVER_HOST" = "" ]; then
		nohup ./bin/tbench_srv 0<&- &>/dev/null &
		sleep 5
	else
		mmtests_server_ctl start --serverside-name $1
	fi
}

server_stop() {
	echo Stopping tbench_srv
	monitor_post_hook $LOGDIR_RESULTS $NR_THREADS
	if [ "$REMOTE_SERVER_HOST" = "" ]; then
		killall -KILL tbench_srv
	else
		mmtests_server_ctl stop --serverside-name $1
	fi
}

case $SERVERSIDE_COMMAND in
start)
	server_start $SERVERSIDE_NAME
	exit $SHELLPACK_SUCCESS
	;;
stop)
	server_stop $SERVERSIDE_NAME
	exit $SHELLPACK_SUCCESS
	;;
flush)
	exit $SHELLPACK_SUCCESS
	;;
none)
	echo
	;;
*)
	die Unrecognised server-side command
	;;
esac

server_stop 0
###SHELLPACK threads_powertwo_begin 1 $TBENCH_MAX_CLIENTS
	mmtests_activity $NR_THREADS
	echo tbench run $NR_THREADS
	server_start $NR_THREADS
	./bin/tbench \
		-t $TBENCH_DURATION \
		$NR_THREADS $SERVER_HOST &> $LOGDIR_RESULTS/tbench-$NR_THREADS.log \
			|| die "Failed to run tbench"
	server_stop $NR_THREADS
	gzip $LOGDIR_RESULTS/tbench-$NR_THREADS.log
	kill -9 $PID_SERVER
###SHELLPACK threads_powertwo_end

exit $SHELLPACK_SUCCESS
#### Description tbench
#### Details tbench-bench 4
