Commit 2294073d authored by Pu Lehui's avatar Pu Lehui Committed by Alexei Starovoitov

selftests/bpf: Support local rootfs image for vmtest

Support vmtest to use local rootfs image generated by [0] that is
consistent with BPF CI. Now we can specify the local rootfs image
through the `-l` parameter like as follows:

  vmtest.sh -l ./libbpf-vmtest-rootfs-2024.08.22-noble-amd64.tar.zst -- ./test_progs

Meanwhile, some descriptions have been flushed.

Link: https://github.com/libbpf/ci/blob/main/rootfs/mkrootfs_debian.sh [0]
Acked-by: default avatarEduard Zingerman <eddyz87@gmail.com>
Signed-off-by: default avatarPu Lehui <pulehui@huawei.com>
Link: https://lore.kernel.org/r/20240905081401.1894789-6-pulehui@huaweicloud.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 0c3fc330
...@@ -85,8 +85,6 @@ In case of linker errors when running selftests, try using static linking: ...@@ -85,8 +85,6 @@ In case of linker errors when running selftests, try using static linking:
If you want to change pahole and llvm, you can change `PATH` environment If you want to change pahole and llvm, you can change `PATH` environment
variable in the beginning of script. variable in the beginning of script.
.. note:: The script currently only supports x86_64 and s390x architectures.
Additional information about selftest failures are Additional information about selftest failures are
documented here. documented here.
......
...@@ -4,9 +4,11 @@ ...@@ -4,9 +4,11 @@
set -u set -u
set -e set -e
# This script currently only works for x86_64 and s390x, as # This script currently only works for the following platforms,
# it is based on the VM image used by the BPF CI, which is # as it is based on the VM image used by the BPF CI, which is
# available only for these architectures. # available only for these architectures. We can also specify
# the local rootfs image generated by the following script:
# https://github.com/libbpf/ci/blob/main/rootfs/mkrootfs_debian.sh
ARCH="$(uname -m)" ARCH="$(uname -m)"
case "${ARCH}" in case "${ARCH}" in
s390x) s390x)
...@@ -34,6 +36,7 @@ aarch64) ...@@ -34,6 +36,7 @@ aarch64)
esac esac
DEFAULT_COMMAND="./test_progs" DEFAULT_COMMAND="./test_progs"
MOUNT_DIR="mnt" MOUNT_DIR="mnt"
LOCAL_ROOTFS_IMAGE=""
ROOTFS_IMAGE="root.img" ROOTFS_IMAGE="root.img"
OUTPUT_DIR="$HOME/.bpf_selftests" OUTPUT_DIR="$HOME/.bpf_selftests"
KCONFIG_REL_PATHS=("tools/testing/selftests/bpf/config" KCONFIG_REL_PATHS=("tools/testing/selftests/bpf/config"
...@@ -69,6 +72,7 @@ or ...@@ -69,6 +72,7 @@ or
Options: Options:
-l) Specify the path to the local rootfs image.
-i) Update the rootfs image with a newer version. -i) Update the rootfs image with a newer version.
-d) Update the output directory (default: ${OUTPUT_DIR}) -d) Update the output directory (default: ${OUTPUT_DIR})
-j) Number of jobs for compilation, similar to -j in make -j) Number of jobs for compilation, similar to -j in make
...@@ -128,7 +132,11 @@ load_rootfs() ...@@ -128,7 +132,11 @@ load_rootfs()
exit 1 exit 1
fi fi
download_rootfs | zstd -d | sudo tar -C "$dir" -x if [[ -n "${LOCAL_ROOTFS_IMAGE}" ]]; then
cat "${LOCAL_ROOTFS_IMAGE}" | zstd -d | sudo tar -C "$dir" -x
else
download_rootfs | zstd -d | sudo tar -C "$dir" -x
fi
} }
recompile_kernel() recompile_kernel()
...@@ -342,8 +350,11 @@ main() ...@@ -342,8 +350,11 @@ main()
local exit_command="poweroff -f" local exit_command="poweroff -f"
local debug_shell="no" local debug_shell="no"
while getopts ':hskid:j:' opt; do while getopts ':hskl:id:j:' opt; do
case ${opt} in case ${opt} in
l)
LOCAL_ROOTFS_IMAGE="$OPTARG"
;;
i) i)
update_image="yes" update_image="yes"
;; ;;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment