#!/usr/bin/bash

###SHELLPACK preamble stressng-bench V0.13.03

STRESSNG_MIN_THREADS=1
STRESSNG_MAX_THREADS=1
STRESSNG_RUNTIME=150
STRESSNG_ITERATIONS=3
STRESSNG_TESTNAME=context

###SHELLPACK parseargBegin
###SHELLPACK parseargInstall
###SHELLPACK parseargParam    --min-threads STRESSNG_MIN_THREADS
###SHELLPACK parseargParam    --max-threads STRESSNG_MAX_THREADS
###SHELLPACK parseargParam    --runtime     STRESSNG_RUNTIME
###SHELLPACK parseargParam    --iterations  STRESSNG_ITERATIONS
###SHELLPACK parseargParam    --testname    STRESSNG_TESTNAME
###SHELLPACK parseargEnd
###SHELLPACK monitor_hooks

###SHELLPACK check_install_required stressng-${VERSION}
###SHELLPACK init_complete

TESTSWITCH=
case $STRESSNG_TESTNAME in
get)
	TESTSWITCH="--get"
	;;
context)
	TESTSWITCH="--context"
	;;
mmap)
	TESTSWITCH="--mmap"
	;;
io-class)
	TESTSWITCH="--class io"
	;;
io-class-parallel)
	TESTSWITCH="--class io --all"
	;;
*)
	die "Unrecognised test $STRESSNG_TESTNAME"
	;;
esac

###SHELLPACK threads_powertwo_begin $STRESSNG_MIN_THREADS $STRESSNG_MAX_THREADS
	monitor_pre_hook $LOGDIR_RESULTS $NR_THREADS
	BENCH_CMD=" ./stress-ng $TESTSWITCH $NR_THREADS --timeout ${STRESSNG_RUNTIME}s --metrics-brief"
	log_cmd $BENCH_CMD

	PRINT_NR_THREADS=$NR_THREADS
	if [ $NR_THREADS -eq 0 ]; then
		PRINT_NR_THREADS=$NUMCPUS
	fi
	###SHELLPACK iteration_begin $STRESSNG_ITERATIONS
		echo Running $PRINT_NR_THREADS stressng $STRESSNG_TESTNAME iteration $ITERATION
		eval $TIME_CMD -o $LOGDIR_RESULTS/time-$NR_THREADS-$ITERATION \
			$BENCH_CMD &> $LOGDIR_RESULTS/stressng-$NR_THREADS-$ITERATION.log
	###SHELLPACK iteration_end $STRESSNG_ITERATIONS

	monitor_post_hook $LOGDIR_RESULTS $NR_THREADS
###SHELLPACK threads_powertwo_end

exit $SHELLPACK_SUCCESS
