blob: c0e393523cc7e213c617e1f74b70a6b578b40b4a [file] [log] [blame]
#!/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