Commit Graph

148 Commits

Author SHA1 Message Date
Daniel Müller
c03b9f6d0b Move kernel version check inwards
The run_selftests.sh script defines functions for running individual
tests. However, not all tests are run in all configurations. E.g.,
test_progs is not run on 4.9.0 kernels and test_maps is only run when
testing on the "latest" kernel version. The checks for these conditions,
however, are applied inconsistently: some are in the functions
themselves and others on the call site.
This change unifies all checks to happen within the test function
itself.

Signed-off-by: Daniel Müller <deso@posteo.net>
2022-08-17 11:41:22 -07:00
Daniel Müller
66b788c1a4 Factor out test_progs_noalu function
This change factors out a new function, test_progs_noalu, in the
run_selftests.sh script. Having this function available will make it
easier for us to run tests conditionally later on, but it's also a
matter of having one function for one binary.

Signed-off-by: Daniel Müller <deso@posteo.net>
2022-08-17 11:41:22 -07:00
Daniel Müller
e3c2b8a48d Re-enable test_maps selftest
Back in 2020, we disabled the test_maps selftest with e05f9be4f4
("vmtests: temporarily disable test_maps") for reasons not closely
elaborated.
It appears that by now the test is succeeding again, so let's enable it
back.

Signed-off-by: Daniel Müller <deso@posteo.net>
2022-08-15 15:50:55 -07:00
Daniel Müller
f6692dc4e8 Remove checked-in configuration
Both the bpf and bpf-next tree have suitable BPF selftest configurations
available for usage with the latest kernel now upstream. While we do
test on 4.9 and 5.5 kernels as well, there we just download prebuilt
binaries. The configuration we use for building selftests is always the
upstream one.
With this change we remove the checked-in configuration, as it is now no
longer needed.

Signed-off-by: Daniel Müller <deso@posteo.net>
2022-08-10 10:24:28 -07:00
Daniel Müller
693de729d0 Rename blacklists and whitelists
Upstream uses denylist and allowlist terminology instead of blacklist
and whitelist. It also has established a less deeply nested directory
structure.
This change renames the blacklist & whitelist files accordingly and
moves them one level up out of their containing directory to mirror the
layout we have upstream as well as in kernel-patches/vmtest.

Signed-off-by: Daniel Müller <deso@posteo.net>
2022-08-10 08:31:17 -07:00
Andrii Nakryiko
5b795f7b30 ci: blacklist skeleton selftest
Selftest relies on new 5.19+ kernel support for big ARRAY maps.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-07-31 16:45:48 -07:00
Daniel Müller
d060a88aa5 Remove Travis specific folding logic
The foldable function from the CI helper infrastructure conceptually
support emitting both GitHub and Travis fold markers. However, given
that we no longer run anything on Travis, let's remove its special case,
as it's effectively dead code.

Signed-off-by: Daniel Müller <deso@posteo.net>
2022-07-25 11:45:46 -07:00
Daniel Müller
9340d9b650 Rename travis_fold function to foldable
We are no longer using Travis. As such, it is confusing to anyone
reading the code to see a function prefixed 'travis_' in GitHub actions
code.
This change renames the travis_fold function to 'foldable', as a first
step towards eliminating such confusing constructs from the repository
where possible.

Signed-off-by: Daniel Müller <deso@posteo.net>
2022-07-25 11:45:46 -07:00
Andrii Nakryiko
29869d6ef0 ci: disable attach_probe test on 5.5
It's assuming kprobe w/ sleepable flag is loadable, which is failing on
5.5 kernel.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-06-24 13:32:31 -07:00
Roberto Sassu
4cb682229d configs: Enable CONFIG_MODULE_SIG
Enable CONFIG_MODULE_SIG to test the new helper
bpf_verify_pkcs7_signature().

Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
2022-06-17 22:05:28 -07:00
Eyal Birger
0304a3c027 ci: enable vrf configs for x86_64
Set CONFIG_NET_L3_MASTER_DEV=y, CONFIG_NET_VRF=y for x86_64.

