| [ |
| { |
| "id": "0582", |
| "name": "Create QFQ with default setting", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| ], |
| "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root qfq", |
| "expExitCode": "0", |
| "verifyCmd": "$TC qdisc show dev $DUMMY", |
| "matchPattern": "qdisc qfq 1: root refcnt [0-9]+", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC qdisc del dev $DUMMY handle 1: root" |
| ] |
| }, |
| { |
| "id": "c9a3", |
| "name": "Create QFQ with class weight setting", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| "$TC qdisc add dev $DUMMY handle 1: root qfq" |
| ], |
| "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100", |
| "expExitCode": "0", |
| "verifyCmd": "$TC class show dev $DUMMY", |
| "matchPattern": "class qfq 1:1 root weight 100 maxpkt", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC qdisc del dev $DUMMY handle 1: root" |
| ] |
| }, |
| { |
| "id": "d364", |
| "name": "Test QFQ with max class weight setting", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| "$TC qdisc add dev $DUMMY handle 1: root qfq" |
| ], |
| "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 9999", |
| "expExitCode": "2", |
| "verifyCmd": "$TC class show dev $DUMMY", |
| "matchPattern": "class qfq 1:1 root weight 9999 maxpkt", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC qdisc del dev $DUMMY handle 1: root" |
| ] |
| }, |
| { |
| "id": "8452", |
| "name": "Create QFQ with class maxpkt setting", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| "$TC qdisc add dev $DUMMY handle 1: root qfq" |
| ], |
| "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 2000", |
| "expExitCode": "0", |
| "verifyCmd": "$TC class show dev $DUMMY", |
| "matchPattern": "class qfq 1:1 root weight 1 maxpkt 2000", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC qdisc del dev $DUMMY handle 1: root" |
| ] |
| }, |
| { |
| "id": "22df", |
| "name": "Test QFQ class maxpkt setting lower bound", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| "$TC qdisc add dev $DUMMY handle 1: root qfq" |
| ], |
| "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 128", |
| "expExitCode": "2", |
| "verifyCmd": "$TC class show dev $DUMMY", |
| "matchPattern": "class qfq 1:1 root weight 1 maxpkt 128", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC qdisc del dev $DUMMY handle 1: root" |
| ] |
| }, |
| { |
| "id": "92ee", |
| "name": "Test QFQ class maxpkt setting upper bound", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| "$TC qdisc add dev $DUMMY handle 1: root qfq" |
| ], |
| "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 99999", |
| "expExitCode": "2", |
| "verifyCmd": "$TC class show dev $DUMMY", |
| "matchPattern": "class qfq 1:1 root weight 1 maxpkt 99999", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC qdisc del dev $DUMMY handle 1: root" |
| ] |
| }, |
| { |
| "id": "d920", |
| "name": "Create QFQ with multiple class setting", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| "$TC qdisc add dev $DUMMY handle 1: root qfq", |
| "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100" |
| ], |
| "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:2 qfq weight 200", |
| "expExitCode": "0", |
| "verifyCmd": "$TC class show dev $DUMMY", |
| "matchPattern": "class qfq 1:[0-9]+ root weight [0-9]+00 maxpkt", |
| "matchCount": "2", |
| "teardown": [ |
| "$TC qdisc del dev $DUMMY handle 1: root" |
| ] |
| }, |
| { |
| "id": "0548", |
| "name": "Delete QFQ with handle", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| "$TC qdisc add dev $DUMMY handle 1: root qfq", |
| "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100" |
| ], |
| "cmdUnderTest": "$TC qdisc del dev $DUMMY handle 1: root", |
| "expExitCode": "0", |
| "verifyCmd": "$TC class show dev $DUMMY", |
| "matchPattern": "qdisc qfq 1: root refcnt [0-9]+", |
| "matchCount": "0", |
| "teardown": [ |
| ] |
| }, |
| { |
| "id": "5901", |
| "name": "Show QFQ class", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| ], |
| "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root qfq", |
| "expExitCode": "0", |
| "verifyCmd": "$TC class show dev $DUMMY", |
| "matchPattern": "class qfq 1:", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC qdisc del dev $DUMMY handle 1: root" |
| ] |
| }, |
| { |
| "id": "85ee", |
| "name": "QFQ with big MTU", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| "$IP link set dev $DUMMY mtu 2147483647 || /bin/true", |
| "$TC qdisc add dev $DUMMY handle 1: root qfq" |
| ], |
| "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100", |
| "expExitCode": "2", |
| "verifyCmd": "$TC class show dev $DUMMY", |
| "matchPattern": "class qfq 1:", |
| "matchCount": "0", |
| "teardown": [ |
| ] |
| }, |
| { |
| "id": "ddfa", |
| "name": "QFQ with small MTU", |
| "category": [ |
| "qdisc", |
| "qfq" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| "$IP link set dev $DUMMY mtu 256 || /bin/true", |
| "$TC qdisc add dev $DUMMY handle 1: root qfq" |
| ], |
| "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100", |
| "expExitCode": "2", |
| "verifyCmd": "$TC class show dev $DUMMY", |
| "matchPattern": "class qfq 1:", |
| "matchCount": "0", |
| "teardown": [ |
| ] |
| }, |
| { |
| "id": "5993", |
| "name": "QFQ with stab overhead greater than max packet len", |
| "category": [ |
| "qdisc", |
| "qfq", |
| "scapy" |
| ], |
| "plugins": { |
| "requires": [ |
| "nsPlugin", |
| "scapyPlugin" |
| ] |
| }, |
| "setup": [ |
| "$IP link set dev $DUMMY up || /bin/true", |
| "$TC qdisc add dev $DUMMY handle 1: stab mtu 2048 tsize 512 mpu 0 overhead 999999999 linklayer ethernet root qfq", |
| "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100", |
| "$TC qdisc add dev $DEV1 clsact", |
| "$TC filter add dev $DEV1 ingress protocol ip flower dst_ip 1.3.3.7/32 action mirred egress mirror dev $DUMMY" |
| ], |
| "cmdUnderTest": "$TC filter add dev $DUMMY parent 1: matchall classid 1:1", |
| "scapy": [ |
| { |
| "iface": "$DEV0", |
| "count": 22, |
| "packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='1.3.3.7')/TCP(sport=5000,dport=10)" |
| } |
| ], |
| "expExitCode": "0", |
| "verifyCmd": "$TC -s qdisc ls dev $DUMMY", |
| "matchPattern": "dropped 22", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC qdisc del dev $DUMMY handle 1: root qfq" |
| ] |
| } |
| ] |