1856359c0SZhengchao Shao[
2856359c0SZhengchao Shao    {
3856359c0SZhengchao Shao        "id": "0582",
4856359c0SZhengchao Shao        "name": "Create QFQ with default setting",
5856359c0SZhengchao Shao        "category": [
6856359c0SZhengchao Shao            "qdisc",
7856359c0SZhengchao Shao            "qfq"
8856359c0SZhengchao Shao        ],
9856359c0SZhengchao Shao        "plugins": {
10856359c0SZhengchao Shao            "requires": "nsPlugin"
11856359c0SZhengchao Shao        },
12856359c0SZhengchao Shao        "setup": [
13856359c0SZhengchao Shao            "$IP link add dev $DUMMY type dummy || /bin/true"
14856359c0SZhengchao Shao        ],
15856359c0SZhengchao Shao        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root qfq",
16856359c0SZhengchao Shao        "expExitCode": "0",
17856359c0SZhengchao Shao        "verifyCmd": "$TC qdisc show dev $DUMMY",
18856359c0SZhengchao Shao        "matchPattern": "qdisc qfq 1: root refcnt [0-9]+",
19856359c0SZhengchao Shao        "matchCount": "1",
20856359c0SZhengchao Shao        "teardown": [
21856359c0SZhengchao Shao            "$TC qdisc del dev $DUMMY handle 1: root",
22856359c0SZhengchao Shao            "$IP link del dev $DUMMY type dummy"
23856359c0SZhengchao Shao        ]
24856359c0SZhengchao Shao    },
25856359c0SZhengchao Shao    {
26856359c0SZhengchao Shao        "id": "c9a3",
27856359c0SZhengchao Shao        "name": "Create QFQ with class weight setting",
28856359c0SZhengchao Shao        "category": [
29856359c0SZhengchao Shao            "qdisc",
30856359c0SZhengchao Shao            "qfq"
31856359c0SZhengchao Shao        ],
32856359c0SZhengchao Shao        "plugins": {
33856359c0SZhengchao Shao            "requires": "nsPlugin"
34856359c0SZhengchao Shao        },
35856359c0SZhengchao Shao        "setup": [
36856359c0SZhengchao Shao            "$IP link add dev $DUMMY type dummy || /bin/true",
37856359c0SZhengchao Shao            "$TC qdisc add dev $DUMMY handle 1: root qfq"
38856359c0SZhengchao Shao        ],
39856359c0SZhengchao Shao        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100",
40856359c0SZhengchao Shao        "expExitCode": "0",
41856359c0SZhengchao Shao        "verifyCmd": "$TC class show dev $DUMMY",
42856359c0SZhengchao Shao        "matchPattern": "class qfq 1:1 root weight 100 maxpkt",
43856359c0SZhengchao Shao        "matchCount": "1",
44856359c0SZhengchao Shao        "teardown": [
45856359c0SZhengchao Shao            "$TC qdisc del dev $DUMMY handle 1: root",
46856359c0SZhengchao Shao            "$IP link del dev $DUMMY type dummy"
47856359c0SZhengchao Shao        ]
48856359c0SZhengchao Shao    },
49856359c0SZhengchao Shao    {
507eb060a5SPedro Tammela        "id": "d364",
517eb060a5SPedro Tammela        "name": "Test QFQ with max class weight setting",
527eb060a5SPedro Tammela        "category": [
537eb060a5SPedro Tammela            "qdisc",
547eb060a5SPedro Tammela            "qfq"
557eb060a5SPedro Tammela        ],
567eb060a5SPedro Tammela        "plugins": {
577eb060a5SPedro Tammela            "requires": "nsPlugin"
587eb060a5SPedro Tammela        },
597eb060a5SPedro Tammela        "setup": [
607eb060a5SPedro Tammela            "$IP link add dev $DUMMY type dummy || /bin/true",
617eb060a5SPedro Tammela            "$TC qdisc add dev $DUMMY handle 1: root qfq"
627eb060a5SPedro Tammela        ],
637eb060a5SPedro Tammela        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 9999",
647eb060a5SPedro Tammela        "expExitCode": "2",
657eb060a5SPedro Tammela        "verifyCmd": "$TC class show dev $DUMMY",
667eb060a5SPedro Tammela        "matchPattern": "class qfq 1:1 root weight 9999 maxpkt",
677eb060a5SPedro Tammela        "matchCount": "0",
687eb060a5SPedro Tammela        "teardown": [
697eb060a5SPedro Tammela            "$TC qdisc del dev $DUMMY handle 1: root",
707eb060a5SPedro Tammela            "$IP link del dev $DUMMY type dummy"
717eb060a5SPedro Tammela        ]
727eb060a5SPedro Tammela    },
737eb060a5SPedro Tammela    {
74856359c0SZhengchao Shao        "id": "8452",
75856359c0SZhengchao Shao        "name": "Create QFQ with class maxpkt setting",
76856359c0SZhengchao Shao        "category": [
77856359c0SZhengchao Shao            "qdisc",
78856359c0SZhengchao Shao            "qfq"
79856359c0SZhengchao Shao        ],
80856359c0SZhengchao Shao        "plugins": {
81856359c0SZhengchao Shao            "requires": "nsPlugin"
82856359c0SZhengchao Shao        },
83856359c0SZhengchao Shao        "setup": [
84856359c0SZhengchao Shao            "$IP link add dev $DUMMY type dummy || /bin/true",
85856359c0SZhengchao Shao            "$TC qdisc add dev $DUMMY handle 1: root qfq"
86856359c0SZhengchao Shao        ],
87856359c0SZhengchao Shao        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 2000",
88856359c0SZhengchao Shao        "expExitCode": "0",
89856359c0SZhengchao Shao        "verifyCmd": "$TC class show dev $DUMMY",
90856359c0SZhengchao Shao        "matchPattern": "class qfq 1:1 root weight 1 maxpkt 2000",
91856359c0SZhengchao Shao        "matchCount": "1",
92856359c0SZhengchao Shao        "teardown": [
93856359c0SZhengchao Shao            "$TC qdisc del dev $DUMMY handle 1: root",
94856359c0SZhengchao Shao            "$IP link del dev $DUMMY type dummy"
95856359c0SZhengchao Shao        ]
96856359c0SZhengchao Shao    },
97856359c0SZhengchao Shao    {
987eb060a5SPedro Tammela        "id": "22df",
997eb060a5SPedro Tammela        "name": "Test QFQ class maxpkt setting lower bound",
1007eb060a5SPedro Tammela        "category": [
1017eb060a5SPedro Tammela            "qdisc",
1027eb060a5SPedro Tammela            "qfq"
1037eb060a5SPedro Tammela        ],
1047eb060a5SPedro Tammela        "plugins": {
1057eb060a5SPedro Tammela            "requires": "nsPlugin"
1067eb060a5SPedro Tammela        },
1077eb060a5SPedro Tammela        "setup": [
1087eb060a5SPedro Tammela            "$IP link add dev $DUMMY type dummy || /bin/true",
1097eb060a5SPedro Tammela            "$TC qdisc add dev $DUMMY handle 1: root qfq"
1107eb060a5SPedro Tammela        ],
1117eb060a5SPedro Tammela        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 128",
1127eb060a5SPedro Tammela        "expExitCode": "2",
1137eb060a5SPedro Tammela        "verifyCmd": "$TC class show dev $DUMMY",
1147eb060a5SPedro Tammela        "matchPattern": "class qfq 1:1 root weight 1 maxpkt 128",
1157eb060a5SPedro Tammela        "matchCount": "0",
1167eb060a5SPedro Tammela        "teardown": [
1177eb060a5SPedro Tammela            "$TC qdisc del dev $DUMMY handle 1: root",
1187eb060a5SPedro Tammela            "$IP link del dev $DUMMY type dummy"
1197eb060a5SPedro Tammela        ]
1207eb060a5SPedro Tammela    },
1217eb060a5SPedro Tammela    {
1227eb060a5SPedro Tammela        "id": "92ee",
1237eb060a5SPedro Tammela        "name": "Test QFQ class maxpkt setting upper bound",
1247eb060a5SPedro Tammela        "category": [
1257eb060a5SPedro Tammela            "qdisc",
1267eb060a5SPedro Tammela            "qfq"
1277eb060a5SPedro Tammela        ],
1287eb060a5SPedro Tammela        "plugins": {
1297eb060a5SPedro Tammela            "requires": "nsPlugin"
1307eb060a5SPedro Tammela        },
1317eb060a5SPedro Tammela        "setup": [
1327eb060a5SPedro Tammela            "$IP link add dev $DUMMY type dummy || /bin/true",
1337eb060a5SPedro Tammela            "$TC qdisc add dev $DUMMY handle 1: root qfq"
1347eb060a5SPedro Tammela        ],
1357eb060a5SPedro Tammela        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 99999",
1367eb060a5SPedro Tammela        "expExitCode": "2",
1377eb060a5SPedro Tammela        "verifyCmd": "$TC class show dev $DUMMY",
1387eb060a5SPedro Tammela        "matchPattern": "class qfq 1:1 root weight 1 maxpkt 99999",
1397eb060a5SPedro Tammela        "matchCount": "0",
1407eb060a5SPedro Tammela        "teardown": [
1417eb060a5SPedro Tammela            "$TC qdisc del dev $DUMMY handle 1: root",
1427eb060a5SPedro Tammela            "$IP link del dev $DUMMY type dummy"
1437eb060a5SPedro Tammela        ]
1447eb060a5SPedro Tammela    },
1457eb060a5SPedro Tammela    {
146856359c0SZhengchao Shao        "id": "d920",
147856359c0SZhengchao Shao        "name": "Create QFQ with multiple class setting",
148856359c0SZhengchao Shao        "category": [
149856359c0SZhengchao Shao            "qdisc",
150856359c0SZhengchao Shao            "qfq"
151856359c0SZhengchao Shao        ],
152856359c0SZhengchao Shao        "plugins": {
153856359c0SZhengchao Shao            "requires": "nsPlugin"
154856359c0SZhengchao Shao        },
155856359c0SZhengchao Shao        "setup": [
156856359c0SZhengchao Shao            "$IP link add dev $DUMMY type dummy || /bin/true",
157856359c0SZhengchao Shao            "$TC qdisc add dev $DUMMY handle 1: root qfq",
158856359c0SZhengchao Shao            "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100"
159856359c0SZhengchao Shao        ],
160856359c0SZhengchao Shao        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:2 qfq weight 200",
161856359c0SZhengchao Shao        "expExitCode": "0",
162856359c0SZhengchao Shao        "verifyCmd": "$TC class show dev $DUMMY",
163856359c0SZhengchao Shao        "matchPattern": "class qfq 1:[0-9]+ root weight [0-9]+00 maxpkt",
164856359c0SZhengchao Shao        "matchCount": "2",
165856359c0SZhengchao Shao        "teardown": [
166856359c0SZhengchao Shao            "$TC qdisc del dev $DUMMY handle 1: root",
167856359c0SZhengchao Shao            "$IP link del dev $DUMMY type dummy"
168856359c0SZhengchao Shao        ]
169856359c0SZhengchao Shao    },
170856359c0SZhengchao Shao    {
171856359c0SZhengchao Shao        "id": "0548",
172856359c0SZhengchao Shao        "name": "Delete QFQ with handle",
173856359c0SZhengchao Shao        "category": [
174856359c0SZhengchao Shao            "qdisc",
175856359c0SZhengchao Shao            "qfq"
176856359c0SZhengchao Shao        ],
177856359c0SZhengchao Shao        "plugins": {
178856359c0SZhengchao Shao            "requires": "nsPlugin"
179856359c0SZhengchao Shao        },
180856359c0SZhengchao Shao        "setup": [
181856359c0SZhengchao Shao            "$IP link add dev $DUMMY type dummy || /bin/true",
182856359c0SZhengchao Shao            "$TC qdisc add dev $DUMMY handle 1: root qfq",
183856359c0SZhengchao Shao            "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100"
184856359c0SZhengchao Shao        ],
185856359c0SZhengchao Shao        "cmdUnderTest": "$TC qdisc del dev $DUMMY handle 1: root",
186856359c0SZhengchao Shao        "expExitCode": "0",
187856359c0SZhengchao Shao        "verifyCmd": "$TC class show dev $DUMMY",
188856359c0SZhengchao Shao        "matchPattern": "qdisc qfq 1: root refcnt [0-9]+",
189856359c0SZhengchao Shao        "matchCount": "0",
190856359c0SZhengchao Shao        "teardown": [
191856359c0SZhengchao Shao            "$IP link del dev $DUMMY type dummy"
192856359c0SZhengchao Shao        ]
193856359c0SZhengchao Shao    },
194856359c0SZhengchao Shao    {
195856359c0SZhengchao Shao        "id": "5901",
196856359c0SZhengchao Shao        "name": "Show QFQ class",
197856359c0SZhengchao Shao        "category": [
198856359c0SZhengchao Shao            "qdisc",
199856359c0SZhengchao Shao            "qfq"
200856359c0SZhengchao Shao        ],
201856359c0SZhengchao Shao        "plugins": {
202856359c0SZhengchao Shao            "requires": "nsPlugin"
203856359c0SZhengchao Shao        },
204856359c0SZhengchao Shao        "setup": [
205856359c0SZhengchao Shao            "$IP link add dev $DUMMY type dummy || /bin/true"
206856359c0SZhengchao Shao        ],
207856359c0SZhengchao Shao        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root qfq",
208856359c0SZhengchao Shao        "expExitCode": "0",
209856359c0SZhengchao Shao        "verifyCmd": "$TC class show dev $DUMMY",
210856359c0SZhengchao Shao        "matchPattern": "class qfq 1:",
211856359c0SZhengchao Shao        "matchCount": "0",
212856359c0SZhengchao Shao        "teardown": [
213856359c0SZhengchao Shao            "$TC qdisc del dev $DUMMY handle 1: root",
214856359c0SZhengchao Shao            "$IP link del dev $DUMMY type dummy"
215856359c0SZhengchao Shao        ]
216c5a06fdcSPedro Tammela    },
217c5a06fdcSPedro Tammela    {
218c5a06fdcSPedro Tammela        "id": "85ee",
219c5a06fdcSPedro Tammela        "name": "QFQ with big MTU",
220c5a06fdcSPedro Tammela        "category": [
221c5a06fdcSPedro Tammela            "qdisc",
222c5a06fdcSPedro Tammela            "qfq"
223c5a06fdcSPedro Tammela        ],
224c5a06fdcSPedro Tammela        "plugins": {
225c5a06fdcSPedro Tammela            "requires": "nsPlugin"
226c5a06fdcSPedro Tammela        },
227c5a06fdcSPedro Tammela        "setup": [
228c5a06fdcSPedro Tammela            "$IP link add dev $DUMMY type dummy || /bin/true",
229c5a06fdcSPedro Tammela            "$IP link set dev $DUMMY mtu 2147483647 || /bin/true",
230c5a06fdcSPedro Tammela            "$TC qdisc add dev $DUMMY handle 1: root qfq"
231c5a06fdcSPedro Tammela        ],
232c5a06fdcSPedro Tammela        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100",
233c5a06fdcSPedro Tammela        "expExitCode": "2",
234c5a06fdcSPedro Tammela        "verifyCmd": "$TC class show dev $DUMMY",
235c5a06fdcSPedro Tammela        "matchPattern": "class qfq 1:",
236c5a06fdcSPedro Tammela        "matchCount": "0",
237c5a06fdcSPedro Tammela        "teardown": [
238c5a06fdcSPedro Tammela            "$IP link del dev $DUMMY type dummy"
239c5a06fdcSPedro Tammela        ]
240c5a06fdcSPedro Tammela    },
241c5a06fdcSPedro Tammela    {
242c5a06fdcSPedro Tammela        "id": "ddfa",
243c5a06fdcSPedro Tammela        "name": "QFQ with small MTU",
244c5a06fdcSPedro Tammela        "category": [
245c5a06fdcSPedro Tammela            "qdisc",
246c5a06fdcSPedro Tammela            "qfq"
247c5a06fdcSPedro Tammela        ],
248c5a06fdcSPedro Tammela        "plugins": {
249c5a06fdcSPedro Tammela            "requires": "nsPlugin"
250c5a06fdcSPedro Tammela        },
251c5a06fdcSPedro Tammela        "setup": [
252c5a06fdcSPedro Tammela            "$IP link add dev $DUMMY type dummy || /bin/true",
253c5a06fdcSPedro Tammela            "$IP link set dev $DUMMY mtu 256 || /bin/true",
254c5a06fdcSPedro Tammela            "$TC qdisc add dev $DUMMY handle 1: root qfq"
255c5a06fdcSPedro Tammela        ],
256c5a06fdcSPedro Tammela        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100",
257c5a06fdcSPedro Tammela        "expExitCode": "2",
258c5a06fdcSPedro Tammela        "verifyCmd": "$TC class show dev $DUMMY",
259c5a06fdcSPedro Tammela        "matchPattern": "class qfq 1:",
260c5a06fdcSPedro Tammela        "matchCount": "0",
261c5a06fdcSPedro Tammela        "teardown": [
262c5a06fdcSPedro Tammela            "$IP link del dev $DUMMY type dummy"
263c5a06fdcSPedro Tammela        ]
264*137f6219SPedro Tammela    },
265*137f6219SPedro Tammela    {
266*137f6219SPedro Tammela        "id": "5993",
267*137f6219SPedro Tammela        "name": "QFQ with stab overhead greater than max packet len",
268*137f6219SPedro Tammela        "category": [
269*137f6219SPedro Tammela            "qdisc",
270*137f6219SPedro Tammela            "qfq",
271*137f6219SPedro Tammela            "scapy"
272*137f6219SPedro Tammela        ],
273*137f6219SPedro Tammela        "plugins": {
274*137f6219SPedro Tammela            "requires": [
275*137f6219SPedro Tammela                "nsPlugin",
276*137f6219SPedro Tammela                "scapyPlugin"
277*137f6219SPedro Tammela            ]
278*137f6219SPedro Tammela        },
279*137f6219SPedro Tammela        "setup": [
280*137f6219SPedro Tammela            "$IP link add dev $DUMMY type dummy || /bin/true",
281*137f6219SPedro Tammela            "$IP link set dev $DUMMY up || /bin/true",
282*137f6219SPedro Tammela            "$TC qdisc add dev $DUMMY handle 1: stab mtu 2048 tsize 512 mpu 0 overhead 999999999 linklayer ethernet root qfq",
283*137f6219SPedro Tammela            "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100",
284*137f6219SPedro Tammela            "$TC qdisc add dev $DEV1 clsact",
285*137f6219SPedro Tammela            "$TC filter add dev $DEV1 ingress protocol ip flower dst_ip 1.3.3.7/32 action mirred egress mirror dev $DUMMY"
286*137f6219SPedro Tammela        ],
287*137f6219SPedro Tammela        "cmdUnderTest": "$TC filter add dev $DUMMY parent 1: matchall classid 1:1",
288*137f6219SPedro Tammela        "scapy": [
289*137f6219SPedro Tammela            {
290*137f6219SPedro Tammela                "iface": "$DEV0",
291*137f6219SPedro Tammela                "count": 22,
292*137f6219SPedro Tammela                "packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='1.3.3.7')/TCP(sport=5000,dport=10)"
293*137f6219SPedro Tammela            }
294*137f6219SPedro Tammela        ],
295*137f6219SPedro Tammela        "expExitCode": "0",
296*137f6219SPedro Tammela        "verifyCmd": "$TC -s qdisc ls dev $DUMMY",
297*137f6219SPedro Tammela        "matchPattern": "dropped 22",
298*137f6219SPedro Tammela        "matchCount": "1",
299*137f6219SPedro Tammela        "teardown": [
300*137f6219SPedro Tammela            "$TC qdisc del dev $DUMMY handle 1: root qfq"
301*137f6219SPedro Tammela        ]
302856359c0SZhengchao Shao    }
303856359c0SZhengchao Shao]
304