tools/bpf: selftests: Add bpf_iter selftests
authorYonghong Song <yhs@fb.com>
Sat, 9 May 2020 17:59:23 +0000 (10:59 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Sun, 10 May 2020 00:05:27 +0000 (17:05 -0700)
commit6879c042e10584ea9d5e2204939cafadcd500465
tree4491e7c009f30efcb70b55948767df86a1f8ce70
parentacf61631746c01850a9df0cd5617c5c29214776c
tools/bpf: selftests: Add bpf_iter selftests

The added test includes the following subtests:
  - test verifier change for btf_id_or_null
  - test load/create_iter/read for
    ipv6_route/netlink/bpf_map/task/task_file
  - test anon bpf iterator
  - test anon bpf iterator reading one char at a time
  - test file bpf iterator
  - test overflow (single bpf program output not overflow)
  - test overflow (single bpf program output overflows)
  - test bpf prog returning 1

The ipv6_route tests the following verifier change
  - access fields in the variable length array of the structure.

The netlink load tests the following verifier change
  - put a btf_id ptr value in a stack and accessible to
    tracing/iter programs.

The anon bpf iterator also tests link auto attach through skeleton.

  $ test_progs -n 2
  #2/1 btf_id_or_null:OK
  #2/2 ipv6_route:OK
  #2/3 netlink:OK
  #2/4 bpf_map:OK
  #2/5 task:OK
  #2/6 task_file:OK
  #2/7 anon:OK
  #2/8 anon-read-one-char:OK
  #2/9 file:OK
  #2/10 overflow:OK
  #2/11 overflow-e2big:OK
  #2/12 prog-ret-1:OK
  #2 bpf_iter:OK
  Summary: 1/12 PASSED, 0 SKIPPED, 0 FAILED

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200509175923.2477637-1-yhs@fb.com
tools/testing/selftests/bpf/prog_tests/bpf_iter.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/bpf_iter_test_kern1.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/bpf_iter_test_kern2.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/bpf_iter_test_kern3.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/bpf_iter_test_kern4.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/bpf_iter_test_kern_common.h [new file with mode: 0644]