These options are needed for performing LWT BPF tests in test_progs.

Signed-off-by: Eyal Birger <eyal.birger@gmail.com>
2022-06-17 09:58:20 -07:00
Mykola Lysenko
a459010926 ci: temporarily disable varlen test 2022-06-17 09:47:40 -07:00
Andrii Nakryiko
645500dd7d ci: blacklist mptcp test on s390x
It is also blacklisted in kernel-patches CI.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-06-10 14:13:02 -07:00
Andrii Nakryiko
e93b1010f3 ci: disable unpriv_bpf_disabled test on s390x
Seems like it's relying on fentry which is not supported on s390x.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-06-07 17:39:28 -07:00
Andrii Nakryiko
d4998cbb6c ci: update Kconfigs to make all selftests working
Also disable fexit_stress which is using test_run's support for TRACING
progs now.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-06-07 17:39:28 -07:00
Ilya Leoshkevich
eaf9123419 vmtest: add netfilter to s390x config
This is required for the new synproxy test.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2022-05-23 17:39:33 -07:00
Maxim Mikityanskiy
47595c2f08 ci: blacklist xdp_syncookie on s390x
The xdp_syncookie test uses kfunc, and BPF JIT doesn't support kfunc on
s390x.

Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
2022-05-20 17:14:41 -07:00
Andrii Nakryiko
12e932ac0e ci: whitelist 'usdt' test on 5.5 and update vmlinux.h
Update vmlinux.h for latest selftests. Also whitelist usdt test on 5.5,
as it should work.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-05-13 16:13:31 -07:00
Maxim Mikityanskiy
b221db664f ci: enable synproxy config for all architectures
Enable the following options in Kconfig for x86-64 and s390x:

CONFIG_NETFILTER_SYNPROXY=y
CONFIG_NETFILTER_XT_TARGET_CT=y
CONFIG_NETFILTER_XT_MATCH_STATE=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_SYNPROXY=y
CONFIG_IP_NF_RAW=y

These options are needed to run the selftests for the new BPF SYN cookie
helpers.

Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
2022-04-27 15:18:22 -07:00
Andrii Nakryiko
b69f8ee93e ci: allow usdt selftest on s390x
libbpf now has s390x support for USDT, so enable corresponding selftest.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-04-09 09:17:51 -07:00
Andrii Nakryiko
042471d356 ci: blacklist usdt selftest on s390x
libbpf doesn't support USDTs on s390x yet, blacklist corresponding
selftest.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-04-06 07:34:58 -07:00
Andrii Nakryiko
f7833c0819 ci: ensure CONFIG_DEBUG_INFO_BTF=y by choosing DWARF debug info
With recent upstream changes, the default for debug info is
CONFIG_DEBUG_INFO_NONE=y, which prevents BTF from being generated.
Choose CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y to make sure we do
get DWARF generated.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-04-06 07:34:58 -07:00
Andrii Nakryiko
67a4b14643 ci: remove subprogs from 5.5 whitelist
It seems like it started to cause kernel panic in CI, so drop it from
whitelist.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-03-19 23:08:50 -07:00
Andrii Nakryiko
f1b6bc31a5 ci: update s390x blacklist
Sync s390x blacklist with the one currently used for kernel-patches CI.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-03-19 23:08:50 -07:00
Andrii Nakryiko
c84815ee37 ci: enable CONFIG_FPROBE=y for multi-attach kprobe tests
Recently landed multi-attach kprobe functionality expects
CONFIG_FPROBE=y.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-03-18 00:52:43 -07:00
Andrii Nakryiko
3591deb9bc ci: blacklist s390x tests
Blacklist timer_crash_mode as requiring BPF trampoline.

