#!/bin/sh

source /etc/bashrc

module load prun

#echo $SGE_TASK_ID $SGE_TASK_FIRST $SGE_TASK_LAST $SGE_TASK_STEPSIZE

if test $# -ne 5; then
	echo "Usage: $0 <experiment-config> <branch> <peers-directory> <peer-count> <experiment-length-in-min>"
	exit 1
fi

EXPERIMENT_CONFIG=$1
BRANCH=$2
source $EXPERIMENT_CONFIG

PEERS_DIRECTORY=$3
cd $PEERS_DIRECTORY
PEERS_DIRECTORY=$(pwd)

PEER_COUNT=$4
EXPERIMENT_LENGTH=$5
PEERS_PER_NODE=$[ $PEER_COUNT / $SGE_TASK_LAST ]
PEERS_PER_NODE=${PEERS_PER_NODE/\.*}
TOTAL_PEERS=$[PEERS_PER_NODE*SGE_TASK_LAST]
ADDITIONAL=$[PEER_COUNT-TOTAL_PEERS]

# Clean output of previous runs
rm -rf $PEERS_DIRECTORY/control/$(hostname)
mkdir -p $PEERS_DIRECTORY/control/$(hostname)
mkdir -p $PEERS_DIRECTORY/control/$(hostname)/output/

netstat -su  > $PEERS_DIRECTORY/control/$(hostname)/output/udp_stats_start.txt

# See if we need to run more nodes on this machine...
if [ "$TOTAL_PEERS" -lt "$PEER_COUNT" ]; then
	if [ "$ADDITIONAL" -le "$PRUN_CPU_RANK" ]; then
		let "PEERS_PER_NODE += 1"
	fi
fi

# clean temporary directory
rm -rf /tmp/$USER/dispersy/
mkdir -p /tmp/$USER/dispersy/

for i in $(seq 1 1 $PEERS_PER_NODE); do
	echo "${BRANCH}/das4-peer $PEERS_DIRECTORY $EXPERIMENT_CONFIG $BRANCH" >> $PEERS_DIRECTORY/control/$(hostname)/start_commands
done

export PYTHONPATH=${BRANCH}
${BRANCH}/process_guard.py \
	$PEERS_DIRECTORY/control/$(hostname)/start_commands \
	$PEERS_DIRECTORY/control/$(hostname)/output/ \
	$EXPERIMENT_LENGTH

# save the output of the run for all peers on this node
# take the output from the temporary directory
cd /tmp/$USER/dispersy

find . -maxdepth 1 -mindepth 1 -type d | while read PEER_DIR; do 
	# we have the peer directory in PEER_DIR
	PEER_ID=$(echo $PEER_DIR | cut -c3-7)
	mkdir -p $PEERS_DIRECTORY/$PEER_ID/output
	find $PEER_DIR -type f ! -name 'bartercast.log' ! -name 'availability.log' ! -name 'peer-keys' ! -name 'peer*' ! -name '*.db' -exec cp {} $PEERS_DIRECTORY/$PEER_ID/output/ \;
done

# remove temporary directory
rm -rf /tmp/$USER/

netstat -su  > $PEERS_DIRECTORY/control/$(hostname)/output/udp_stats_stop.txt

exit 0

