[
    {
        "id": "684b",
        "name": "Create CAKE_MQ with default setting (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1\" > /sys/bus/netdevsim/del_device || true",
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "7ee8",
        "name": "Create CAKE_MQ with bandwidth limit (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq bandwidth 1000",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth 1Kbit diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "1f87",
        "name": "Create CAKE_MQ with rtt time (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq rtt 200",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 200us raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "e9cf",
        "name": "Create CAKE_MQ with besteffort flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq besteffort",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited besteffort triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "7c05",
        "name": "Create CAKE_MQ with diffserv8 flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq diffserv8",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv8 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "5a77",
        "name": "Create CAKE_MQ with diffserv4 flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq diffserv4",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv4 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "8f7a",
        "name": "Create CAKE_MQ with flowblind flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq flowblind",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 flowblind nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "7ef7",
        "name": "Create CAKE_MQ with dsthost and nat flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq dsthost nat",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 dsthost nat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "2e4d",
        "name": "Create CAKE_MQ with wash flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq hosts wash",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 hosts nonat wash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "b3e6",
        "name": "Create CAKE_MQ with flowblind and no-split-gso flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq flowblind no-split-gso",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 flowblind nonat nowash no-ack-filter no-split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "62cd",
        "name": "Create CAKE_MQ with dual-srchost and ack-filter flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq dual-srchost ack-filter",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 dual-srchost nonat nowash ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "0df3",
        "name": "Create CAKE_MQ with dual-dsthost and ack-filter-aggressive flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq dual-dsthost ack-filter-aggressive",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 dual-dsthost nonat nowash ack-filter-aggressive split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "9a75",
        "name": "Create CAKE_MQ with memlimit and ptm flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq memlimit 10000 ptm",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw ptm overhead 0 memlimit 10000b ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "cdef",
        "name": "Create CAKE_MQ with fwmark and atm flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq fwmark 8 atm",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw atm overhead 0 fwmark 0x8 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "93dd",
        "name": "Create CAKE_MQ with overhead 0 and mpu (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq overhead 128 mpu 256",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms noatm overhead 128 mpu 256 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "1475",
        "name": "Create CAKE_MQ with conservative and ingress flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq conservative ingress",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash ingress no-ack-filter split-gso rtt 100ms atm overhead 48 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "7bf1",
        "name": "Delete CAKE_MQ with conservative and ingress flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device",
            "$TC qdisc add dev $ETH handle 1: root cake_mq conservative ingress"
        ],
        "cmdUnderTest": "$TC qdisc del dev $ETH handle 1: root",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash ingress no-ack-filter split-gso rtt 100ms atm overhead 48 ",
        "matchCount": "0",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "ee55",
        "name": "Replace CAKE_MQ with mpu (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device",
            "$TC qdisc add dev $ETH handle 1: root cake_mq overhead 128 mpu 256"
        ],
        "cmdUnderTest": "$TC qdisc replace dev $ETH handle 1: root cake_mq mpu 128",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms noatm overhead 128 mpu 128 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "6df9",
        "name": "Change CAKE_MQ with mpu (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device",
            "$TC qdisc add dev $ETH handle 1: root cake_mq overhead 128 mpu 256"
        ],
        "cmdUnderTest": "$TC qdisc change dev $ETH handle 1: root cake_mq mpu 128",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms noatm overhead 128 mpu 128 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "67e2",
        "name": "Show CAKE_MQ class (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq",
        "expExitCode": "0",
        "verifyCmd": "$TC class show dev $ETH",
        "matchPattern": "class cake_mq",
        "matchCount": "4",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "2de4",
        "name": "Change bandwidth of CAKE_MQ (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device",
            "$TC qdisc add dev $ETH handle 1: root cake_mq"
        ],
        "cmdUnderTest": "$TC qdisc replace dev $ETH handle 1: root cake_mq bandwidth 1000",
        "expExitCode": "0",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth 1Kbit diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "5f62",
        "name": "Fail to create CAKE_MQ with autorate-ingress flag (4 queues)",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq autorate-ingress",
        "expExitCode": "2",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited autorate-ingress diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "0",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "038e",
        "name": "Fail to change setting of sub-qdisc under CAKE_MQ",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device",
            "$TC qdisc add dev $ETH handle 1: root cake_mq"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH parent 1:1 cake besteffort flows",
        "expExitCode": "2",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "7bdc",
        "name": "Fail to replace sub-qdisc under CAKE_MQ",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 4\" > /sys/bus/netdevsim/new_device",
            "$TC qdisc add dev $ETH handle 1: root cake_mq"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH parent 1:1 fq",
        "expExitCode": "2",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "5",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    },
    {
        "id": "18e0",
        "name": "Fail to install CAKE_MQ on single queue device",
        "category": [
            "qdisc",
            "cake_mq"
        ],
        "plugins": {
            "requires": "nsPlugin"
        },
        "setup": [
            "echo \"1 1 1\" > /sys/bus/netdevsim/new_device"
        ],
        "cmdUnderTest": "$TC qdisc add dev $ETH handle 1: root cake_mq",
        "expExitCode": "2",
        "verifyCmd": "$TC qdisc show dev $ETH",
        "matchPattern": "qdisc (cake_mq 1: root|cake 0: parent 1:[1-4]) bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0 ",
        "matchCount": "0",
        "teardown": [
            "echo \"1\" > /sys/bus/netdevsim/del_device"
        ]
    }
]