Temporary blacklist sk_lookup due to big-endian problems that haven't
been resolved upstream yet.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-03-07 22:16:11 -08:00
Andrii Nakryiko
3febb8a165 ci: update s390x blacklist
Add bpf_mod_race and bpf_nf selftests to blacklist for s390x.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2022-01-21 16:54:32 -08:00
Kumar Kartikeya Dwivedi
22411acc4b ci: Add userfaultfd kernel config
Add necessary kernel config values to run BPF mod race test in
conntrack-bpf series.

Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
2022-01-11 12:40:59 -08:00
Kumar Kartikeya Dwivedi
7c382f0df9 ci: Add conntrack kernel config
Add necessary kernel config values to test BPF kfunc functionality for
netfilter's conntrack subsystem.

Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
2022-01-05 12:58:11 -08:00
Andrii Nakryiko
dc49f2d07b ci: add LIRC kernel config
Add necessary kernel config values to make BPF_PROG_TYPE_LIRC_MODE2
programs work.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2021-12-16 16:44:52 -08:00
Andrii Nakryiko
19656636a9 vmtest: blacklist bpf_loop and get_func_args_test for s390x
bpf_loop is using arch-specific sys_nanosleep attach function.
get_func_args_test relies on BPF trampoline.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2021-12-14 17:06:30 -08:00
Yucong Sun
7e89be4022 Migrate vmtest to modular actions in libbpf/ci 2021-12-09 14:09:04 -08:00
Ilya Leoshkevich
93e89b3474 ci: upgrade s390x runner to v2.285.0
This is needed for composite actions with conditional steps.

Fixes #416.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2021-12-03 10:42:54 -08:00
Quentin Monnet
4884bf3dbd ci: fix test on /exitstatus existence and size
The condition for the test is incorrect, we want to add a default exit
status if the file is empty. But [[ -s file ]] returns true if the file
exists and has a size greater than zero. Let's reverse the condition.

Fixes: 385b2d1738 ("ci: change VM's /exitstatus format to prepare it for several results")
Signed-off-by: Quentin Monnet <quentin@isovalent.com>
2021-12-01 15:46:22 -08:00
Andrii Nakryiko
690d0531f9 ci: whitelist legacy_printk tests on 4.9 and 5.5
legacy_printk selftests is specially designed to be runnable on old
kernels and validate libbpf's bpf_trace_printk-related macros. Run them
in CI.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
2021-11-30 16:39:31 -08:00
Quentin Monnet
7cda69caeb ci: add folding markers to avoid getting output out of sections
Move commands to existing sections, or add markers for new sections when
no surrounding existing section is relevant. This is to avoid having
logs outside of subsection for the “vmtest” step of the GitHub action.
2021-11-30 14:39:02 -08:00
Quentin Monnet
1f7db672e4 ci: carry on after selftest failure and report test group results
Two changes come with this patch:

- Test groups report their exit status individually for the final
  summary, by appending it to /exitstatus in the VM. “Test groups” are
  test_maps, test_verifier, test_progs, and test_progs-no_alu32.

- For these separate reports to make sense, allow the CI action to carry
  on even after one of the groups fails, by adding "&& true" to the
  commands in order to neutralise the effect of the "set -e".
2021-11-30 14:39:02 -08:00
Quentin Monnet
385b2d1738 ci: change VM's /exitstatus format to prepare it for several results
We recently introduced a summary for the results of the different groups
of tests for the CI, displayed after the machine is shut down. There are
currently two groups, "bpftool" and "vm_tests". We want to split the
latter into different subgroups. For that, we will make each group of
tests that runs in the VM print its exit status to the /exitstatus file.

In preparation for this, let's update the format of this /exitstatus
file. Instead of containing just an integer, it now contains a line with
a group name, a colon, and the integer result. This is easy enough to
parse on the other end.

We also drop the associative array, and iterate on /exitstatus instead
to produce the summary: this way, the order of the checks is preserved.
2021-11-30 14:39:02 -08:00
Quentin Monnet
7f11cd48d6 ci: create helpers for formatting errors and notices
Create helpers for formatting errors and notices for GitHub actions,
instead of directly printing the double colons and attributes.
2021-11-30 14:39:02 -08:00
Quentin Monnet
9109d6a4b4 ci: create summary for tests and account for bpftool checks result
The bpftool checks work as expected when the CI runs, except that they
do not set any error status code for the script on error, which means
that the failures are lost among the logs and not reported in a clear
way to the reviewers.

