diff --git a/tests/functional/Makefile b/tests/functional/Makefile index a10d65f..b7ad1e4 100644 --- a/tests/functional/Makefile +++ b/tests/functional/Makefile @@ -1,5 +1,6 @@ # # Copyright(c) 2019-2022 Intel Corporation +# Copyright(c) 2025 Huawei Technologies # SPDX-License-Identifier: BSD-3-Clause # @@ -11,9 +12,8 @@ INCDIR=$(ADAPTERDIR)/ocf/include WRAPDIR=$(ADAPTERDIR)/c/wrappers HELPDIR=$(ADAPTERDIR)/c/helpers -CC=gcc -CFLAGS=-g -Wall -I$(INCDIR) -I$(SRCDIR)/ocf/env -LDFLAGS=-pthread -lz +CFLAGS=-g -Wall -I$(INCDIR) -I$(SRCDIR)/ocf/env $(OPT_CFLAGS) +LDFLAGS=-pthread #-lz SRC=$(shell find $(SRCDIR) $(WRAPDIR) $(HELPDIR) -name \*.c) OBJS=$(patsubst %.c, %.o, $(SRC)) @@ -48,6 +48,7 @@ distclean: clean @rm -rf $(OCFLIB) $(OBJS) @rm -rf $(SRCDIR)/ocf @rm -rf $(INCDIR)/ocf + @find . -name *.gc* -delete @echo " DISTCLEAN " .PHONY: all clean sync config_random distclean diff --git a/tests/functional/run_with_sanitizers.sh b/tests/functional/run_with_sanitizers.sh new file mode 100755 index 0000000..3805c22 --- /dev/null +++ b/tests/functional/run_with_sanitizers.sh @@ -0,0 +1,37 @@ +# +# Copyright(c) 2019-2022 Intel Corporation +# Copyright(c) 2025 Huawei Technologies +# SPDX-License-Identifier: BSD-3-Clause +# + +#!/usr/bin/env bash + +LIB_DIR="/lib/x86_64-linux-gnu/" + +ASAN_LIB="$LIB_DIR/libasan.so.6" +TSAN_LIB="$LIB_DIR/libtsan.so.0" +UBSAN_LIB="$LIB_DIR/libubsan.so.1" + +# Path to test file/directory +PYOCF_TESTS_PATH="tests/" + +echo "Cleaning and building with Address Sanitizer" +make distclean +OPT_CFLAGS="-fsanitize=address" make -j >/dev/null +echo "Running tests, please wait..." +LD_PRELOAD=$ASAN_LIB ASAN_OPTIONS=log_output=asan_log.txt PYTHONMALLOC=malloc pytest $PYOCF_TESTS_PATH 2>&1 | tee asan_output.txt +echo "Done, check asan_log.txt" + +echo "Cleaning and building with Thread Sanitizer" +make distclean +OPT_CFLAGS="-fsanitize=thread -fno-omit-frame-pointer" make -j >/dev/null +echo "Running tests, please wait..." +LD_PRELOAD=$TSAN_LIB TSAN_OPTIONS=log_output=tsan_log.txt pytest -s $PYOCF_TESTS_PATH 2>&1 | tee tsan_output.txt +echo "Done, check tsan_log.txt" + +echo "Cleaning and building with Undefined Behaviour Sanitizer" +make distclean +OPT_CFLAGS="-fsanitize=undefined -fno-sanitize=alignment" make -j >/dev/null +echo "Running tests, please wait..." +LD_PRELOAD=$UBSAN_LIB UBSAN_OPTIONS=log_output=ubsan_log.txt pytest -s $PYOCF_TESTS_PATH 2>&1 | tee ubsan_output.txt +echo "Done, check ubsan_output.txt"