On 13/09/2022 01:21, Zhengchao Shao wrote:
> Test 23c3: Add cBPF filter with valid bytecode
> Test 1563: Add cBPF filter with invalid bytecode
> Test 2334: Add eBPF filter with valid object-file
> Test 2373: Add eBPF filter with invalid object-file
> Test 4423: Replace cBPF bytecode
> Test 5122: Delete cBPF filter
> Test e0a9: List cBPF filters
>
> Signed-off-by: Zhengchao Shao <[email protected]>
> ---
> .../tc-testing/tc-tests/filters/bpf.json | 171 ++++++++++++++++++
> 1 file changed, 171 insertions(+)
> create mode 100644 tools/testing/selftests/tc-testing/tc-tests/filters/bpf.json
>
> diff --git a/tools/testing/selftests/tc-testing/tc-tests/filters/bpf.json b/tools/testing/selftests/tc-testing/tc-tests/filters/bpf.json
> new file mode 100644
> index 000000000000..c679588f65fd
> --- /dev/null
> +++ b/tools/testing/selftests/tc-testing/tc-tests/filters/bpf.json
> @@ -0,0 +1,171 @@
> +[
> + {
> + "id": "23c3",
> + "name": "Add cBPF filter with valid bytecode",
> + "category": [
> + "filter",
> + "bpf"
> + ],
> + "plugins": {
Just a nit-pick, there are some places where you are using tabs instead
of spaces. Mostly when specifying the plugins, like in the line above.
This goes for the other test patches in this set as well.
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DEV1 ingress"
> + ],
> + "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf bytecode '4,40 0 0 12,21 0 1 2048,6 0 0 262144,6 0 0 0'",
> + "expExitCode": "0",
> + "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf",
> + "matchPattern": "filter parent ffff: protocol ip pref 100 bpf chain [0-9]+ handle 0x1.*bytecode '4,40 0 0 12,21 0 1 2048,6 0 0 262144,6 0 0 0'",
> + "matchCount": "1",
> + "teardown": [
> + "$TC qdisc del dev $DEV1 ingress"
> + ]
> + },
> + {
> + "id": "1563",
> + "name": "Add cBPF filter with invalid bytecode",
> + "category": [
> + "filter",
> + "bpf"
> + ],
> + "plugins": {
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DEV1 ingress"
> + ]
> + "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf bytecode '4,40 0 0 12,31 0 1 2048,6 0 0 262144,6 0 0 0'",
> + "expExitCode": "2",
> + "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf",
> + "matchPattern": "filter parent ffff: protocol ip pref 100 bpf chain [0-9]+ handle 0x1.*bytecode '4,40 0 0 12,21 0 1 2048,6 0 0 262144,6 0 0 0'",
> + "matchCount": "0",
> + "teardown": [
> + "$TC qdisc del dev $DEV1 ingress"
> + ]
> + },
> + {
> + "id": "2334",
> + "name": "Add eBPF filter with valid object-file",
> + "category": [
> + "filter",
> + "bpf"
> + ],
> + "plugins": {
> + "requires": "buildebpfPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DEV1 ingress"
> + ],
> + "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf object-file $EBPFDIR/action.o section action-ok",
> + "expExitCode": "0",
> + "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf",
> + "matchPattern": "filter parent ffff: protocol ip pref 100 bpf chain [0-9]+ handle 0x1 action.o:\\[action-ok\\].*tag [0-9a-f]{16}( jited)?",
> + "matchCount": "1",
> + "teardown": [
> + "$TC qdisc del dev $DEV1 ingress"
> + ]
> + },
> + {
> + "id": "2373",
> + "name": "Add eBPF filter with invalid object-file",
> + "category": [
> + "filter",
> + "bpf"
> + ],
> + "plugins": {
> + "requires": "buildebpfPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DEV1 ingress"
> + ],
> + "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf object-file $EBPFDIR/action.o section action-ko",
> + "expExitCode": "1",
> + "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf",
> + "matchPattern": "filter parent ffff: protocol ip pref 100 bpf chain [0-9]+ handle 0x1 action.o:\\[action-ko\\].*tag [0-9a-f]{16}( jited)?",
> + "matchCount": "0",
> + "teardown": [
> + "$TC qdisc del dev $DEV1 ingress"
> + ]
> + },
> + {
> + "id": "4423",
> + "name": "Replace cBPF bytecode",
> + "category": [
> + "filter",
> + "bpf"
> + ],
> + "plugins": {
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DEV1 ingress",
> + [
> + "$TC filter add dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf bytecode '4,40 0 0 12,21 0 1 2048,6 0 0 262144,6 0 0 0'",
> + 0,
> + 1,
> + 255
> + ]
> + ],
> + "cmdUnderTest": "$TC filter replace dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf bytecode '4,40 0 0 12,21 0 1 2054,6 0 0 262144,6 0 0 0'",
> + "expExitCode": "0",
> + "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf",
> + "matchPattern": "filter parent ffff: protocol ip pref 100 bpf chain [0-9]+ handle 0x1.*bytecode '4,40 0 0 12,21 0 1 2054,6 0 0 262144,6 0 0 0'",
> + "matchCount": "1",
> + "teardown": [
> + "$TC qdisc del dev $DEV1 ingress"
> + ]
> + },
> + {
> + "id": "5122",
> + "name": "Delete cBPF filter",
> + "category": [
> + "filter",
> + "bpf"
> + ],
> + "plugins": {
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DEV1 ingress",
> + [
> + "$TC filter add dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf bytecode '4,40 0 0 12,21 0 1 2048,6 0 0 262144,6 0 0 0'",
> + 0,
> + 1,
> + 255
> + ]
> + ],
> + "cmdUnderTest": "$TC filter del dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf",
> + "expExitCode": "0",
> + "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf",
> + "matchPattern": "filter parent ffff: protocol ip pref 100 bpf chain [0-9]+ handle 0x1.*bytecode '4,40 0 0 12,21 0 1 2048,6 0 0 262144,6 0 0 0'",
> + "matchCount": "0",
> + "teardown": [
> + "$TC qdisc del dev $DEV1 ingress"
> + ]
> + },
> + {
> + "id": "e0a9",
> + "name": "List cBPF filters",
> + "category": [
> + "filter",
> + "bpf"
> + ],
> + "plugins": {
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "$TC qdisc add dev $DEV1 ingress",
> + "$TC filter add dev $DEV1 parent ffff: handle 1 protocol ip prio 100 bpf bytecode '4,40 0 0 12,21 0 1 2048,6 0 0 262144,6 0 0 0'",
> + "$TC filter add dev $DEV1 parent ffff: handle 2 protocol ip prio 100 bpf bytecode '4,40 0 0 12,21 0 1 2054,6 0 0 262144,6 0 0 0'",
> + "$TC filter add dev $DEV1 parent ffff: handle 100 protocol ip prio 100 bpf bytecode '4,40 0 0 12,21 0 1 33024,6 0 0 262144,6 0 0 0'"
> + ],
> + "cmdUnderTest": "$TC filter show dev $DEV1 parent ffff:",
> + "expExitCode": "0",
> + "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
> + "matchPattern": "filter protocol ip pref 100 bpf chain [0-9]+ handle",
> + "matchCount": "3",
> + "teardown": [
> + "$TC qdisc del dev $DEV1 ingress"
> + ]
> + }
> +]