This commit aims at fixing the issue. We could simply exit with a
non-zero error status when the bpftool checks, but that would prevent
the other tests from running. Instead, we propose to store the result of
the bpftool checks in a bash array. This array can later be reused to
print a summary of the different groups of tests, at the end of the CI
run, to help the reviewers understand where the failure happened without
having to manually unfold all the sections on the GitHub interface.

Currently, there are only two groups: the bpftool checks and the "VM
tests". The latter may later be split into test_maps, test_progs,
test_progs-no_alu32, etc. by teaching each of them to append their exit
status code to the "exitstatus" file.

Fixes: 88649fe655 ("ci: run script to test bpftool types/options sync")
2021-11-18 11:19:36 -08:00
Quentin Monnet
eab19ffead ci: pass shutdown fold description to fold command
For displaying a coloured title for the shutdown section in the logs,
instead of having the colour control codes directly written in run.sh,
we can pass the section title as an argument to "travis_fold()" and have
it format and print it for us.

This is cleaner, and slightly more in-line with what we do in the CI
files of the vmtest repository.
2021-11-18 11:19:36 -08:00
Ilya Leoshkevich
140b902274 ci: add s390x vmtest
Run it on the self-hosted builder with tag "z15".

Also add the infrastructure code for the self-hosted builder.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2021-11-15 22:39:49 -08:00
Ilya Leoshkevich
1987a34fc9 vmtest: use libguestfs for disk image manipulations
Running vmtest inside a container removes the ability to use certain
root powers, among other things - mounting arbitrary images. Use
libguestfs in order to avoid having to mount anything.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2021-11-15 22:39:49 -08:00
Ilya Leoshkevich
3b1714aa92 vmtest: add s390x blacklist
A lot of tests in test_progs fail due to the missing trampoline
implementation on s390x (and a handful for other reasons). Yet, a lot
more pass, so disabling test_progs altogether is too heavy-handed.

So add a mechanism for arch-specific blacklists (as discussed in [1])
and introduce a s390x blacklist, that simply reflects the status quo.

[1] https://github.com/libbpf/libbpf/pull/204#discussion_r601768628

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2021-11-15 22:39:49 -08:00
Ilya Leoshkevich
554054d876 vmtest: tweak qemu invocation for s390x
We need a different binary and console. Also use a fixed number of
cores in order to avoid OOM in case a builder has too many of them.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2021-11-15 22:39:49 -08:00
Ilya Leoshkevich
26e196d449 vmtest: add s390x image
Generated by simply running mkrootfs_debian.sh.

Also use $ARCH as an image name prefix.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2021-11-15 22:39:49 -08:00
Ilya Leoshkevich
3fac0b3d08 vmtest: add s390x config
Select the current config based on $ARCH value and thus rename
the existing config to config-latest.$ARCH.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2021-11-15 22:39:49 -08:00
Ilya Leoshkevich
ac4a0fa400 vmtest: add debootstrap-based mkrootfs script
The existing mkrootfs.sh is based on Arch Linux, which supports only
x86_64.

Add mkrootfs_debian.sh: a debootstrap-based script. Debian was chosen,
because it supports more architectures than other mainstream distros.
Move init setup to mkrootfs_tweak.sh, rename the existing Arch script
to mkrootfs_arch.sh.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2021-11-15 22:39:49 -08:00
Ilya Leoshkevich
6ad73f5083 vmtest: do not install lld
s390x LLVM does not have it, and it is not needed for the libbpf CI.
So drop it.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2021-11-15 22:39:49 -08:00
Ilya Leoshkevich
8a52e49575 vmtest: use python3-docutils instead of python-docutils
There is no python-docutils on Debian Bullseye, but python3-docutils
exists everywhere. Since Python 2 is EOL anyway, use the Python 3
version.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2021-11-15 22:39:49 -08:00