162306a36Sopenharmony_ci[
262306a36Sopenharmony_ci    {
362306a36Sopenharmony_ci        "id": "0582",
462306a36Sopenharmony_ci        "name": "Create QFQ with default setting",
562306a36Sopenharmony_ci        "category": [
662306a36Sopenharmony_ci            "qdisc",
762306a36Sopenharmony_ci            "qfq"
862306a36Sopenharmony_ci        ],
962306a36Sopenharmony_ci        "plugins": {
1062306a36Sopenharmony_ci            "requires": "nsPlugin"
1162306a36Sopenharmony_ci        },
1262306a36Sopenharmony_ci        "setup": [
1362306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true"
1462306a36Sopenharmony_ci        ],
1562306a36Sopenharmony_ci        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root qfq",
1662306a36Sopenharmony_ci        "expExitCode": "0",
1762306a36Sopenharmony_ci        "verifyCmd": "$TC qdisc show dev $DUMMY",
1862306a36Sopenharmony_ci        "matchPattern": "qdisc qfq 1: root refcnt [0-9]+",
1962306a36Sopenharmony_ci        "matchCount": "1",
2062306a36Sopenharmony_ci        "teardown": [
2162306a36Sopenharmony_ci            "$TC qdisc del dev $DUMMY handle 1: root",
2262306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
2362306a36Sopenharmony_ci        ]
2462306a36Sopenharmony_ci    },
2562306a36Sopenharmony_ci    {
2662306a36Sopenharmony_ci        "id": "c9a3",
2762306a36Sopenharmony_ci        "name": "Create QFQ with class weight setting",
2862306a36Sopenharmony_ci        "category": [
2962306a36Sopenharmony_ci            "qdisc",
3062306a36Sopenharmony_ci            "qfq"
3162306a36Sopenharmony_ci        ],
3262306a36Sopenharmony_ci        "plugins": {
3362306a36Sopenharmony_ci            "requires": "nsPlugin"
3462306a36Sopenharmony_ci        },
3562306a36Sopenharmony_ci        "setup": [
3662306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true",
3762306a36Sopenharmony_ci            "$TC qdisc add dev $DUMMY handle 1: root qfq"
3862306a36Sopenharmony_ci        ],
3962306a36Sopenharmony_ci        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100",
4062306a36Sopenharmony_ci        "expExitCode": "0",
4162306a36Sopenharmony_ci        "verifyCmd": "$TC class show dev $DUMMY",
4262306a36Sopenharmony_ci        "matchPattern": "class qfq 1:1 root weight 100 maxpkt",
4362306a36Sopenharmony_ci        "matchCount": "1",
4462306a36Sopenharmony_ci        "teardown": [
4562306a36Sopenharmony_ci            "$TC qdisc del dev $DUMMY handle 1: root",
4662306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
4762306a36Sopenharmony_ci        ]
4862306a36Sopenharmony_ci    },
4962306a36Sopenharmony_ci    {
5062306a36Sopenharmony_ci        "id": "d364",
5162306a36Sopenharmony_ci        "name": "Test QFQ with max class weight setting",
5262306a36Sopenharmony_ci        "category": [
5362306a36Sopenharmony_ci            "qdisc",
5462306a36Sopenharmony_ci            "qfq"
5562306a36Sopenharmony_ci        ],
5662306a36Sopenharmony_ci        "plugins": {
5762306a36Sopenharmony_ci            "requires": "nsPlugin"
5862306a36Sopenharmony_ci        },
5962306a36Sopenharmony_ci        "setup": [
6062306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true",
6162306a36Sopenharmony_ci            "$TC qdisc add dev $DUMMY handle 1: root qfq"
6262306a36Sopenharmony_ci        ],
6362306a36Sopenharmony_ci        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 9999",
6462306a36Sopenharmony_ci        "expExitCode": "2",
6562306a36Sopenharmony_ci        "verifyCmd": "$TC class show dev $DUMMY",
6662306a36Sopenharmony_ci        "matchPattern": "class qfq 1:1 root weight 9999 maxpkt",
6762306a36Sopenharmony_ci        "matchCount": "0",
6862306a36Sopenharmony_ci        "teardown": [
6962306a36Sopenharmony_ci            "$TC qdisc del dev $DUMMY handle 1: root",
7062306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
7162306a36Sopenharmony_ci        ]
7262306a36Sopenharmony_ci    },
7362306a36Sopenharmony_ci    {
7462306a36Sopenharmony_ci        "id": "8452",
7562306a36Sopenharmony_ci        "name": "Create QFQ with class maxpkt setting",
7662306a36Sopenharmony_ci        "category": [
7762306a36Sopenharmony_ci            "qdisc",
7862306a36Sopenharmony_ci            "qfq"
7962306a36Sopenharmony_ci        ],
8062306a36Sopenharmony_ci        "plugins": {
8162306a36Sopenharmony_ci            "requires": "nsPlugin"
8262306a36Sopenharmony_ci        },
8362306a36Sopenharmony_ci        "setup": [
8462306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true",
8562306a36Sopenharmony_ci            "$TC qdisc add dev $DUMMY handle 1: root qfq"
8662306a36Sopenharmony_ci        ],
8762306a36Sopenharmony_ci        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 2000",
8862306a36Sopenharmony_ci        "expExitCode": "0",
8962306a36Sopenharmony_ci        "verifyCmd": "$TC class show dev $DUMMY",
9062306a36Sopenharmony_ci        "matchPattern": "class qfq 1:1 root weight 1 maxpkt 2000",
9162306a36Sopenharmony_ci        "matchCount": "1",
9262306a36Sopenharmony_ci        "teardown": [
9362306a36Sopenharmony_ci            "$TC qdisc del dev $DUMMY handle 1: root",
9462306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
9562306a36Sopenharmony_ci        ]
9662306a36Sopenharmony_ci    },
9762306a36Sopenharmony_ci    {
9862306a36Sopenharmony_ci        "id": "22df",
9962306a36Sopenharmony_ci        "name": "Test QFQ class maxpkt setting lower bound",
10062306a36Sopenharmony_ci        "category": [
10162306a36Sopenharmony_ci            "qdisc",
10262306a36Sopenharmony_ci            "qfq"
10362306a36Sopenharmony_ci        ],
10462306a36Sopenharmony_ci        "plugins": {
10562306a36Sopenharmony_ci            "requires": "nsPlugin"
10662306a36Sopenharmony_ci        },
10762306a36Sopenharmony_ci        "setup": [
10862306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true",
10962306a36Sopenharmony_ci            "$TC qdisc add dev $DUMMY handle 1: root qfq"
11062306a36Sopenharmony_ci        ],
11162306a36Sopenharmony_ci        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 128",
11262306a36Sopenharmony_ci        "expExitCode": "2",
11362306a36Sopenharmony_ci        "verifyCmd": "$TC class show dev $DUMMY",
11462306a36Sopenharmony_ci        "matchPattern": "class qfq 1:1 root weight 1 maxpkt 128",
11562306a36Sopenharmony_ci        "matchCount": "0",
11662306a36Sopenharmony_ci        "teardown": [
11762306a36Sopenharmony_ci            "$TC qdisc del dev $DUMMY handle 1: root",
11862306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
11962306a36Sopenharmony_ci        ]
12062306a36Sopenharmony_ci    },
12162306a36Sopenharmony_ci    {
12262306a36Sopenharmony_ci        "id": "92ee",
12362306a36Sopenharmony_ci        "name": "Test QFQ class maxpkt setting upper bound",
12462306a36Sopenharmony_ci        "category": [
12562306a36Sopenharmony_ci            "qdisc",
12662306a36Sopenharmony_ci            "qfq"
12762306a36Sopenharmony_ci        ],
12862306a36Sopenharmony_ci        "plugins": {
12962306a36Sopenharmony_ci            "requires": "nsPlugin"
13062306a36Sopenharmony_ci        },
13162306a36Sopenharmony_ci        "setup": [
13262306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true",
13362306a36Sopenharmony_ci            "$TC qdisc add dev $DUMMY handle 1: root qfq"
13462306a36Sopenharmony_ci        ],
13562306a36Sopenharmony_ci        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 99999",
13662306a36Sopenharmony_ci        "expExitCode": "2",
13762306a36Sopenharmony_ci        "verifyCmd": "$TC class show dev $DUMMY",
13862306a36Sopenharmony_ci        "matchPattern": "class qfq 1:1 root weight 1 maxpkt 99999",
13962306a36Sopenharmony_ci        "matchCount": "0",
14062306a36Sopenharmony_ci        "teardown": [
14162306a36Sopenharmony_ci            "$TC qdisc del dev $DUMMY handle 1: root",
14262306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
14362306a36Sopenharmony_ci        ]
14462306a36Sopenharmony_ci    },
14562306a36Sopenharmony_ci    {
14662306a36Sopenharmony_ci        "id": "d920",
14762306a36Sopenharmony_ci        "name": "Create QFQ with multiple class setting",
14862306a36Sopenharmony_ci        "category": [
14962306a36Sopenharmony_ci            "qdisc",
15062306a36Sopenharmony_ci            "qfq"
15162306a36Sopenharmony_ci        ],
15262306a36Sopenharmony_ci        "plugins": {
15362306a36Sopenharmony_ci            "requires": "nsPlugin"
15462306a36Sopenharmony_ci        },
15562306a36Sopenharmony_ci        "setup": [
15662306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true",
15762306a36Sopenharmony_ci            "$TC qdisc add dev $DUMMY handle 1: root qfq",
15862306a36Sopenharmony_ci            "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100"
15962306a36Sopenharmony_ci        ],
16062306a36Sopenharmony_ci        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:2 qfq weight 200",
16162306a36Sopenharmony_ci        "expExitCode": "0",
16262306a36Sopenharmony_ci        "verifyCmd": "$TC class show dev $DUMMY",
16362306a36Sopenharmony_ci        "matchPattern": "class qfq 1:[0-9]+ root weight [0-9]+00 maxpkt",
16462306a36Sopenharmony_ci        "matchCount": "2",
16562306a36Sopenharmony_ci        "teardown": [
16662306a36Sopenharmony_ci            "$TC qdisc del dev $DUMMY handle 1: root",
16762306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
16862306a36Sopenharmony_ci        ]
16962306a36Sopenharmony_ci    },
17062306a36Sopenharmony_ci    {
17162306a36Sopenharmony_ci        "id": "0548",
17262306a36Sopenharmony_ci        "name": "Delete QFQ with handle",
17362306a36Sopenharmony_ci        "category": [
17462306a36Sopenharmony_ci            "qdisc",
17562306a36Sopenharmony_ci            "qfq"
17662306a36Sopenharmony_ci        ],
17762306a36Sopenharmony_ci        "plugins": {
17862306a36Sopenharmony_ci            "requires": "nsPlugin"
17962306a36Sopenharmony_ci        },
18062306a36Sopenharmony_ci        "setup": [
18162306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true",
18262306a36Sopenharmony_ci            "$TC qdisc add dev $DUMMY handle 1: root qfq",
18362306a36Sopenharmony_ci            "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100"
18462306a36Sopenharmony_ci        ],
18562306a36Sopenharmony_ci        "cmdUnderTest": "$TC qdisc del dev $DUMMY handle 1: root",
18662306a36Sopenharmony_ci        "expExitCode": "0",
18762306a36Sopenharmony_ci        "verifyCmd": "$TC class show dev $DUMMY",
18862306a36Sopenharmony_ci        "matchPattern": "qdisc qfq 1: root refcnt [0-9]+",
18962306a36Sopenharmony_ci        "matchCount": "0",
19062306a36Sopenharmony_ci        "teardown": [
19162306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
19262306a36Sopenharmony_ci        ]
19362306a36Sopenharmony_ci    },
19462306a36Sopenharmony_ci    {
19562306a36Sopenharmony_ci        "id": "5901",
19662306a36Sopenharmony_ci        "name": "Show QFQ class",
19762306a36Sopenharmony_ci        "category": [
19862306a36Sopenharmony_ci            "qdisc",
19962306a36Sopenharmony_ci            "qfq"
20062306a36Sopenharmony_ci        ],
20162306a36Sopenharmony_ci        "plugins": {
20262306a36Sopenharmony_ci            "requires": "nsPlugin"
20362306a36Sopenharmony_ci        },
20462306a36Sopenharmony_ci        "setup": [
20562306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true"
20662306a36Sopenharmony_ci        ],
20762306a36Sopenharmony_ci        "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root qfq",
20862306a36Sopenharmony_ci        "expExitCode": "0",
20962306a36Sopenharmony_ci        "verifyCmd": "$TC class show dev $DUMMY",
21062306a36Sopenharmony_ci        "matchPattern": "class qfq 1:",
21162306a36Sopenharmony_ci        "matchCount": "0",
21262306a36Sopenharmony_ci        "teardown": [
21362306a36Sopenharmony_ci            "$TC qdisc del dev $DUMMY handle 1: root",
21462306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
21562306a36Sopenharmony_ci        ]
21662306a36Sopenharmony_ci    },
21762306a36Sopenharmony_ci    {
21862306a36Sopenharmony_ci        "id": "85ee",
21962306a36Sopenharmony_ci        "name": "QFQ with big MTU",
22062306a36Sopenharmony_ci        "category": [
22162306a36Sopenharmony_ci            "qdisc",
22262306a36Sopenharmony_ci            "qfq"
22362306a36Sopenharmony_ci        ],
22462306a36Sopenharmony_ci        "plugins": {
22562306a36Sopenharmony_ci            "requires": "nsPlugin"
22662306a36Sopenharmony_ci        },
22762306a36Sopenharmony_ci        "setup": [
22862306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true",
22962306a36Sopenharmony_ci            "$IP link set dev $DUMMY mtu 2147483647 || /bin/true",
23062306a36Sopenharmony_ci            "$TC qdisc add dev $DUMMY handle 1: root qfq"
23162306a36Sopenharmony_ci        ],
23262306a36Sopenharmony_ci        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100",
23362306a36Sopenharmony_ci        "expExitCode": "2",
23462306a36Sopenharmony_ci        "verifyCmd": "$TC class show dev $DUMMY",
23562306a36Sopenharmony_ci        "matchPattern": "class qfq 1:",
23662306a36Sopenharmony_ci        "matchCount": "0",
23762306a36Sopenharmony_ci        "teardown": [
23862306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
23962306a36Sopenharmony_ci        ]
24062306a36Sopenharmony_ci    },
24162306a36Sopenharmony_ci    {
24262306a36Sopenharmony_ci        "id": "ddfa",
24362306a36Sopenharmony_ci        "name": "QFQ with small MTU",
24462306a36Sopenharmony_ci        "category": [
24562306a36Sopenharmony_ci            "qdisc",
24662306a36Sopenharmony_ci            "qfq"
24762306a36Sopenharmony_ci        ],
24862306a36Sopenharmony_ci        "plugins": {
24962306a36Sopenharmony_ci            "requires": "nsPlugin"
25062306a36Sopenharmony_ci        },
25162306a36Sopenharmony_ci        "setup": [
25262306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true",
25362306a36Sopenharmony_ci            "$IP link set dev $DUMMY mtu 256 || /bin/true",
25462306a36Sopenharmony_ci            "$TC qdisc add dev $DUMMY handle 1: root qfq"
25562306a36Sopenharmony_ci        ],
25662306a36Sopenharmony_ci        "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100",
25762306a36Sopenharmony_ci        "expExitCode": "2",
25862306a36Sopenharmony_ci        "verifyCmd": "$TC class show dev $DUMMY",
25962306a36Sopenharmony_ci        "matchPattern": "class qfq 1:",
26062306a36Sopenharmony_ci        "matchCount": "0",
26162306a36Sopenharmony_ci        "teardown": [
26262306a36Sopenharmony_ci            "$IP link del dev $DUMMY type dummy"
26362306a36Sopenharmony_ci        ]
26462306a36Sopenharmony_ci    },
26562306a36Sopenharmony_ci    {
26662306a36Sopenharmony_ci        "id": "5993",
26762306a36Sopenharmony_ci        "name": "QFQ with stab overhead greater than max packet len",
26862306a36Sopenharmony_ci        "category": [
26962306a36Sopenharmony_ci            "qdisc",
27062306a36Sopenharmony_ci            "qfq",
27162306a36Sopenharmony_ci            "scapy"
27262306a36Sopenharmony_ci        ],
27362306a36Sopenharmony_ci        "plugins": {
27462306a36Sopenharmony_ci            "requires": [
27562306a36Sopenharmony_ci                "nsPlugin",
27662306a36Sopenharmony_ci                "scapyPlugin"
27762306a36Sopenharmony_ci            ]
27862306a36Sopenharmony_ci        },
27962306a36Sopenharmony_ci        "setup": [
28062306a36Sopenharmony_ci            "$IP link add dev $DUMMY type dummy || /bin/true",
28162306a36Sopenharmony_ci            "$IP link set dev $DUMMY up || /bin/true",
28262306a36Sopenharmony_ci            "$TC qdisc add dev $DUMMY handle 1: stab mtu 2048 tsize 512 mpu 0 overhead 999999999 linklayer ethernet root qfq",
28362306a36Sopenharmony_ci            "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100",
28462306a36Sopenharmony_ci            "$TC qdisc add dev $DEV1 clsact",
28562306a36Sopenharmony_ci            "$TC filter add dev $DEV1 ingress protocol ip flower dst_ip 1.3.3.7/32 action mirred egress mirror dev $DUMMY"
28662306a36Sopenharmony_ci        ],
28762306a36Sopenharmony_ci        "cmdUnderTest": "$TC filter add dev $DUMMY parent 1: matchall classid 1:1",
28862306a36Sopenharmony_ci        "scapy": [
28962306a36Sopenharmony_ci            {
29062306a36Sopenharmony_ci                "iface": "$DEV0",
29162306a36Sopenharmony_ci                "count": 22,
29262306a36Sopenharmony_ci                "packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='1.3.3.7')/TCP(sport=5000,dport=10)"
29362306a36Sopenharmony_ci            }
29462306a36Sopenharmony_ci        ],
29562306a36Sopenharmony_ci        "expExitCode": "0",
29662306a36Sopenharmony_ci        "verifyCmd": "$TC -s qdisc ls dev $DUMMY",
29762306a36Sopenharmony_ci        "matchPattern": "dropped 22",
29862306a36Sopenharmony_ci        "matchCount": "1",
29962306a36Sopenharmony_ci        "teardown": [
30062306a36Sopenharmony_ci            "$TC qdisc del dev $DUMMY handle 1: root qfq"
30162306a36Sopenharmony_ci        ]
30262306a36Sopenharmony_ci    }
30362306a36Sopenharmony_ci]
304