diff options
Diffstat (limited to 'tests/functest')
-rwxr-xr-x | tests/functest | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/tests/functest b/tests/functest new file mode 100755 index 0000000..a321c59 --- /dev/null +++ b/tests/functest @@ -0,0 +1,171 @@ +#! /bin/bash +BR=${1:-"br549"} +ETH=${2:-"eth0"} +maxports=${3:-1000} + +echo "Ethernet Bridge functional test" + +echo -n "Testing kernel: " ; uname -a +echo -n "Utilities: " ; brctl -V + +# fetch ip of working $ETH +IP=`/sbin/ifconfig $ETH | sed -n -e 's/^.*inet addr:\([0-9][0-9\.]*\).*$/\1/p'` +echo "Using IP address $IP" + +# All commands in this part must succeed +set -e + +echo "0. Creating $maxports dummy devices" +modprobe dummy numdummies=$maxports + +echo "1. Creating bridge $BR" +brctl addbr $BR +brctl stp $BR on + +echo "2. Add $ETH" +ifconfig $ETH 0.0.0.0 +brctl addif $BR $ETH + +echo "3. Bring up bridge" +ifconfig $BR $IP + +echo "4 Bring up another bridge" +brctl addbr "brx%d" +ifconfig brx0 1.1.1.1 + +echo "5 Bring down bridge" +ifconfig brx0 down +brctl delbr brx0 + +echo -n "6. Add " $maxports " ports:" +for (( i=1; i < $maxports; i++)) +do + brctl addif $BR dummy$i + if [[ $(( $i % 10 )) -eq 10 ]] + then echo -n '.' + fi +done +echo + +echo -n "7. Delete those ports:" +for (( i=1; i < $maxports; i++)) +do + brctl delif $BR dummy$i + if [[ $(( $i % 10 )) -eq 10 ]] + then echo -n '.' + fi +done +echo + +echo "8. Notififer cases" +brctl addif $BR dummy0 + +echo "8a Device down" +ifconfig dummy0 down + +echo "8b Change device address" +ifconfig dummy0 hw ether 00:0d:02:03:04:05 + +echo "8c. Device up" +ifconfig dummy0 up + +echo "8d Unregister device (slow)" +rmmod dummy +echo "** Done" + +modprobe dummy numdummies=2 + +set +e + +echo "10 Error cases" +echo -n " duplicate bridge - " +brctl addbr $BR + +echo -n " bridge to bridge - " +brctl addbr brTmp +brctl addif $BR brTmp + +echo -n " already in other bridge - " +brctl addif brTmp $ETH + +echo -n " already in this bridge - " +brctl addif $BR $ETH + +echo -n " remove from wrong bridge - " +brctl delif brTmp $ETH +brctl delbr brTmp + +echo -n " remove bridge $ETH - " +brctl delbr $ETH + +echo -n " remove bridge bogus - " +brctl delbr bogus + +echo -n " remove still active bridge - " +brctl delbr $BR + +echo -n " zero hw address - " +ifconfig dummy0 hw ether 00:00:00:00:00:00 +brctl addif $BR dummy0 + +echo -n " duplicate hw address - " +ifconfig dummy0 hw ether 00:0d:01:00:00:00 +ifconfig dummy1 hw ether 00:0d:01:00:00:00 +brctl addif $BR dummy0 +brctl addif $BR dummy1 +# leave dummy0 for next test. + +echo "10 Tuning" +set -e +brctl stp $BR off +brctl stp $BR on +brctl setageing $BR 4000 +brctl setbridgeprio $BR 1 +brctl setfd $BR 120 +brctl sethello $BR 20 +brctl setmaxage $BR 1000 +brctl setpathcost $BR dummy0 50 +brctl setportprio $BR dummy0 2 + +echo "Status check" +brctl show +read -p "Ok?" +brctl showstp $BR +read -p "Ok?" +brctl showmacs $BR +read -p "Ok?" + + +echo "30 Shutdown" +ifconfig $BR down +brctl delbr $BR +ifconfig $ETH $IP + +echo "31 Remove bridge module" +rmmod bridge +rmmod dummy +rmmod bridge + +echo "32 Check for dead bridge cleanup" +brctl addbr $BR +rmmod bridge +modprobe bridge +sleep 1 + +echo "33 Remove module with race" +brctl addbr $BR +ifconfig $BR 9.9.9.9 + +rmmod --wait bridge & +sleep 2 +brctl addbr brXX +if ifconfig brXX 1.1.1.1 ; then + echo "?? ifconfig succeeded" + ifconfig brXX down +fi + +ifconfig $BR down +wait + +echo "*** Done ***" + |