svn commit: r233279 - in projects/net80211_testsuite/wtap: 002 003
004 005
Adrian Chadd
adrian at FreeBSD.org
Wed Mar 21 15:54:45 UTC 2012
Author: adrian
Date: Wed Mar 21 15:54:44 2012
New Revision: 233279
URL: http://svn.freebsd.org/changeset/base/233279
Log:
Flesh out a few more 802.11s test cases.
Submitted by: monthadar at gmail.com
Added:
projects/net80211_testsuite/wtap/002/
projects/net80211_testsuite/wtap/002/test.sh (contents, props changed)
projects/net80211_testsuite/wtap/003/
projects/net80211_testsuite/wtap/003/test.sh (contents, props changed)
projects/net80211_testsuite/wtap/004/
projects/net80211_testsuite/wtap/004/test.sh (contents, props changed)
projects/net80211_testsuite/wtap/005/
projects/net80211_testsuite/wtap/005/test.sh (contents, props changed)
Added: projects/net80211_testsuite/wtap/002/test.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/net80211_testsuite/wtap/002/test.sh Wed Mar 21 15:54:44 2012 (r233279)
@@ -0,0 +1,211 @@
+#!/bin/sh
+
+# This program requires:
+# + wtap - to create/destroy the wtap instances
+# + vis_map - to setup the visibility map between wtap instances
+# + vimage - to configure/destroy vtap nodes
+
+# The name of the test that will be printed in the begining
+TEST_NAME="4 nodes in line-topology with HWMPROOT NORMAL"
+
+# Global flags
+FLAG_QUIET=0
+
+# The number of nodes to test
+NBR_NODES=4
+
+# The subnet prefix
+IP_SUBNET="192.168.2."
+
+cmd()
+{
+ if [ $FLAG_QUIET = 1 ]; then
+ echo "*** " $* >> output
+ $* >> output
+ else
+ echo "*** " $*
+ $*
+ fi
+}
+
+info()
+{
+ if [ $FLAG_QUIET = 1 ]; then
+ echo "*** " $* >> output
+ else
+ echo "*** " $*
+ fi
+}
+
+descr()
+{
+ cat <<EOL
+
+This test establishes that the very basic 802.11s multi-hop
+connectivity works.
+
+It:
+
+* creates four wtap instances
+* creates four vimage instances
+* creates one wlan vap for each wtap instance and places
+ each vap in one of the four vimage instances
+* sets up the visibility to the following:
+
+ A <-> B <-> C <-> D
+
+* configures A to be ROOT (NORMAL)
+* After a grace period the forwarding information for each
+ of B,C and D is checked to contain correct number of hops:
+
+ ----NHOP 3 ---------
+ / ---NHOP 2------- |
+ |/ -NHOP 1-- | |
+ ||/ | | |
+ A <-----> B <-> C <-> D
+
+It is expected that the initial creation and discovery phase
+will take some time so the initial run will fail until discovery
+is done. A future extension to the test suite should be to
+set lower/upper bounds on the discovery phase time.
+
+EOL
+}
+
+setup()
+{
+ # Initialize output file
+ echo "" > output
+ echo "TEST: ${TEST_NAME}"
+
+ # Create wtap/vimage nodes
+ for i in `seq 1 ${NBR_NODES}`; do
+ wtap_if="`expr $i - 1`"
+ info "Setup: vimage $i - wtap$wtap_if"
+ cmd vimage -c $i
+ cmd wtap c $wtap_if
+ done
+
+ # Set visibility for each node to see the
+ # next node.
+ n="`expr ${NBR_NODES} - 1`"
+ for i in `seq 0 ${n}`; do
+ j="`expr ${i} + 1`"
+ cmd vis_map a $i $j
+ cmd vis_map a $j $i
+ done
+
+ # Makes the visibility map plugin deliver packets to resp. dest.
+ cmd vis_map o
+
+ # Create each wlan subinterface, place into the correct vnet
+ for i in `seq 0 ${n}`; do
+ vnet="`expr ${i} + 1`"
+ cmd ifconfig wlan${i} create wlandev wtap${i} wlanmode mesh
+ cmd ifconfig wlan${i} meshid mymesh
+ if [ ${i} = 0 ]; then
+ cmd ifconfig wlan${i} hwmprootmode normal
+ fi
+ cmd wlandebug -i wlan${i} hwmp
+ cmd ifconfig wlan${i} vnet ${vnet}
+ cmd jexec ${vnet} ifconfig wlan${i} up
+
+ cmd jexec ${vnet} ifconfig wlan${i} inet ${IP_SUBNET}${vnet}
+ done
+}
+
+run()
+{
+ NBR_TESTS=0 NBR_FAIL=0
+
+ # Wait for root to be discovered by all and then check if
+ # it is present in all nodes forwarding information (FI)
+ sleep_time=10
+ info "Waiting ${sleep_time}s for network to settle"
+ sleep ${sleep_time}
+
+ # Check that the forwarding information in nodes 2,3,4
+ # have correct number of hops to root (1)
+ n="`expr ${NBR_NODES} - 1`"
+ for i in `seq 1 ${n}`; do
+ info "Checking forwarding information for ${i}.."
+ NBR_TESTS="`expr ${NBR_TESTS} + 1`"
+ j=`expr ${i} + 1`
+ # Check number of hops to root
+ FI=`jexec ${j} ifconfig wlan${i} list mesh | \
+ egrep "^00:98:9a:98:96:97.*" | awk '{print $3}'`
+ if [ "${FI}" = "${i}" ]; then
+ info "CHECK: ${i} -> ${j}: SUCCESS"
+ else
+ info "CHECK: ${i} -> ${j}: FAILURE"
+ NBR_FAIL="`expr ${NBR_FAIL} + 1`"
+ fi
+ done
+ if [ $NBR_FAIL = 0 ]; then
+ echo "ALL TESTS PASSED"
+ else
+ echo "FAILED ${NBR_FAIL} of ${NBR_TESTS} TESTS"
+ fi
+}
+
+teardown()
+{
+ n="`expr ${NBR_NODES} - 1`"
+ for i in `seq 0 ${n}`; do
+ vnet="`expr ${i} + 1`"
+ cmd jexec ${vnet} ifconfig wlan${i} destroy
+ done
+ for i in `seq 1 ${NBR_NODES}`; do
+ wtap_if="`expr $i - 1`"
+ cmd wtap d ${wtap_if}
+ cmd vimage -d ${i}
+ done
+}
+
+EXEC_SETUP=0
+EXEC_RUN=0
+EXEC_TEARDOWN=0
+while [ "$#" -gt "0" ]
+do
+ case $1 in
+ -q)
+ FLAG_QUIET=1
+ ;;
+ 'all')
+ EXEC_SETUP=1
+ EXEC_RUN=1
+ EXEC_TEARDOWN=1
+ ;;
+ 'setup')
+ EXEC_SETUP=1
+ ;;
+ 'run')
+ EXEC_RUN=1
+ ;;
+ 'teardown')
+ EXEC_TEARDOWN=1
+ ;;
+ 'descr')
+ descr
+ exit 0
+ ;;
+ *)
+ echo "$0 {all | setup | run | teardown | descr [-q]}"
+ exit 127
+ ;;
+ esac
+ shift
+done
+
+if [ $EXEC_SETUP = 1 ]; then
+ setup
+fi
+if [ $EXEC_RUN = 1 ]; then
+ run
+fi
+if [ $EXEC_TEARDOWN = 1 ]; then
+ teardown
+fi
+
+exit 0
+
Added: projects/net80211_testsuite/wtap/003/test.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/net80211_testsuite/wtap/003/test.sh Wed Mar 21 15:54:44 2012 (r233279)
@@ -0,0 +1,232 @@
+#!/bin/sh
+
+# This program requires:
+# + wtap - to create/destroy the wtap instances
+# + vis_map - to setup the visibility map between wtap instances
+# + vimage - to configure/destroy vtap nodes
+
+# The name of the test that will be printed in the begining
+TEST_NAME="3 nodes in a mesh topology"
+
+# Global flags
+FLAG_QUIET=0
+
+# The number of nodes to test
+NBR_NODES=3
+
+# The subnet prefix
+IP_SUBNET="192.168.2."
+
+cmd()
+{
+ if [ $FLAG_QUIET = 1 ]; then
+ echo "*** " $* >> output
+ $* >> output
+ else
+ echo "*** " $*
+ $*
+ fi
+}
+
+info()
+{
+ if [ $FLAG_QUIET = 1 ]; then
+ echo "*** " $* >> output
+ else
+ echo "*** " $*
+ fi
+}
+
+descr()
+{
+ cat <<EOL
+
+This test establishes that the very basic 802.11s multi-hop
+connectivity works.
+
+It:
+
+* creates three wtap instances
+* creates three vimage instances
+* creates one wlan vap for each wtap instance and places
+ each vap in one of the four vimage instances
+* sets up the visibility to the following:
+
+ A --- B
+ \ /
+ C
+
+The test:
+
+1) does a ping test from each node to each other node.
+2) changes the visibility to the following:
+
+ A --- B
+ /
+ C
+
+3) does a ping test from each node to each other node.
+
+Note:
+
+It is expected that the initial creation and discovery phase
+will take some time so the initial run will fail until discovery
+is done. A future extension to the test suite should be to
+set lower/upper bounds on the discovery phase time.
+
+EOL
+}
+
+setup()
+{
+ # Initialize output file
+ echo "" > output
+ echo "TEST: ${TEST_NAME}"
+
+ # Create wtap/vimage nodes
+ for i in `seq 1 ${NBR_NODES}`; do
+ wtap_if="`expr $i - 1`"
+ info "Setup: vimage $i - wtap$wtap_if"
+ cmd vimage -c $i
+ cmd wtap c $wtap_if
+ done
+
+ # Set visibility for each node to all other nodes.
+ n="`expr ${NBR_NODES} - 1`"
+ for i in `seq 0 ${n}`; do
+ for j in `seq 0 ${n}`; do
+ if [ $j != $i ]; then
+ cmd vis_map a $i $j
+ fi
+ done
+ done
+
+ # Mark the visibility map plugin to start delivering packets.
+ cmd vis_map o
+
+ # Create each wlan subinterface, place into the correct vnet
+ for i in `seq 0 ${n}`; do
+ vnet="`expr ${i} + 1`"
+ cmd ifconfig wlan${i} create wlandev wtap${i} wlanmode mesh
+ cmd ifconfig wlan${i} meshid mymesh
+ cmd wlandebug -i wlan${i} hwmp
+ cmd ifconfig wlan${i} vnet ${vnet}
+ cmd jexec ${vnet} ifconfig wlan${i} up
+
+ cmd jexec ${vnet} ifconfig wlan${i} inet ${IP_SUBNET}${vnet}
+ done
+}
+
+# Test statistics
+NBR_TESTS=0
+NBR_FAIL=0
+
+ping_all()
+{
+ # Test connectivity from each node to each other node
+ for i in `seq 1 ${NBR_NODES}`; do
+ for j in `seq 1 ${NBR_NODES}`; do
+ if [ "$i" != "$j" ]; then
+ # From vimage '$i' to vimage '$j'..
+ info "* Checking ${i} -> ${j}.."
+ NBR_TESTS="`expr ${NBR_TESTS} + 1`"
+ # Return after a single successful packet
+ cmd jexec $i ping -q -t 5 -c 5 \
+ -o ${IP_SUBNET}${j}
+
+ if [ "$?" = "0" ]; then
+ info "CHECK: ${i} -> ${j}: SUCCESS"
+ else
+ info "CHECK: ${i} -> ${j}: FAILURE"
+ NBR_FAIL="`expr ${NBR_FAIL} + 1`"
+ fi
+ fi
+ done
+ done
+}
+
+run()
+{
+ ping_all
+
+ info "Removing link between 1 2"
+ cmd vis_map d 0 1
+ cmd vis_map d 1 0
+
+ # NB: Because we still have not implemented lifetime decrementation
+ # we have to wait at least IEEE80211_INACT_RUN.
+ # XXX: Make IEEE80211_INACT_* SYSCTLs?
+ sleeptime=5
+ info "Sleeping > ${sleeptime}s to timeout disconnected neighbor nodes."
+ sleep ${sleeptime}
+
+ ping_all
+
+ if [ $NBR_FAIL = 0 ]; then
+ echo "ALL TESTS PASSED"
+ else
+ echo "FAILED ${NBR_FAIL} of ${NBR_TESTS} TESTS"
+ fi
+}
+
+teardown()
+{
+ n="`expr ${NBR_NODES} - 1`"
+ for i in `seq 0 ${n}`; do
+ vnet="`expr ${i} + 1`"
+ cmd jexec ${vnet} ifconfig wlan${i} destroy
+ done
+ for i in `seq 1 ${NBR_NODES}`; do
+ wtap_if="`expr $i - 1`"
+ cmd wtap d ${wtap_if}
+ cmd vimage -d ${i}
+ done
+}
+
+EXEC_SETUP=0
+EXEC_RUN=0
+EXEC_TEARDOWN=0
+while [ "$#" -gt "0" ]
+do
+ case $1 in
+ -q)
+ FLAG_QUIET=1
+ ;;
+ 'all')
+ EXEC_SETUP=1
+ EXEC_RUN=1
+ EXEC_TEARDOWN=1
+ ;;
+ 'setup')
+ EXEC_SETUP=1
+ ;;
+ 'run')
+ EXEC_RUN=1
+ ;;
+ 'teardown')
+ EXEC_TEARDOWN=1
+ ;;
+ 'descr')
+ descr
+ exit 0
+ ;;
+ *)
+ echo "$0 {all | setup | run | teardown | descr [-q]}"
+ exit 127
+ ;;
+ esac
+ shift
+done
+
+if [ $EXEC_SETUP = 1 ]; then
+ setup
+fi
+if [ $EXEC_RUN = 1 ]; then
+ run
+fi
+if [ $EXEC_TEARDOWN = 1 ]; then
+ teardown
+fi
+
+exit 0
+
Added: projects/net80211_testsuite/wtap/004/test.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/net80211_testsuite/wtap/004/test.sh Wed Mar 21 15:54:44 2012 (r233279)
@@ -0,0 +1,232 @@
+#!/bin/sh
+
+# This program requires:
+# + wtap - to create/destroy the wtap instances
+# + vis_map - to setup the visibility map between wtap instances
+# + vimage - to configure/destroy vtap nodes
+
+# The name of the test that will be printed in the begining
+TEST_NAME="2 nodes and one is PROXY"
+
+# Global flags
+FLAG_QUIET=0
+
+# The number of nodes to test
+NBR_NODES=2
+
+# The subnet prefix
+IP_SUBNET="192.168.2."
+
+cmd()
+{
+ if [ $FLAG_QUIET = 1 ]; then
+ echo "*** " $* >> output
+ $* >> output
+ else
+ echo "*** " $*
+ $*
+ fi
+}
+
+info()
+{
+ if [ $FLAG_QUIET = 1 ]; then
+ echo "*** " $* >> output
+ else
+ echo "*** " $*
+ fi
+}
+
+descr()
+{
+ cat <<EOL
+
+This test establishes that the very basic 802.11s PROXY
+connectivity works.
+
+It:
+
+* creates two wtap instances
+* creates three vimage instances
+* creates one wlan vap for each wtap instance and places
+ each vap in one of the three vimage instances
+* creates one epair and places each end in one
+ of two vimage instances
+* creates one bridge and places it with a wtap in
+ one vimage instance
+* sets up the visibility to the following:
+
+ ----MESH-----
+ proxyA <--|--> A <-> B |
+ -------------
+
+* does a ping test from each node to each other node.
+
+It is expected that the initial creation and discovery phase
+will take some time so the initial run will fail until discovery
+is done. A future extension to the test suite should be to
+set lower/upper bounds on the discovery phase time.
+
+EOL
+}
+
+setup()
+{
+ # Initialize output file
+ echo "" > output
+ echo "TEST: ${TEST_NAME}"
+
+ # Create wtap/vimage nodes
+ for i in `seq 1 ${NBR_NODES}`; do
+ wtap_if="`expr $i - 1`"
+ info "Setup: vimage $i - wtap$wtap_if"
+ cmd vimage -c $i
+ cmd wtap c $wtap_if
+ done
+ # Need one more vimage for the PROXY node
+ cmd vimage -c 3
+
+ # Set visibility for each node to see the
+ # next node.
+ n="`expr ${NBR_NODES} - 1`"
+ for i in `seq 0 ${n}`; do
+ j="`expr ${i} + 1`"
+ cmd vis_map a $i $j
+ cmd vis_map a $j $i
+ done
+
+ # Makes the visibility map plugin deliver packets to resp. dest.
+ cmd vis_map o
+
+ # Create and setup PROXY node with corresponding bridge
+ cmd ifconfig epair0 create
+ cmd ifconfig epair0a vnet 1
+ cmd ifconfig epair0b vnet 2
+ cmd ifconfig bridge0 create
+ # Disables bridge filtering
+ cmd sysctl net.link.bridge.pfil_member=0
+ cmd sysctl net.link.bridge.pfil_bridge=0
+ cmd ifconfig bridge0 vnet 2
+
+ # Create each wlan subinterface, place into the correct vnet
+ for i in `seq 0 ${n}`; do
+ vnet="`expr ${i} + 2`"
+ cmd ifconfig wlan${i} create wlandev wtap${i} wlanmode mesh
+ cmd ifconfig wlan${i} meshid mymesh
+ cmd wlandebug -i wlan${i} hwmp
+ cmd ifconfig wlan${i} vnet ${vnet}
+ done
+
+ # Bring all interfaces up.
+ # NB: Bridge need to be brought up before the bridged interfaces
+ cmd jexec 1 ifconfig epair0a inet 192.168.2.1
+ cmd jexec 2 ifconfig bridge0 addm epair0b addm wlan0 up
+ cmd jexec 2 ifconfig epair0b up
+ cmd jexec 2 ifconfig wlan0 up
+ cmd jexec 2 ifconfig wlan0 inet ${IP_SUBNET}2
+ cmd jexec 3 ifconfig wlan1 up
+ cmd jexec 3 ifconfig wlan1 inet ${IP_SUBNET}3
+}
+
+run()
+{
+ NBR_TESTS=0 NBR_FAIL=0
+
+ # Number of all nodes in this test
+ ALL_NODES=`expr ${NBR_NODES} + 1`
+ # Test connectivity from each node to each other node
+ for i in `seq 1 ${ALL_NODES}`; do
+ for j in `seq 1 ${ALL_NODES}`; do
+ if [ "$i" != "$j" ]; then
+ # From vimage '$i' to vimage '$j'..
+ info "Checking ${i} -> ${j}.."
+ NBR_TESTS="`expr ${NBR_TESTS} + 1`"
+ # Return after a single successful packet
+ cmd jexec $i ping -q -t 5 -c 5 \
+ -o ${IP_SUBNET}${j}
+
+ if [ "$?" = "0" ]; then
+ info "CHECK: ${i} -> ${j}: SUCCESS"
+ else
+ info "CHECK: ${i} -> ${j}: FAILURE"
+ NBR_FAIL="`expr ${NBR_FAIL} + 1`"
+ fi
+ fi
+ done
+ done
+ if [ $NBR_FAIL = 0 ]; then
+ echo "ALL TESTS PASSED"
+ else
+ echo "FAILED ${NBR_FAIL} of ${NBR_TESTS} TESTS"
+ fi
+}
+
+teardown()
+{
+ cmd vis_map c
+ cmd jexec 2 ifconfig bridge0 destroy
+ # Bring epair back to host view, we bring both back
+ # otherwise a panic occurs, ie one is not enough.
+ cmd ifconfig epair0a -vnet 1
+ cmd ifconfig epair0b -vnet 2
+ cmd ifconfig epair0a destroy
+ n="`expr ${NBR_NODES} - 1`"
+ for i in `seq 0 ${n}`; do
+ vnet="`expr ${i} + 2`"
+ cmd jexec ${vnet} ifconfig wlan${i} destroy
+ done
+ for i in `seq 1 ${NBR_NODES}`; do
+ wtap_if="`expr $i - 1`"
+ cmd wtap d ${wtap_if}
+ cmd vimage -d ${i}
+ done
+ cmd vimage -d 3
+}
+
+EXEC_SETUP=0
+EXEC_RUN=0
+EXEC_TEARDOWN=0
+while [ "$#" -gt "0" ]
+do
+ case $1 in
+ -q)
+ FLAG_QUIET=1
+ ;;
+ 'all')
+ EXEC_SETUP=1
+ EXEC_RUN=1
+ EXEC_TEARDOWN=1
+ ;;
+ 'setup')
+ EXEC_SETUP=1
+ ;;
+ 'run')
+ EXEC_RUN=1
+ ;;
+ 'teardown')
+ EXEC_TEARDOWN=1
+ ;;
+ 'descr')
+ descr
+ exit 0
+ ;;
+ *)
+ echo "$0 {all | setup | run | teardown | descr [-q]}"
+ exit 127
+ ;;
+ esac
+ shift
+done
+
+if [ $EXEC_SETUP = 1 ]; then
+ setup
+fi
+if [ $EXEC_RUN = 1 ]; then
+ run
+fi
+if [ $EXEC_TEARDOWN = 1 ]; then
+ teardown
+fi
+
+exit 0
+
Added: projects/net80211_testsuite/wtap/005/test.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/net80211_testsuite/wtap/005/test.sh Wed Mar 21 15:54:44 2012 (r233279)
@@ -0,0 +1,249 @@
+#!/bin/sh
+
+# This program requires:
+# + wtap - to create/destroy the wtap instances
+# + vis_map - to setup the visibility map between wtap instances
+# + vimage - to configure/destroy vtap nodes
+
+# The name of the test that will be printed in the begining
+TEST_NAME="2 nodes and 2 PROXY nodes"
+
+# Global flags
+FLAG_QUIET=0
+
+# The number of nodes to test
+NBR_NODES=2
+
+# The subnet prefix
+IP_SUBNET="192.168.2."
+
+cmd()
+{
+ if [ $FLAG_QUIET = 1 ]; then
+ echo "*** " $* >> output
+ $* >> output
+ else
+ echo "*** " $*
+ $*
+ fi
+}
+
+info()
+{
+ if [ $FLAG_QUIET = 1 ]; then
+ echo "*** " $* >> output
+ else
+ echo "*** " $*
+ fi
+}
+
+descr()
+{
+ cat <<EOL
+
+This test establishes that the very basic 802.11s PROXY
+connectivity works.
+
+It:
+
+* creates two wtap instances
+* creates three vimage instances
+* creates one wlan vap for each wtap instance and places
+ each vap in one of the three vimage instances
+* creates two epair and places each end in one
+ of four vimage instances
+* creates two bridge and places it with a wtap in
+ one of the two vimage instances
+* sets up the visibility to the following:
+
+ -----MESH------
+ proxyA <--|--> A <-> B <--|--> proxyB
+ ---------------
+
+* does a ping test from each node to each other node.
+
+It is expected that the initial creation and discovery phase
+will take some time so the initial run will fail until discovery
+is done. A future extension to the test suite should be to
+set lower/upper bounds on the discovery phase time.
+
+EOL
+}
+
+setup()
+{
+ # Initialize output file
+ echo "" > output
+ echo "TEST: ${TEST_NAME}"
+
+ # Create wtap/vimage nodes
+ for i in `seq 1 ${NBR_NODES}`; do
+ wtap_if="`expr $i - 1`"
+ info "Setup: vimage $i - wtap$wtap_if"
+ cmd vimage -c $i
+ cmd wtap c $wtap_if
+ done
+ # Need one more vimage for the PROXY node
+ cmd vimage -c 3
+ cmd vimage -c 4
+
+ # Set visibility for each node to see the
+ # next node.
+ n="`expr ${NBR_NODES} - 1`"
+ for i in `seq 0 ${n}`; do
+ j="`expr ${i} + 1`"
+ cmd vis_map a $i $j
+ cmd vis_map a $j $i
+ done
+
+ # Makes the visibility map plugin deliver packets to resp. dest.
+ cmd vis_map o
+
+ # Create and setup PROXY A/B node with corresponding bridge
+ # NB: both epair must be created before moving them outside
+ # host view, otherwise they will receive same MAC address.
+ cmd ifconfig epair0 create
+ cmd ifconfig epair1 create
+ cmd ifconfig epair0a vnet 1
+ cmd ifconfig epair0b vnet 2
+ cmd ifconfig epair1a vnet 4
+ cmd ifconfig epair1b vnet 3
+ cmd ifconfig bridge0 create
+ cmd ifconfig bridge1 create
+ cmd ifconfig bridge0 vnet 2
+ cmd ifconfig bridge1 vnet 3
+
+ # Disables bridge filtering
+ cmd sysctl net.link.bridge.pfil_member=0
+ cmd sysctl net.link.bridge.pfil_bridge=0
+
+ # Create each wlan subinterface, place into the correct vnet
+ for i in `seq 0 ${n}`; do
+ vnet="`expr ${i} + 2`"
+ cmd ifconfig wlan${i} create wlandev wtap${i} wlanmode mesh
+ cmd ifconfig wlan${i} meshid mymesh
+ cmd wlandebug -i wlan${i} hwmp+input+output+mesh
+ cmd ifconfig wlan${i} vnet ${vnet}
+ done
+
+ # Bring all interfaces up.
+ # NB: Bridge need to be brought up before the bridged interfaces
+ cmd jexec 1 ifconfig epair0a inet 192.168.2.1
+ cmd jexec 2 ifconfig bridge0 addm epair0b addm wlan0 up
+ cmd jexec 2 ifconfig epair0b up
+ cmd jexec 2 ifconfig wlan0 up
+ cmd jexec 2 ifconfig wlan0 inet ${IP_SUBNET}2
+ cmd jexec 3 ifconfig bridge1 addm epair1b addm wlan1 up
+ cmd jexec 3 ifconfig epair1b up
+ cmd jexec 3 ifconfig wlan1 up
+ cmd jexec 3 ifconfig wlan1 inet ${IP_SUBNET}3
+ cmd jexec 4 ifconfig epair1a inet 192.168.2.4
+}
+
+run()
+{
+ NBR_TESTS=0 NBR_FAIL=0
+
+ # Number of all nodes in this test
+ ALL_NODES=`expr ${NBR_NODES} + 2`
+ # Test connectivity from each node to each other node
+ for i in `seq 1 ${ALL_NODES}`; do
+ for j in `seq 1 ${ALL_NODES}`; do
+ if [ "$i" != "$j" ]; then
+ # From vimage '$i' to vimage '$j'..
+ info "Checking ${i} -> ${j}.."
+ NBR_TESTS="`expr ${NBR_TESTS} + 1`"
+ # Return after a single successful packet
+ cmd jexec $i ping -q -t 5 -c 5 \
+ -o ${IP_SUBNET}${j}
+
+ if [ "$?" = "0" ]; then
+ info "CHECK: ${i} -> ${j}: SUCCESS"
+ else
+ info "CHECK: ${i} -> ${j}: FAILURE"
+ NBR_FAIL="`expr ${NBR_FAIL} + 1`"
+ fi
+ fi
+ done
+ done
+ if [ $NBR_FAIL = 0 ]; then
+ echo "ALL TESTS PASSED"
+ else
+ echo "FAILED ${NBR_FAIL} of ${NBR_TESTS} TESTS"
+ fi
+}
+
+teardown()
+{
+ cmd vis_map c
+ cmd jexec 2 ifconfig bridge0 destroy
+ cmd jexec 3 ifconfig bridge1 destroy
+ # Bring epair back to host view, we bring both back
+ # otherwise a panic occurs, ie one is not enough.
+ cmd ifconfig epair0a -vnet 1
+ cmd ifconfig epair0b -vnet 2
+ cmd ifconfig epair0a destroy
+ cmd ifconfig epair1a -vnet 4
+ cmd ifconfig epair1b -vnet 3
+ cmd ifconfig epair1a destroy
+ n="`expr ${NBR_NODES} - 1`"
+ for i in `seq 0 ${n}`; do
+ vnet="`expr ${i} + 2`"
+ cmd jexec ${vnet} ifconfig wlan${i} destroy
+ done
+ for i in `seq 1 ${NBR_NODES}`; do
+ wtap_if="`expr $i - 1`"
+ cmd wtap d ${wtap_if}
+ cmd vimage -d ${i}
+ done
+ cmd vimage -d 3
+ cmd vimage -d 4
+}
+
+EXEC_SETUP=0
+EXEC_RUN=0
+EXEC_TEARDOWN=0
+while [ "$#" -gt "0" ]
+do
+ case $1 in
+ -q)
+ FLAG_QUIET=1
+ ;;
+ 'all')
+ EXEC_SETUP=1
+ EXEC_RUN=1
+ EXEC_TEARDOWN=1
+ ;;
+ 'setup')
+ EXEC_SETUP=1
+ ;;
+ 'run')
+ EXEC_RUN=1
+ ;;
+ 'teardown')
+ EXEC_TEARDOWN=1
+ ;;
+ 'descr')
+ descr
+ exit 0
+ ;;
+ *)
+ echo "$0 {all | setup | run | teardown | descr [-q]}"
+ exit 127
+ ;;
+ esac
+ shift
+done
+
+if [ $EXEC_SETUP = 1 ]; then
+ setup
+fi
+if [ $EXEC_RUN = 1 ]; then
+ run
+fi
+if [ $EXEC_TEARDOWN = 1 ]; then
+ teardown
+fi
+
+exit 0
+
More information about the svn-src-projects
mailing list