1[
2    {
3        "id": "983b",
4        "name": "Create FQ with default setting",
5        "category": [
6            "qdisc",
7            "fq"
8        ],
9        "plugins": {
10            "requires": "nsPlugin"
11        },
12        "setup": [
13            "$IP link add dev $DUMMY type dummy || /bin/true"
14        ],
15        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq",
16        "expExitCode": "0",
17        "verifyCmd": "$TC qdisc show dev $DUMMY",
18        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit",
19        "matchCount": "1",
20        "teardown": [
21            "$TC qdisc del dev $DUMMY handle 1: root",
22            "$IP link del dev $DUMMY type dummy"
23        ]
24    },
25    {
26        "id": "38a1",
27        "name": "Create FQ with limit packet setting",
28        "category": [
29            "qdisc",
30            "fq"
31        ],
32        "plugins": {
33            "requires": "nsPlugin"
34        },
35        "setup": [
36            "$IP link add dev $DUMMY type dummy || /bin/true"
37        ],
38        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq limit 3000",
39        "expExitCode": "0",
40        "verifyCmd": "$TC qdisc show dev $DUMMY",
41        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 3000p",
42        "matchCount": "1",
43        "teardown": [
44            "$TC qdisc del dev $DUMMY handle 1: root",
45            "$IP link del dev $DUMMY type dummy"
46        ]
47    },
48    {
49        "id": "0a18",
50        "name": "Create FQ with flow_limit setting",
51        "category": [
52            "qdisc",
53            "fq"
54        ],
55        "plugins": {
56            "requires": "nsPlugin"
57        },
58        "setup": [
59            "$IP link add dev $DUMMY type dummy || /bin/true"
60        ],
61        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq flow_limit 300",
62        "expExitCode": "0",
63        "verifyCmd": "$TC qdisc show dev $DUMMY",
64        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 300p",
65        "matchCount": "1",
66        "teardown": [
67            "$TC qdisc del dev $DUMMY handle 1: root",
68            "$IP link del dev $DUMMY type dummy"
69        ]
70    },
71    {
72        "id": "2390",
73        "name": "Create FQ with quantum setting",
74        "category": [
75            "qdisc",
76            "fq"
77        ],
78        "plugins": {
79            "requires": "nsPlugin"
80        },
81        "setup": [
82            "$IP link add dev $DUMMY type dummy || /bin/true"
83        ],
84        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq quantum 9000",
85        "expExitCode": "0",
86        "verifyCmd": "$TC qdisc show dev $DUMMY",
87        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p buckets.*orphan_mask 1023 quantum 9000b",
88        "matchCount": "1",
89        "teardown": [
90            "$TC qdisc del dev $DUMMY handle 1: root",
91            "$IP link del dev $DUMMY type dummy"
92        ]
93    },
94    {
95        "id": "845b",
96        "name": "Create FQ with initial_quantum setting",
97        "category": [
98            "qdisc",
99            "fq"
100        ],
101        "plugins": {
102            "requires": "nsPlugin"
103        },
104        "setup": [
105            "$IP link add dev $DUMMY type dummy || /bin/true"
106        ],
107        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq initial_quantum 900000",
108        "expExitCode": "0",
109        "verifyCmd": "$TC qdisc show dev $DUMMY",
110        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p buckets.*initial_quantum 900000b",
111        "matchCount": "1",
112        "teardown": [
113            "$TC qdisc del dev $DUMMY handle 1: root",
114            "$IP link del dev $DUMMY type dummy"
115        ]
116    },
117    {
118        "id": "10f7",
119        "name": "Create FQ with invalid initial_quantum setting",
120        "category": [
121            "qdisc",
122            "fq"
123        ],
124        "plugins": {
125            "requires": "nsPlugin"
126        },
127        "setup": [
128            "$IP link add dev $DUMMY type dummy || /bin/true"
129        ],
130        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq initial_quantum 0x80000000",
131        "expExitCode": "2",
132        "verifyCmd": "$TC qdisc show dev $DUMMY",
133        "matchPattern": "qdisc fq 1: root.*initial_quantum 2048Mb",
134        "matchCount": "0",
135        "teardown": [
136            "$IP link del dev $DUMMY type dummy"
137        ]
138    },
139    {
140        "id": "9398",
141        "name": "Create FQ with maxrate setting",
142        "category": [
143            "qdisc",
144            "fq"
145        ],
146        "plugins": {
147            "requires": "nsPlugin"
148        },
149        "setup": [
150            "$IP link add dev $DUMMY type dummy || /bin/true"
151        ],
152        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq maxrate 100000",
153        "expExitCode": "0",
154        "verifyCmd": "$TC qdisc show dev $DUMMY",
155        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p buckets.*maxrate 100Kbit",
156        "matchCount": "1",
157        "teardown": [
158            "$TC qdisc del dev $DUMMY handle 1: root",
159            "$IP link del dev $DUMMY type dummy"
160        ]
161    },
162    {
163        "id": "342c",
164        "name": "Create FQ with nopacing setting",
165        "category": [
166            "qdisc",
167            "fq"
168        ],
169        "plugins": {
170            "requires": "nsPlugin"
171        },
172        "setup": [
173            "$IP link add dev $DUMMY type dummy || /bin/true"
174        ],
175        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq nopacing",
176        "expExitCode": "0",
177        "verifyCmd": "$TC qdisc show dev $DUMMY",
178        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p.*nopacing",
179        "matchCount": "1",
180        "teardown": [
181            "$TC qdisc del dev $DUMMY handle 1: root",
182            "$IP link del dev $DUMMY type dummy"
183        ]
184    },
185    {
186        "id": "6391",
187        "name": "Create FQ with refill_delay setting",
188        "category": [
189            "qdisc",
190            "fq"
191        ],
192        "plugins": {
193            "requires": "nsPlugin"
194        },
195        "setup": [
196            "$IP link add dev $DUMMY type dummy || /bin/true"
197        ],
198        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq refill_delay 100ms",
199        "expExitCode": "0",
200        "verifyCmd": "$TC qdisc show dev $DUMMY",
201        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p.*refill_delay 100ms",
202        "matchCount": "1",
203        "teardown": [
204            "$TC qdisc del dev $DUMMY handle 1: root",
205            "$IP link del dev $DUMMY type dummy"
206        ]
207    },
208    {
209        "id": "238b",
210        "name": "Create FQ with low_rate_threshold setting",
211        "category": [
212            "qdisc",
213            "fq"
214        ],
215        "plugins": {
216            "requires": "nsPlugin"
217        },
218        "setup": [
219            "$IP link add dev $DUMMY type dummy || /bin/true"
220        ],
221        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq low_rate_threshold 10000",
222        "expExitCode": "0",
223        "verifyCmd": "$TC qdisc show dev $DUMMY",
224        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p.*low_rate_threshold 10Kbit",
225        "matchCount": "1",
226        "teardown": [
227            "$TC qdisc del dev $DUMMY handle 1: root",
228            "$IP link del dev $DUMMY type dummy"
229        ]
230    },
231    {
232        "id": "7582",
233        "name": "Create FQ with orphan_mask setting",
234        "category": [
235            "qdisc",
236            "fq"
237        ],
238        "plugins": {
239            "requires": "nsPlugin"
240        },
241        "setup": [
242            "$IP link add dev $DUMMY type dummy || /bin/true"
243        ],
244        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq orphan_mask 255",
245        "expExitCode": "0",
246        "verifyCmd": "$TC qdisc show dev $DUMMY",
247        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p.*orphan_mask 255",
248        "matchCount": "1",
249        "teardown": [
250            "$TC qdisc del dev $DUMMY handle 1: root",
251            "$IP link del dev $DUMMY type dummy"
252        ]
253    },
254    {
255        "id": "4894",
256        "name": "Create FQ with timer_slack setting",
257        "category": [
258            "qdisc",
259            "fq"
260        ],
261        "plugins": {
262            "requires": "nsPlugin"
263        },
264        "setup": [
265            "$IP link add dev $DUMMY type dummy || /bin/true"
266        ],
267        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq timer_slack 100",
268        "expExitCode": "0",
269        "verifyCmd": "$TC qdisc show dev $DUMMY",
270        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p.*timer_slack 100ns",
271        "matchCount": "1",
272        "teardown": [
273            "$TC qdisc del dev $DUMMY handle 1: root",
274            "$IP link del dev $DUMMY type dummy"
275        ]
276    },
277    {
278        "id": "324c",
279        "name": "Create FQ with ce_threshold setting",
280        "category": [
281            "qdisc",
282            "fq"
283        ],
284        "plugins": {
285            "requires": "nsPlugin"
286        },
287        "setup": [
288            "$IP link add dev $DUMMY type dummy || /bin/true"
289        ],
290        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq ce_threshold 100",
291        "expExitCode": "0",
292        "verifyCmd": "$TC qdisc show dev $DUMMY",
293        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p",
294        "matchCount": "1",
295        "teardown": [
296            "$TC qdisc del dev $DUMMY handle 1: root",
297            "$IP link del dev $DUMMY type dummy"
298        ]
299    },
300    {
301        "id": "424a",
302        "name": "Create FQ with horizon time setting",
303        "category": [
304            "qdisc",
305            "fq"
306        ],
307        "plugins": {
308            "requires": "nsPlugin"
309        },
310        "setup": [
311            "$IP link add dev $DUMMY type dummy || /bin/true"
312        ],
313        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq horizon 100",
314        "expExitCode": "0",
315        "verifyCmd": "$TC qdisc show dev $DUMMY",
316        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p.*horizon 100us",
317        "matchCount": "1",
318        "teardown": [
319            "$TC qdisc del dev $DUMMY handle 1: root",
320            "$IP link del dev $DUMMY type dummy"
321        ]
322    },
323    {
324        "id": "89e1",
325        "name": "Create FQ with horizon_cap setting",
326        "category": [
327            "qdisc",
328            "fq"
329        ],
330        "plugins": {
331            "requires": "nsPlugin"
332        },
333        "setup": [
334            "$IP link add dev $DUMMY type dummy || /bin/true"
335        ],
336        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq horizon_cap",
337        "expExitCode": "0",
338        "verifyCmd": "$TC qdisc show dev $DUMMY",
339        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p flow_limit 100p.*horizon_cap",
340        "matchCount": "1",
341        "teardown": [
342            "$TC qdisc del dev $DUMMY handle 1: root",
343            "$IP link del dev $DUMMY type dummy"
344        ]
345    },
346    {
347        "id": "32e1",
348        "name": "Delete FQ with valid handle",
349        "category": [
350            "qdisc",
351            "fq"
352        ],
353        "plugins": {
354            "requires": "nsPlugin"
355        },
356        "setup": [
357            "$IP link add dev $DUMMY type dummy || /bin/true",
358            "$TC qdisc add dev $DUMMY handle 1: root fq"
359        ],
360        "cmdUnderTest": "$TC qdisc del dev $DUMMY handle 1: root",
361        "expExitCode": "0",
362        "verifyCmd": "$TC qdisc show dev $DUMMY",
363        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 10000p",
364        "matchCount": "0",
365        "teardown": [
366            "$IP link del dev $DUMMY type dummy"
367        ]
368    },
369    {
370        "id": "49b0",
371        "name": "Replace FQ with limit setting",
372        "category": [
373            "qdisc",
374            "fq"
375        ],
376        "plugins": {
377            "requires": "nsPlugin"
378        },
379        "setup": [
380            "$IP link add dev $DUMMY type dummy || /bin/true",
381            "$TC qdisc add dev $DUMMY handle 1: root fq"
382        ],
383        "cmdUnderTest": "$TC qdisc replace dev $DUMMY handle 1: root fq limit 5000",
384        "expExitCode": "0",
385        "verifyCmd": "$TC qdisc show dev $DUMMY",
386        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 5000p",
387        "matchCount": "1",
388        "teardown": [
389            "$TC qdisc del dev $DUMMY handle 1: root",
390            "$IP link del dev $DUMMY type dummy"
391        ]
392    },
393    {
394        "id": "9478",
395        "name": "Change FQ with limit setting",
396        "category": [
397            "qdisc",
398            "fq"
399        ],
400        "plugins": {
401            "requires": "nsPlugin"
402        },
403        "setup": [
404            "$IP link add dev $DUMMY type dummy || /bin/true",
405            "$TC qdisc add dev $DUMMY handle 1: root fq"
406        ],
407        "cmdUnderTest": "$TC qdisc change dev $DUMMY handle 1: root fq limit 100",
408        "expExitCode": "0",
409        "verifyCmd": "$TC qdisc show dev $DUMMY",
410        "matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 100p",
411        "matchCount": "1",
412        "teardown": [
413            "$TC qdisc del dev $DUMMY handle 1: root",
414            "$IP link del dev $DUMMY type dummy"
415        ]
416    }
417]
418