mirror of
https://github.com/netdata/libbpf.git
synced 2026-03-21 08:49:06 +08:00
So far we have relied on allow/deny lists maintained in this repository to decide which tests to explicitly include/exclude from running in CI. With recent changes [0] this information is now available in upstream Linux. As such, this change switches us over to using the upstream allow/deny lists in addition to the local ones. We unconditionally honor the upstream lists for all kernel versions. [0] https://lore.kernel.org/bpf/165893461358.29339.11641967418379627671.git-patchwork-notify@kernel.org/T/#m2a97b0ea9ef0ddee7a53bbf7919e3f324b233937 Signed-off-by: Daniel Müller <deso@posteo.net>
88 lines
2.0 KiB
Bash
Executable File
88 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
source $(cd $(dirname $0) && pwd)/helpers.sh
|
|
|
|
ARCH=$(uname -m)
|
|
|
|
STATUS_FILE=/exitstatus
|
|
|
|
read_lists() {
|
|
(for path in "$@"; do
|
|
if [[ -s "$path" ]]; then
|
|
cat "$path"
|
|
fi;
|
|
done) | cut -d'#' -f1 | tr -s ' \t\n' ','
|
|
}
|
|
|
|
test_progs() {
|
|
if [[ "${KERNEL}" != '4.9.0' ]]; then
|
|
foldable start test_progs "Testing test_progs"
|
|
# "&& true" does not change the return code (it is not executed
|
|
# if the Python script fails), but it prevents exiting on a
|
|
# failure due to the "set -e".
|
|
./test_progs ${DENYLIST:+-d$DENYLIST} ${ALLOWLIST:+-a$ALLOWLIST} && true
|
|
echo "test_progs:$?" >> "${STATUS_FILE}"
|
|
foldable end test_progs
|
|
fi
|
|
}
|
|
|
|
test_progs_no_alu32() {
|
|
foldable start test_progs-no_alu32 "Testing test_progs-no_alu32"
|
|
./test_progs-no_alu32 ${DENYLIST:+-d$DENYLIST} ${ALLOWLIST:+-a$ALLOWLIST} && true
|
|
echo "test_progs-no_alu32:$?" >> "${STATUS_FILE}"
|
|
foldable end test_progs-no_alu32
|
|
}
|
|
|
|
test_maps() {
|
|
if [[ "${KERNEL}" == 'latest' ]]; then
|
|
foldable start test_maps "Testing test_maps"
|
|
./test_maps && true
|
|
echo "test_maps:$?" >> "${STATUS_FILE}"
|
|
foldable end test_maps
|
|
fi
|
|
}
|
|
|
|
test_verifier() {
|
|
if [[ "${KERNEL}" == 'latest' ]]; then
|
|
foldable start test_verifier "Testing test_verifier"
|
|
./test_verifier && true
|
|
echo "test_verifier:$?" >> "${STATUS_FILE}"
|
|
foldable end test_verifier
|
|
fi
|
|
}
|
|
|
|
foldable end vm_init
|
|
|
|
configs_path=/${PROJECT_NAME}/selftests/bpf
|
|
local_configs_path=${PROJECT_NAME}/vmtest/configs
|
|
DENYLIST=$(read_lists \
|
|
"$configs_path/DENYLIST" \
|
|
"$configs_path/DENYLIST.${ARCH}" \
|
|
"$local_configs_path/DENYLIST-${KERNEL}" \
|
|
"$local_configs_path/DENYLIST-${KERNEL}.${ARCH}" \
|
|
)
|
|
ALLOWLIST=$(read_lists \
|
|
"$configs_path/ALLOWLIST" \
|
|
"$configs_path/ALLOWLIST.${ARCH}" \
|
|
"$local_configs_path/ALLOWLIST-${KERNEL}" \
|
|
"$local_configs_path/ALLOWLIST-${KERNEL}.${ARCH}" \
|
|
)
|
|
|
|
echo "DENYLIST: ${DENYLIST}"
|
|
echo "ALLOWLIST: ${ALLOWLIST}"
|
|
|
|
cd ${PROJECT_NAME}/selftests/bpf
|
|
|
|
if [ $# -eq 0 ]; then
|
|
test_progs
|
|
test_progs_no_alu32
|
|
test_maps
|
|
test_verifier
|
|
else
|
|
for test_name in "$@"; do
|
|
"${test_name}"
|
|
done
|
|
fi
|