sync to iproute2-2.6.16-060323
[iproute2.git] / testsuite / tests / cls-testbed.t
diff --git a/testsuite/tests/cls-testbed.t b/testsuite/tests/cls-testbed.t
new file mode 100644 (file)
index 0000000..efae2a5
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/bash
+# vim: ft=sh
+
+source lib/generic.sh
+
+QDISCS="cbq htb dsmark"
+
+for q in ${QDISCS}; do
+       ts_log "Preparing classifier testbed with qdisc $q"
+
+       for c in tests/cls/*.t; do
+
+               case "$q" in
+               cbq)
+                       ts_tc "cls-testbed" "cbq root qdisc creation" \
+                               qdisc add dev $DEV root handle 10:0 \
+                               cbq bandwidth 100Mbit avpkt 1400 mpu 64
+                       ts_tc "cls-testbed" "cbq root class creation" \
+                               class add dev $DEV parent 10:0  classid 10:12 \
+                               cbq bandwidth 100mbit rate 100mbit allot 1514 prio 3 \
+                               maxburst 1 avpkt  500 bounded
+                       ;;
+               htb)
+                       ts_qdisc_available "htb"
+                       if [ $? -eq 0 ]; then
+                               ts_log "cls-testbed: HTB is unsupported by $TC, skipping"
+                               continue;
+                       fi
+                       ts_tc "cls-testbed" "htb root qdisc creation" \
+                               qdisc add dev $DEV root handle 10:0 htb
+                       ts_tc "cls-testbed" "htb root class creation" \
+                               class add dev $DEV parent 10:0 classid 10:12 \
+                               htb rate 100Mbit quantum 1514
+                       ;;
+               dsmark)
+                       ts_qdisc_available "dsmark"
+                       if [ $? -eq 0 ]; then
+                               ts_log "cls-testbed: dsmark is unsupported by $TC, skipping"
+                               continue;
+                       fi
+                       ts_tc "cls-testbed" "dsmark root qdisc creation" \
+                               qdisc add dev $DEV root handle 20:0 \
+                               dsmark indices 64 default_index 1 set_tc_index
+                       ts_tc "cls-testbed" "dsmark class creation" \
+                               class change dev $DEV parent 20:0 classid 20:12 \
+                               dsmark mask 0xff value 2
+                       ts_tc "cls-testbed" "prio inner qdisc creation" \
+                               qdisc add dev $DEV parent 20:0 handle 10:0 prio
+                       ;;
+               *)
+                       ts_err "cls-testbed: no testbed configuration found for qdisc $q"
+                       continue
+                       ;;
+               esac
+
+               ts_tc "cls-testbed" "tree listing" qdisc list dev eth0
+               ts_tc "cls-testbed" "tree class listing" class list dev eth0
+               ts_log "cls-testbed: starting classifier test $c"
+               $c 
+
+               case "$q" in
+               *)
+                       ts_tc "cls-testbed" "generic qdisc tree deletion" \
+                               qdisc del dev $DEV root
+                       ;;
+               esac
+       done
+done