#!/bin/bash
# cyclictest
###SHELLPACK preamble cyclictest-bench v1.3

CYCLICTEST_BACKGROUND=none

###SHELLPACK parseargBegin
###SHELLPACK parseargInstall
###SHELLPACK parseargParam   --duration		CYCLICTEST_DURATION
###SHELLPACK parseargParam   --background	CYCLICTEST_BACKGROUND
###SHELLPACK parseargYes     --affinity		CYCLICTEST_AFFINITY
###SHELLPACK parseargEnd
###SHELLPACK monitor_hooks

###SHELLPACK check_external_install_required rttestbuild rttestbuild-${VERSION} ${VERSION}
###SHELLPACK init_complete

cd $SHELLPACK_SOURCES/rttestbuild-${VERSION}-installed || die "Failed to change to rttest directory"
if [ "$CYCLICTEST_AFFINITY" = "yes" ]; then
	CYCLICTEST_AFFINITY_PARAM=-a
fi

BACKGROUND_PID=
case $CYCLICTEST_BACKGROUND in
hackbench)
	./hackbench -P -g $NUMCPUS -l 200000000 &
	BACKGROUND_PID=$!
	echo "Background hackbench $PID"
	;;
none)
	echo "No background task specified"
	;;
*)
	die "Unrecognised background task $CYCLICTEST_BACKGROUND"
	;;
esac
monitor_pre_hook $LOGDIR_RESULTS $P
echo Starting cyclictest threads
./cyclictest --mlockall -p99 --threads $CYCLICTEST_AFFINITY_PARAM \
	--distance=0 --duration=$CYCLICTEST_DURATION --quiet 2>&1 | \
	tee $LOGDIR_RESULTS/cyclictest.log
if [ "$BACKGROUND_PID" != "" ]; then
	shutdown_pid $CYCLICTEST_BACKGROUND $BACKGROUND_PID
fi
monitor_post_hook $LOGDIR_RESULTS $P
exit $SHELLPACK_SUCCESS
