diff --git a/arch/lkl/Makefile b/arch/lkl/Makefile index 3d8105ba00581a..cd4ae2afc4af6d 100644 --- a/arch/lkl/Makefile +++ b/arch/lkl/Makefile @@ -36,6 +36,7 @@ arch/lkl/include/generated/uapi/asm/syscall_defs.h: vmlinux install: lkl.o __headers arch/lkl/include/generated/uapi/asm/syscall_defs.h @echo " INSTALL $(INSTALL_PATH)/lib/lkl.o" + @mkdir -p $(INSTALL_PATH)/lib/ @cp lkl.o $(INSTALL_PATH)/lib/ @arch/lkl/scripts/headers_install.py \ $(subst -j,-j$(NPROC),$(findstring -j,$(MAKEFLAGS))) \ diff --git a/tools/lkl/Makefile b/tools/lkl/Makefile index dc97fabf8efa20..ee43ac1996460e 100644 --- a/tools/lkl/Makefile +++ b/tools/lkl/Makefile @@ -11,6 +11,8 @@ endif OUTPUT_FORMAT=$(shell $(LD) -r -print-output-format) +TEST_TARGETS=test valgrind gdb + lib_source = $(filter-out %-host.c,$(wildcard lib/*.c)) source = $(wildcard tests/*.c) lib = lib/liblkl.a @@ -83,8 +85,5 @@ endif cpfromfs: cptofs if ! [ -e $@ ]; then ln -s $< $@; fi -test: - $(MAKE) -C tests - -valgrind: - $(MAKE) -C tests valgrind +$(TEST_TARGETS): all + $(MAKE) -C tests $@ diff --git a/tools/lkl/tests/Makefile b/tools/lkl/tests/Makefile index a89ecae410f9ce..7b669925ce8198 100644 --- a/tools/lkl/tests/Makefile +++ b/tools/lkl/tests/Makefile @@ -1,23 +1,52 @@ define valgrind_test - VALGRIND_CMD="valgrind --suppressions=valgrind.supp --leak-check=full --show-leak-kinds=all --xml=yes --xml-file=valgrind-$1.xml" \ + TEST_CMD="valgrind --suppressions=valgrind.supp --leak-check=full --show-leak-kinds=all --xml=yes --xml-file=valgrind-$1.xml" \ ./boot.sh -t $1 ; \ ./valgrind2xunit.py valgrind-$1.xml endef define valgrind_test_text - VALGRIND_CMD="valgrind --suppressions=valgrind.supp --leak-check=full --show-leak-kinds=all" \ + TEST_CMD="valgrind --suppressions=valgrind.supp --leak-check=full --show-leak-kinds=all" \ ./boot.sh -t $1 endef +define gdb_test + TEST_CMD="gdb --args" ./boot.sh -t $1 +endef + +define for_fs + for fs in $(FS_TYPES); do $(call $1,$$fs); done +endef + +define run + for fs in $(FS_TYPES); do ./boot.sh -t $$fs; done +endef + +QUICK?=0 +VALGRIND_TEXT?=0 +FS_TYPES?=ext4 btrfs vfat xfs + +# The hijack tests are very time consuming, so run with `QUICK=1 make +# test` if you want to stick to the unit tests +ifeq ($(QUICK),1) + HIJACK_TEST= +else + HIJACK_TEST="./hijack-test.sh" +endif + +ifeq ($(VALGRIND_TEXT),1) + VALGRIND_CMD=valgrind_test_text +else + VALGRIND_CMD=valgrind_test +endif + all: - ./boot.sh -t ext4 - ./boot.sh -t btrfs - ./boot.sh -t vfat - ./boot.sh -t xfs - ./hijack-test.sh + $(call run,) + $(HIJACK_TEST) + +test: all valgrind: - $(call valgrind_test,ext4) - $(call valgrind_test,btrfs) - $(call valgrind_test,vfat) - $(call valgrind_test,xfs) + $(call for_fs,$(VALGRIND_CMD)) + +gdb: + $(call for_fs,gdb_test) diff --git a/tools/lkl/tests/boot.sh b/tools/lkl/tests/boot.sh index 6dedbc6c4d210d..62f3ecd311aab4 100755 --- a/tools/lkl/tests/boot.sh +++ b/tools/lkl/tests/boot.sh @@ -1,4 +1,6 @@ -#!/bin/bash -e +#!/bin/bash + +set -e if [ "$1" = "-t" ]; then shift @@ -25,7 +27,7 @@ if file ./boot | grep PE32; then WINE=wine fi -${VALGRIND_CMD} $WINE ./boot -d $file -t $fstype $tap_args $LKL_TEST_DEBUG $@ || err=$? +${TEST_CMD} $WINE ./boot -d $file -t $fstype $tap_args $LKL_TEST_DEBUG $@ || err=$? if [ -c /dev/net/tun ]; then sudo ip tuntap del dev lkl_boot mode tap || true diff --git a/tools/lkl/tests/hijack-test.sh b/tools/lkl/tests/hijack-test.sh index cf0875696b088c..6a17b7b8813a30 100755 --- a/tools/lkl/tests/hijack-test.sh +++ b/tools/lkl/tests/hijack-test.sh @@ -26,7 +26,6 @@ rm ping6 echo "== TAP tests ==" if [ -c /dev/net/tun ]; then - sudo ip link set dev lkl_ptt0 down || true sudo ip tuntap del dev lkl_ptt0 mode tap || true sudo ip tuntap add dev lkl_ptt0 mode tap user $USER sudo ip link set dev lkl_ptt0 up