#!/bin/bash
#
###SHELLPACK preamble ku_latency-bench 0

TASKSET_SEND=""
TASKSET_RECV=""

###SHELLPACK parseargBegin
###SHELLPACK parseargInstall
###SHELLPACK parseargParam --run-seconds KU_LATENCY_RUN_SECONDS
###SHELLPACK parseargParam --start-send-first KU_LATENCY_START_SEND_FIRST
	--bind-same)
		TASKSET_SEND="taskset -c 0"
		TASKSET_RECV="taskset -c 0"
		shift
		;;
	--bind-firstsecond)
		TASKSET_SEND="taskset -c 0"
		TASKSET_RECV="taskset -c 1"
		shift
		;;
	--bind-firstlast)
		TASKSET_SEND="taskset -c 0"
		TASKSET_RECV="taskset -c $(($NUMCPUS-1))"
		shift
		;;
###SHELLPACK parseargEnd

###SHELLPACK check_install_required ku_latency

###SHELLPACK monitor_hooks

RUN_SECONDS="${KU_LATENCY_RUN_SECONDS:-10}"
START_SEND_FIRST="${KU_LATENCY_START_SEND_FIRST:-no}"

pushd $SHELLPACK_SOURCES/ku_latency-$VERSION-installed > /dev/null

if [[ ${START_SEND_FIRST} == "yes" ]]; then
    echo "Starting send-data via $TASKSET_SEND"
    $TASKSET_SEND ./send-data -d localhost > $LOGDIR_RESULTS/send-data.log &
    SENDDATA_PID=$!

    echo "Starting ku-latency via $TASKSET_RECV"
    $TASKSET_RECV ./ku-latency -e localhost | tee $LOGDIR_RESULTS/ku-latency.log > /dev/null &
    KULATENCY_PID=`jobs -p | tail -n 1`
else
    echo "Starting ku-latency via $TASKSET_RECV"
    $TASKSET_SEND ./ku-latency -e localhost | tee $LOGDIR_RESULTS/ku-latency.log > /dev/null &
    KULATENCY_PID=`jobs -p`

    echo "Starting send-data via $TASKSET_SEND"
    $TASKSET_RECV ./send-data -d localhost > $LOGDIR_RESULTS/send-data.log &
    SENDDATA_PID=$!
fi

jobs -l

echo "Sleeping $RUN_SECONDS seconds"
sleep $RUN_SECONDS

echo "Killing send-data PID $SENDDATA_PID"
kill -SIGINT $SENDDATA_PID

echo "killing ku-latency PID $KULATENCY_PID"
kill $KULATENCY_PID

exit $SHELLPACK_SUCCESS
