| #!/bin/bash |
| source ../multi-host.conf |
| |
| clean_up() { |
| r=$(sudo killall ndn-traffic-server 2>&1) |
| r=$(sudo killall ndnpeek 2>&1) |
| r=$(sudo killall nfd 2>&1) |
| } |
| |
| check_peek_exit() { |
| ps -p $2 > /dev/null |
| if [[ $? -ne 1 ]]; then |
| echo "Peek Client $1 did not exit" |
| clean_up |
| exit 1 |
| fi |
| } |
| |
| check_peek_output() { |
| local out=$(cat $2) |
| if [[ "$out" != "$3" ]]; then |
| echo "Peek Client $1 did not receive a Data containing '$3'. Actual: $out" |
| clean_up |
| exit 2 |
| fi |
| } |
| |
| check_server_receive_count() { |
| local actual=$(cat $2 | grep "Total Interests Received" | head -1 | cut -d"=" -f2 | tr -d " ") |
| if [[ $actual -ne $3 ]]; then |
| echo "Traffic Server $1 did not received expected $3 Interests. Actual: $actual" |
| clean_up |
| exit 3 |
| fi |
| } |
| |
| # A: Start NFD |
| workdir=$(pwd) |
| echo "Starting nfd on A..." |
| mkdir -p $workdir/logs; sudo nfd &> $workdir/logs/nfd.log & |
| sleep 1 |
| |
| # A: Set NFD to use best-route v1 strategy |
| echo "Setting strategy to best-route v1" |
| nfdc strategy set / /localhost/nfd/strategy/best-route/%FD%01 |
| sleep 1 |
| |
| # A: Start ndn-traffic-server (Prefix=/text-agg, ContentDelay=2000ms) |
| echo "Starting Traffic Server 1 (Prefix=/test-agg, ContentDelay=2000ms)..." |
| ndn-traffic-server $workdir/test-traffic-server.conf &> $workdir/logs/test-server-output-1.txt & |
| sleep 1 |
| |
| # A: Start two instances of ndnpeek to request /test-agg/A |
| echo "Starting Peek Client 1 (Prefix=/test-agg/A)..." |
| ndnpeek -p /test-agg/A &> $workdir/logs/test-peek-output-1.txt & |
| peek1pid=$! |
| echo "Starting Peek Client 2 (Prefix=/test-agg/A)..." |
| ndnpeek -p /test-agg/A &> $workdir/logs/test-peek-output-2.txt & |
| peek2pid=$! |
| sleep 1 |
| |
| # A: Stop ndn-traffic-server instance |
| echo "Stopping Traffic Server 1..." |
| sudo killall ndn-traffic-server 2>&1 |
| sleep 2 |
| |
| # A: Ensure ndnpeek instances have quit |
| check_peek_exit 1 $peek1pid |
| check_peek_exit 2 $peek2pid |
| |
| # A: Ensure ndnpeek instances both received Data packets with correct payloads in response to their Interests |
| check_peek_output 1 $workdir/logs/test-peek-output-1.txt AAAAAAAA |
| check_peek_output 2 $workdir/logs/test-peek-output-2.txt AAAAAAAA |
| |
| # A: Ensure that Traffic Server 1 received only one Interest |
| check_server_receive_count 1 $workdir/logs/test-server-output-1.txt 1 |
| |
| # A: Start ndn-traffic-server (Prefix=/test-agg, ContentDelay=2000ms) |
| echo "Starting Traffic Server 2 (Prefix=/test-agg, ContentDelay=2000ms)..." |
| ndn-traffic-server $workdir/test-traffic-server.conf &> $workdir/logs/test-server-output-2.txt & |
| sleep 1 |
| |
| # A: Start two instances of ndnpeek to request /test-agg/B, with one setting CanBePrefix=false and |
| # the other setting CanBePrefix=true |
| echo "Starting Peek Client 3 (Prefix=/test-agg/B, CanBePrefix=false)..." |
| ndnpeek -p /test-agg/B &> $workdir/logs/test-peek-output-3.txt & |
| peek3pid=$! |
| echo "Starting Peek Client 4 (Prefix=/test-agg/B, CanBePrefix=true)..." |
| ndnpeek -P -p /test-agg/B &> $workdir/logs/test-peek-output-4.txt & |
| peek4pid=$! |
| sleep 1 |
| |
| # A: Stop ndn-traffic-server instance |
| echo "Stopping Traffic Server 2..." |
| sudo killall ndn-traffic-server 2>&1 |
| sleep 2 |
| |
| # A: Ensure ndnpeek instances have quit |
| check_peek_exit 3 $peek3pid |
| check_peek_exit 4 $peek4pid |
| |
| # A: Ensure ndnpeek instances both received Data packets with correct payload in response to their interests |
| check_peek_output 3 $workdir/logs/test-peek-output-3.txt AAAAAAAA |
| check_peek_output 4 $workdir/logs/test-peek-output-4.txt AAAAAAAA |
| |
| # A: Ensure that Traffic Server 2 received two Interests |
| check_server_receive_count 2 $workdir/logs/test-server-output-2.txt 2 |
| |
| # A: Start ndn-traffic-server (Prefix=/test-agg, ContentDelay=2000ms) |
| echo "Starting Traffic Server 3 (Prefix=/test-agg, ContentDelay=2000ms)..." |
| ndn-traffic-server $workdir/test-traffic-server.conf &> $workdir/logs/test-server-output-3.txt & |
| sleep 1 |
| |
| # A: Start two instances of ndnpeek to request /test-agg/C, with one setting InterestLifetime=6000ms |
| # and the other setting InterestLifetime=8000ms |
| echo "Starting Peek Client 5 (Prefix=/test-agg/C, InterestLifetime=6000ms)" |
| ndnpeek --lifetime 6000 -p /test-agg/C > $workdir/logs/test-peek-output-5.txt & |
| peek5pid=$! |
| echo "Starting Peek Client 6 (Prefix=/test-agg/C, InterestLifetime=8000ms)..." |
| ndnpeek --lifetime 8000 -p /test-agg/C > $workdir/logs/test-peek-output-6.txt & |
| peek6pid=$! |
| sleep 1 |
| |
| # A: Stop ndn-traffic-server instance |
| echo "Stopping Traffic Server 3..." |
| sudo killall ndn-traffic-server 2>&1 |
| sleep 2 |
| |
| # A: Ensure ndnpeek instances have quit |
| check_peek_exit 5 $peek5pid |
| check_peek_exit 6 $peek6pid |
| |
| # A: Ensure ndnpek instances both received Data packets with correct payload in response to their Interests |
| check_peek_output 5 $workdir/logs/test-peek-output-5.txt AAAAAAAA |
| check_peek_output 6 $workdir/logs/test-peek-output-6.txt AAAAAAAA |
| |
| # A: Ensure that Traffic Server 3 received only one Interest |
| check_server_receive_count 3 $workdir/logs/test-server-output-3.txt 1 |
| |
| clean_up |