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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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.
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".
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.
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")
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.
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>
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>
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>
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>
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>
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>
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>