Add Congestion Mark scenario
refs #4327
Change-Id: Iabbbe241585378e77d792c74d005a22b0d1440c5
diff --git a/test_congestionmark/congestionmark-test.sh b/test_congestionmark/congestionmark-test.sh
new file mode 100755
index 0000000..10e3747
--- /dev/null
+++ b/test_congestionmark/congestionmark-test.sh
@@ -0,0 +1,164 @@
+#!/bin/bash
+source ../multi-host.conf
+
+echo "host A IP addresses $IP4_A1 and $IP4_A2"
+echo "host C IP address $IP4_C1"
+echo "host D IP address $IP4_D1"
+
+clean_up() {
+ r=$(ssh $CTRL_C "sudo killall nfd" 2>&1)
+ r=$(ssh $CTRL_D "sudo killall test-congestionmark-producer" 2>&1)
+ r=$(ssh $CTRL_D "sudo killall nfd" 2>&1)
+ r=$(sudo killall nfd 2>&1)
+}
+
+### Setup
+
+# Start NFD on hosts A, C, and D
+workdir=$(pwd)
+echo "starting nfd on host A..."
+mkdir -p $workdir/logs; sudo nfd > $workdir/logs/nfd.log 2>&1 &
+sleep 1
+
+echo "starting nfd on host C..."
+ssh $CTRL_C "mkdir -p $workdir/logs; sudo nfd &> $workdir/logs/nfd.log &"
+sleep 1
+
+echo "starting nfd on host D..."
+ssh $CTRL_D "mkdir -p $workdir/logs; sudo nfd &> $workdir/logs/nfd.log &"
+sleep 1
+
+# Create faces
+ssh $CTRL_C "nfdc face create udp4://$IP4_A1"
+nfdc face create udp4://$IP4_D1
+
+# Set up routes
+ssh $CTRL_C "nfdc route add /arizona/cs udp4://$IP4_A1"
+if [[ $? -ne 0 ]]; then
+ echo "C: Failed to create route for /arizona/cs toward A"
+ clean_up
+ exit 1
+fi
+
+ssh $CTRL_C "nfdc route add /ucla/cs udp4://$IP4_A1"
+if [[ $? -ne 0 ]]; then
+ echo "C: Failed to create route for /ucla/cs toward A"
+ clean_up
+ exit 1
+fi
+
+ssh $CTRL_C "nfdc route add /ucsd/caida udp4://$IP4_A1"
+if [[ $? -ne 0 ]]; then
+ echo "C: Failed to create route for /ucsd/caida toward A"
+ clean_up
+ exit 1
+fi
+
+nfdc route add /arizona/cs udp4://$IP4_D1
+if [[ $? -ne 0 ]]; then
+ echo "A: Failed to create route for /arizona/cs toward D"
+ clean_up
+ exit 1
+fi
+
+nfdc route add /ucla/cs udp4://$IP4_D1
+if [[ $? -ne 0 ]]; then
+ echo "A: Failed to create route for /ucla/cs toward D"
+ clean_up
+ exit 1
+fi
+
+nfdc route add /ucsd/caida udp4://$IP4_D1
+if [[ $? -ne 0 ]]; then
+ echo "A: Failed to create route for /ucsd/caida toward D"
+ clean_up
+ exit 1
+fi
+
+### TestCase 1
+
+# A: Use CongestionMarkStrategy (value=7) strategy for /arizona/cs namespace
+nfdc strategy set /arizona/cs /localhost/nfd/strategy/congestion-mark/%FD%01/7/true
+if [[ $? -ne 0 ]]; then
+ echo "A: Failed to set CongestionMarkStrategy for /arizona/cs prefix"
+ clean_up
+ exit 2
+fi
+
+# D: Start producer for /arizona/cs
+ssh $CTRL_D "test-congestionmark-producer /arizona/cs &>/dev/null &"
+
+# C: Send Interest for /arizona/cs
+output=$(ssh $CTRL_C "test-congestionmark-consumer /arizona/cs")
+status=$?
+if [[ $? -ne 0 ]]; then
+ echo "Consumer for Interest /arizona/cs did not exit with status 0"
+ echo "Actual: $status"
+ clean_up
+ exit 6
+fi
+if [[ $output != "CongestionMark=7" ]]; then
+ echo "Interest /arizona/cs not answered with a Data containing a congestion mark with a value of 7"
+ echo "Actual: $output"
+ clean_up
+ exit 3
+fi
+
+### TestCase 2
+
+# D: Start producer for /ucla/cs
+ssh $CTRL_D "test-congestionmark-producer /ucla/cs &>/dev/null &"
+
+# C: Send Interest for /ucla/cs
+output=$(ssh $CTRL_C "test-congestionmark-consumer /ucla/cs")
+status=$?
+if [[ $? -ne 0 ]]; then
+ echo "Consumer for Interest /ucla/cs did not exit with status 0"
+ echo "Actual: $status"
+ clean_up
+ exit 6
+fi
+if [[ $output != "CongestionMark=0" ]]; then
+ echo "Interest /ucla/cs not answered with a Data without a congestion mark"
+ echo "Actual: $output"
+ clean_up
+ exit 4
+fi
+
+### TestCase 3
+
+# D: Start producer for /ucsd/caida
+ssh $CTRL_D "test-congestionmark-producer /ucsd/caida &>/dev/null &"
+sleep 1
+
+# C: Use CongestionMarkStrategy (value=2) strategy for /ucsd/caida namespace
+ssh $CTRL_C "nfdc strategy set /ucsd/caida /localhost/nfd/strategy/congestion-mark/%FD%01/2/true"
+if [[ $? -ne 0 ]]; then
+ echo "C: Failed to set CongestionMarkStrategy for /ucsd/caida prefix"
+ clean_up
+ exit 2
+fi
+
+# A: Use CongestionMarkStrategy (value=3, override) strategy for /ucsd/caida namespace
+nfdc strategy set /ucsd/caida /localhost/nfd/strategy/congestion-mark/%FD%01/3/false
+if [[ $? -ne 0 ]]; then
+ echo "A: Failed to set CongestionMarkStrategy for /ucsd/caida prefix"
+ clean_up
+ exit 2
+fi
+
+# C: Send Interest for /ucsd/caida
+output=$(ssh $CTRL_C "test-congestionmark-consumer /ucsd/caida")
+status=$?
+if [[ $? -ne 0 ]]; then
+ echo "Consumer for Interest /ucsd/caida did not exit with status 0"
+ echo "Actual: $status"
+ clean_up
+ exit 6
+fi
+if [[ $output != "CongestionMark=3" ]]; then
+ echo "Interest /ucsd/caida not answered with a Data containing a congestion mark with a value of 3"
+ echo "Actual: $output"
+ clean_up
+ exit 5
+fi