| #!/usr/bin/env bash |
| source ../multi-host.conf |
| mkdir -p logs |
| workdir=$(pwd) |
| |
| clean_up() { |
| echo "cleaning up..." |
| r=$(sudo killall nfd 2>&1) |
| r=$(ssh $CTRL_B "sudo killall ndn-traffic-server 2>&1; sudo killall nfd 2>&1" 2>&1) |
| r=$(ssh $CTRL_C "sudo killall ndn-traffic-server 2>&1; sudo killall nfd 2>&1" 2>&1) |
| r=$(ssh $CTRL_D "sudo killall nfd 2>&1" 2>&1) |
| } |
| |
| # start nfd on all hosts |
| echo "starting nfd on all hosts..." |
| ssh $CTRL_B "mkdir -p $workdir/logs;\ |
| sudo nfd &> $workdir/logs/nfd.log &\ |
| sleep 3;\ |
| nrd &> $workdir/logs/nrd.log &\ |
| sleep 3" |
| ssh $CTRL_C "mkdir -p $workdir/logs;\ |
| sudo nfd &> $workdir/logs/nfd.log &\ |
| sleep 3;\ |
| nrd &> $workdir/logs/nrd.log &\ |
| sleep 3" |
| ssh $CTRL_D "mkdir -p $workdir/logs;\ |
| sudo nfd &> $workdir/logs/nfd.log &\ |
| sleep 3;\ |
| nrd &> $workdir/logs/nrd.log &\ |
| sleep 3" |
| sudo nfd &> $workdir/logs/nfd.log & |
| sleep 3 |
| nrd &> $workdir/logs/nrd.log & |
| sleep 5 |
| |
| # start ndn-traffic-server on B and C |
| echo "starting ndn-traffic-server on B and C" |
| ssh $CTRL_B "ndn-traffic-server $workdir/NDNTrafficServer.conf &> $workdir/logs/serverB.log &" |
| ssh $CTRL_C "ndn-traffic-server $workdir/NDNTrafficServer.conf &> $workdir/logs/serverC.log &" |
| |
| # set up forwarding on A |
| echo "setting up forwarding on A..." |
| nfdc set-strategy ndn:/test-bcast ndn:/localhost/nfd/strategy/broadcast |
| faceid=$(nfdc create udp4://$IP4_B1 | grep -Po 'FaceId: .*?,' | sed 's/FaceId: //' | sed 's/,//') |
| nfdc add-nexthop -c 10 ndn:/test-bcast $faceid |
| faceid=$(nfdc create udp4://$IP4_C1 | grep -Po 'FaceId: .*?,' | sed 's/FaceId: //' | sed 's/,//') |
| nfdc add-nexthop -c 20 ndn:/test-bcast $faceid |
| |
| # set up forwarding on D |
| echo "setting up forwarding on D..." |
| faceid=$(ssh $CTRL_D "nfdc create udp4://$IP4_A2" | grep -Po 'FaceId: .*?,' | sed 's/FaceId: //' | sed 's/,//') |
| ssh $CTRL_D "nfdc add-nexthop ndn:/test-bcast $faceid" |
| |
| # run ndn-traffic client on D |
| echo "running ndn-traffic client on D..." |
| ssh $CTRL_D "ndn-traffic -c 100 -i 200 $workdir/NDNTrafficClient.conf > $workdir/logs/client.log 2>&1" |
| |
| # kill ndn-traffic-server on B and C |
| echo "killing ndn-traffic-server on B and C..." |
| ssh $CTRL_B "sudo killall ndn-traffic-server; sudo killall nfd" |
| ssh $CTRL_C "sudo killall ndn-traffic-server; sudo killall nfd" |
| |
| # collect data from B, C and D |
| echo "collecting data from B, C and D..." |
| scp $CTRL_B:$workdir/logs/serverB.log $workdir/logs/serverB.log |
| scp $CTRL_C:$workdir/logs/serverC.log $workdir/logs/serverC.log |
| ssh $CTRL_D "nfd-status -f > $workdir/logs/nfd-status-D.log" |
| scp $CTRL_D:$workdir/logs/nfd-status-D.log $workdir/logs/nfd-status-D.log |
| scp $CTRL_D:$workdir/logs/client.log $workdir/logs/client.log |
| nfd-status > $workdir/logs/nfd-status-A.log |
| |
| # analyze result |
| echo "analyzing result" |
| b_received=$(grep "Total Interests Received" $workdir/logs/serverB.log | head -1 | cut -d= -f2 | cut -d' ' -f2) |
| if [[ $b_received -lt 80 ]] |
| then |
| echo "FAIL: B did not receive at least 80 interests." |
| clean_up |
| exit 1 |
| fi |
| c_received=$(grep "Total Interests Received" $workdir/logs/serverC.log | head -1 | cut -d= -f2 | cut -d' ' -f2) |
| if [[ $c_received -lt 80 ]] |
| then |
| echo "FAIL: C did not receive at least 80 interests." |
| clean_up |
| exit 2 |
| fi |
| cat $workdir/logs/nfd-status-D.log | grep udp4 | while read line |
| do |
| ind=$(echo $line | grep -Po "i .*?d} out" | sed 's/i //g' | sed 's/d} out//g') |
| if [[ $ind -gt 120 ]] |
| then |
| echo "FAIL: incoming data packet in D exceeded 120." |
| echo $line |
| clean_up |
| exit 3 |
| fi |
| done |
| |
| # clean up |
| clean_up |
| echo "Breadcast Test PASSED" |