linux/tools/testing/selftests
Andrii Nakryiko b03e19465b selftests/bpf: Fix btfgen tests
There turned out to be a few problems with btfgen selftests.

First, core_btfgen tests are failing in BPF CI due to the use of
full-featured bpftool, which has extra dependencies on libbfd, libcap,
etc, which are present in BPF CI's build environment, but those shared
libraries are missing in QEMU image in which test_progs is running.

To fix this problem, use minimal bootstrap version of bpftool instead.
It only depend on libelf and libz, same as libbpf, so doesn't add any
new requirements (and bootstrap bpftool still implementes entire
`bpftool gen` functionality, which is quite convenient).

Second problem is even more interesting. Both core_btfgen and core_reloc
reuse the same set of struct core_reloc_test_case array of test case
definitions. That in itself is not a problem, but btfgen test replaces
test_case->btf_src_file property with the path to temporary file into
which minimized BTF is output by bpftool. This interferes with original
core_reloc tests, depending on order of tests execution (core_btfgen is
run first in sequential mode and skrews up subsequent core_reloc run by
pointing to already deleted temporary file, instead of the original BTF
files) and whether those two runs share the same process (in parallel
mode the chances are high for them to run in two separate processes and
so not interfere with each other).

To prevent this interference, create and use local copy of a test
definition. Mark original array as constant to catch accidental
modifcations. Note that setup_type_id_case_success() and
setup_type_id_case_success() still modify common test_case->output
memory area, but it is ok as each setup function has to re-initialize it
completely anyways. In sequential mode it leads to deterministic and
correct initialization. In parallel mode they will either each have
their own process, or if core_reloc and core_btfgen happen to be run by
the same worker process, they will still do that sequentially within the
worker process. If they are sharded across multiple processes, they
don't really share anything anyways.

Also, rename core_btfgen into core_reloc_btfgen, as it is indeed just
a "flavor" of core_reloc test, not an independent set of tests. So make
it more obvious.

Last problem that needed solving was that location of bpftool differs
between test_progs and test_progs' flavors (e.g., test_progs-no_alu32).
To keep it simple, create a symlink to bpftool both inside
selftests/bpf/ directory and selftests/bpf/<flavor> subdirectory. That
way, from inside core_reloc test, location to bpftool is just "./bpftool".

v2->v3:
  - fix bpftool location relative the test_progs-no_alu32;
v1->v2:
  - fix corruption of core_reloc_test_case.

