#!/usr/bin/env bash
source ../multi-host.conf
a_ipaddr=$IP4_A1
b_ipaddr=$IP4_B1
c_ipaddr=$IP4_C1
strategy=$1
logprefix=$2
echo "host A IP address $a_ipaddr"
echo "host B IP address $b_ipaddr"
echo "host C IP address $c_ipaddr"
echo "Strategy: $strategy"
mkdir -p logs
workdir=$(pwd)

clean_up() {
    echo "cleaning up..."
    sudo killall nfd 2>&1
    ssh $b_ipaddr "sudo killall nfd 2>&1" 2>&1
    ssh $c_ipaddr "sudo killall nfd 2>&1" 2>&1
}
trap clean_up EXIT

# generate nfd.conf: disable multicast faces
cp /usr/local/etc/ndn/nfd.conf $workdir/nfd.conf
ssh $CTRL_B "sed 's/mcast yes/mcast no/' /usr/local/etc/ndn/nfd.conf > $workdir/nfd.conf"
ssh $CTRL_C "sed 's/mcast yes/mcast no/' /usr/local/etc/ndn/nfd.conf > $workdir/nfd.conf"

# get keys
echo "getting keys..."
cp -r /usr/local/etc/ndn/keys $workdir/
ssh $CTRL_B "cp -r /usr/local/etc/ndn/keys $workdir/"
ssh $CTRL_C "cp -r /usr/local/etc/ndn/keys $workdir/"

# start NFD on three nodes and set nexthop to create loop
echo "start NFD on three nodes and set nexthop to create loop..."
ssh $CTRL_B "mkdir -p $workdir/logs;\
    sudo nfd --config $workdir/nfd.conf &> $workdir/logs/${logprefix}_nfd.log &\
    sleep 2"
ssh $CTRL_C "mkdir -p $workdir/logs;\
    sudo nfd --config $workdir/nfd.conf &> $workdir/logs/${logprefix}_nfd.log &\
    sleep 2"
sudo nfd --config $workdir/nfd.conf &> $workdir/logs/${logprefix}_nfd.log &
sleep 5
ssh $CTRL_B "$workdir/add-nexthop.sh $c_ipaddr $strategy" || exit 3
ssh $CTRL_C "$workdir/add-nexthop.sh $a_ipaddr $strategy" || exit 3
$workdir/add-nexthop.sh $b_ipaddr $strategy || exit 3

# use ndn-traffic client to send 100 interests
echo "using ndn-traffic client to send 100 interests..."
ndn-traffic -c 100 -i 200 NDNTrafficClient.conf > $workdir/logs/${logprefix}_client.log 2>&1

# collect nfd-status from B and C
echo "collecting nfd-status from B and C..."
ssh $CTRL_B "nfd-status -f > $workdir/logs/${logprefix}_nfd-status-B.log 2>&1" || exit 4
scp $CTRL_B:$workdir/logs/${logprefix}_nfd-status-B.log  $workdir/logs/${logprefix}_nfd-status-B.log
ssh $CTRL_C "nfd-status -f > $workdir/logs/${logprefix}_nfd-status-C.log 2>&1" || exit 4
scp $CTRL_C:$workdir/logs/${logprefix}_nfd-status-C.log  $workdir/logs/${logprefix}_nfd-status-C.log
nfd-status -f > $workdir/logs/${logprefix}_nfd-status-A.log 2>&1 || exit 4

# analyze results
echo "analyzing results..."
for host in {A..C}
do
    echo "Host $host:"
    cat $workdir/logs/${logprefix}_nfd-status-$host.log | grep udp4 | while read line
    do
        ini=$(echo "$line" | grep -Po "in={.*?i" | sed 's/in={//g' | sed 's/i//g')
        outi=$(echo "$line" | grep -Po "out={.*?i" | sed 's/out={//g' | sed 's/i//g')
        echo "        $ini in, $outi out"
        if [[ $ini -gt 200 ]]
        then
            echo "FAIL: counter for incoming interest on host $host is greater than 200"
            echo "$line"
            exit 1
        fi
        if [[ $outi -gt 200 ]]
        then
            echo "FAIL: counter for outgoing interest on host $host is greater than 200"
            echo "$line"
            exit 2
        fi
    done
done

# clean up
clean_up
echo "Interest Loop Test PASSED"
