selftests/bpf: Support local rootfs image for vmtest
authorPu Lehui <pulehui@huawei.com>
Thu, 5 Sep 2024 08:13:56 +0000 (08:13 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 5 Sep 2024 20:13:40 +0000 (13:13 -0700)
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
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Signed-off-by: Pu Lehui <pulehui@huawei.com>
Link: https://lore.kernel.org/r/20240905081401.1894789-6-pulehui@huaweicloud.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/README.rst
tools/testing/selftests/bpf/vmtest.sh

index 9b974e4..4a1e74b 100644 (file)
@@ -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
           variable in the beginning of script.
 
-.. note:: The script currently only supports x86_64 and s390x architectures.
-
 Additional information about selftest failures are
 documented here.
 
index 87d93f2..7bd2b44 100755 (executable)
@@ -4,9 +4,11 @@
 set -u
 set -e
 
-# This script currently only works for x86_64 and s390x, as
-# it is based on the VM image used by the BPF CI, which is
-# available only for these architectures.
+# This script currently only works for the following platforms,
+# as it is based on the VM image used by the BPF CI, which is
+# 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)"
 case "${ARCH}" in
 s390x)
@@ -34,6 +36,7 @@ aarch64)
 esac
 DEFAULT_COMMAND="./test_progs"
 MOUNT_DIR="mnt"
+LOCAL_ROOTFS_IMAGE=""
 ROOTFS_IMAGE="root.img"
 OUTPUT_DIR="$HOME/.bpf_selftests"
 KCONFIG_REL_PATHS=("tools/testing/selftests/bpf/config"
@@ -69,6 +72,7 @@ or
 
 Options:
 
+       -l)             Specify the path to the local rootfs image.
        -i)             Update the rootfs image with a newer version.
        -d)             Update the output directory (default: ${OUTPUT_DIR})
        -j)             Number of jobs for compilation, similar to -j in make
@@ -128,7 +132,11 @@ load_rootfs()
                exit 1
        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()
@@ -342,8 +350,11 @@ main()
        local exit_command="poweroff -f"
        local debug_shell="no"
 
-       while getopts ':hskid:j:' opt; do
+       while getopts ':hskl:id:j:' opt; do
                case ${opt} in
+               l)
+                       LOCAL_ROOTFS_IMAGE="$OPTARG"
+                       ;;
                i)
                        update_image="yes"
                        ;;