Fixes: 704c91e59f ("selftests/bpf: Test "bpftool gen min_core_btf")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Yucong Sun <sunyucong@gmail.com>
Link: https://lore.kernel.org/bpf/20220220042720.3336684-1-andrii@kernel.org
2022-02-20 09:19:58 -08:00
..
alsa kselftest: alsa: Validate values read from enumerations 2021-12-25 09:13:28 +01:00
arm64 kselftest/arm64: Correct logging of FPSIMD register read via ptrace 2022-01-28 11:30:51 +00:00
bpf selftests/bpf: Fix btfgen tests 2022-02-20 09:19:58 -08:00
breakpoints
capabilities
cgroup linux-kselftest-next-5.17-rc1 2022-01-10 12:08:12 -08:00
clone3 selftests: fixup build warnings in pidfd / clone3 tests 2022-02-04 13:07:07 -07:00
core selftests/core: remove ARRAY_SIZE define from close_range_test.c 2021-12-10 17:50:38 -07:00
cpu-hotplug
cpufreq selftests: cpufreq: Write test output to stdout as well 2022-01-25 13:20:03 -07:00
damon selftests/damon: split test cases 2021-12-10 17:10:56 -08:00
dma
dmabuf-heaps
drivers selftests: mlxsw: devlink_trap_tunnel_vxlan: Fix 'decap_error' case 2021-12-23 11:24:01 +00:00
efivarfs
exec selftests/exec: Remove pipe from TEST_GEN_FILES 2022-01-27 11:01:20 -07:00
filesystems selftests/binderfs: add test for feature files 2021-07-21 13:46:36 +02:00
firmware selftests: firmware: Fix ignored return val of asprintf() warn 2021-07-21 16:11:42 +02:00
fpu
ftrace selftests/ftrace: make kprobe profile testcase description unique 2021-12-10 16:46:01 -07:00
futex selftests: futex: Use variable MAKE instead of make 2022-01-27 16:29:23 -07:00
gpio gpio updates for v5.17 2022-01-11 12:31:35 -08:00
ia64
intel_pstate
ipc
ir selftests/ir: fix build with ancient kernel headers 2022-02-04 13:14:41 -07:00
kcmp
kexec selftests/kexec: Enable secureboot tests for PowerPC 2022-01-05 11:44:57 -05:00
kmod
kselftest selftests/kselftest/runner/run_one(): allow running non-executable files 2021-11-09 10:02:53 -08:00
kvm selftests: kvm: Remove absent target file 2022-02-11 12:53:01 -05:00
landlock selftests/landlock: remove ARRAY_SIZE define from common.h 2021-12-10 17:50:51 -07:00
lib
livepatch
lkdtm selftest/lkdtm: Skip stack-entropy test if lkdtm is not available 2021-12-16 15:54:38 -08:00
locking
media_tests
membarrier
memfd selftests/memfd: remove unused variable 2021-09-08 11:50:28 -07:00
memory-hotplug mm/memory_hotplug: remove CONFIG_MEMORY_HOTPLUG_SPARSE 2021-11-06 13:30:42 -07:00
mincore selftests: skip mincore.check_file_mmap when fs lacks needed support 2022-01-27 16:40:45 -07:00
mount selftests/mount: remove unneeded conversion to bool 2021-12-10 16:46:01 -07:00
mount_setattr
move_mount_set_group selftests/move_mount_set_group remove unneeded conversion to bool 2021-12-10 16:46:01 -07:00
mqueue
nci selftests: nci: replace unsigned int with int 2021-09-16 13:55:51 +01:00
net selftests: mptcp: add csum mib check for mptcp_connect 2022-02-17 19:59:59 -08:00
netfilter selftests: netfilter: disable rp_filter on router 2022-02-11 00:01:04 +01:00
nsfs
ntb
openat2 selftests: openat2: Skip testcases that fail with EOPNOTSUPP 2022-01-27 16:31:07 -07:00
perf_events selftests/perf_events: Test modification of perf_event_attr::sig_data 2022-02-02 13:11:40 +01:00
pid_namespace
pidfd selftests: fixup build warnings in pidfd / clone3 tests 2022-02-04 13:07:07 -07:00
powerpc selftests/powerpc: Add a test of sigreturning to an unaligned address 2021-12-25 10:56:05 +11:00
prctl
proc procfs: do not list TID 0 in /proc/<pid>/task 2021-11-09 10:02:48 -08:00
pstore
ptp testptp: set pin function before other requests 2022-01-05 17:08:58 -08:00
ptrace
rcutorture Merge branches 'doc.2021.11.30c', 'exp.2021.12.07a', 'fastnohz.2021.11.30c', 'fixes.2021.11.30c', 'nocb.2021.12.09a', 'nolibc.2021.11.30c', 'tasks.2021.12.09a', 'torture.2021.12.07a' and 'torturescript.2021.11.30c' into HEAD 2021-12-09 11:38:09 -08:00
resctrl
rlimits
rseq selftests/rseq: remove ARRAY_SIZE define from individual tests 2021-12-10 17:51:03 -07:00
rtc selftests: rtc: Increase test timeout so that all tests run 2022-01-25 13:16:01 -07:00
safesetid selftests: safesetid: Fix spelling mistake "cant" -> "can't" 2021-08-26 15:15:24 -06:00
sched kselftests/sched: cleanup the child processes 2021-10-05 15:51:43 +02:00
seccomp linux-kselftest-next-5.17-rc1 2022-01-10 12:08:12 -08:00
sgx selftests/sgx: Fix corrupted cpuid macro invocation 2021-12-17 08:52:33 -08:00
sigaltstack
size
sparc64 selftests/sparc64: remove ARRAY_SIZE define from adi-test 2021-12-10 17:51:15 -07:00
splice
static_keys
sync selftests/sync: Remove the deprecated config SYNC 2021-08-31 10:58:00 -06:00
syscall_user_dispatch
sysctl
tc-testing selftests: tc-testing: add action offload selftest for action and filter 2021-12-19 14:08:48 +00:00
timens selftests/timens: remove ARRAY_SIZE define from individual tests 2021-12-10 17:51:20 -07:00
timers selftests: timers: Remove unneeded semicolon 2021-12-10 16:46:00 -07:00
tmpfs
tpm2
uevent
user
vDSO kselftest: Fix vdso_test_abi return status 2022-01-31 10:35:14 -07:00
vm kselftest/vm: revert "tools/testing/selftests/vm/userfaultfd.c: use swap() to make code cleaner" 2022-02-04 09:25:05 -08:00
watchdog
wireguard wireguard: device: reset peer src endpoint when netns exits 2021-11-29 19:50:45 -08:00
x86 linux-kselftest-next-5.16-rc1 2021-11-02 22:00:17 -07:00
zram selftests/zram: Adapt the situation that /dev/zram0 is being used 2022-01-27 10:59:02 -07:00
.gitignore
gen_kselftest_tar.sh
kselftest_deps.sh
kselftest_harness.h kselftest: signal all child processes 2022-01-25 13:48:21 -07:00
kselftest_install.sh
kselftest_module.h
kselftest.h tools: fix ARRAY_SIZE defines in tools and selftests hdrs 2021-12-10 17:50:17 -07:00
lib.mk selftests: cgroup: build error multiple outpt files 2021-12-10 16:46:01 -07:00
Makefile kselftest: alsa: Add simplistic test for ALSA mixer controls kselftest 2021-12-12 10:04:27 +01:00
run_kselftest.sh