1 Star 0 Fork 44

陈亚强/spdk

forked from src-openEuler/spdk 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0029-Enable-unittest-in-make-check.patch 12.53 KB
一键复制 编辑 原始数据 按行查看 历史
swf504 提交于 2022-11-01 20:54 +08:00 . Enable unittest with make check
From 344a408a5ff466f530e6788341e308f9193011cd Mon Sep 17 00:00:00 2001
From: Weifeng Su <[email protected]>
Date: Tue, 1 Nov 2022 20:41:17 +0800
Subject: [PATCH] Enable unittest in make check
To adapt to unittest, the following modifications are made:
1.Enable unittest compilation and remove --disable-unit-tests configuration item.
2.To eliminate the weak reference of spdk_log,add a reference to log.c in spdk.unittest.mk.
3.Use CONFIG_APP_RW to add some adaptation codes to the bdev and nvme cases.
4.Use CONFIG_APP_RW in the unittest.sh file to shield the execution of cases that are incompatible with --enable-raw.
Signed-off-by: Weifeng Su <[email protected]>
---
mk/spdk.unittest.mk | 3 +++
test/common/autotest_common.sh | 10 +++++++++-
test/unit/lib/Makefile | 4 ++++
test/unit/lib/bdev/bdev.c/bdev_ut.c | 3 +++
test/unit/lib/bdev/mt/bdev.c/bdev_ut.c | 3 +++
test/unit/lib/bdev/part.c/part_ut.c | 3 +++
test/unit/lib/nvme/Makefile | 8 ++++++--
test/unit/lib/nvme/nvme.c/nvme_ut.c | 5 +++++
.../lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c | 3 +++
test/unit/lib/nvme/nvme_pcie.c/nvme_pcie_ut.c | 7 +++++++
test/unit/lib/scsi/Makefile | 4 ++++
test/unit/lib/util/Makefile | 5 +++++
test/unit/unittest.sh | 19 ++++++++++++++++++-
13 files changed, 73 insertions(+), 4 deletions(-)
diff --git a/mk/spdk.unittest.mk b/mk/spdk.unittest.mk
index 01d2bc3..d362ba9 100644
--- a/mk/spdk.unittest.mk
+++ b/mk/spdk.unittest.mk
@@ -50,6 +50,9 @@ CFLAGS += -I$(SPDK_ROOT_DIR)/lib
CFLAGS += -I$(SPDK_ROOT_DIR)/module
CFLAGS += -I$(SPDK_ROOT_DIR)/test
CFLAGS += -ffunction-sections
+ifeq ($(CONFIG_APP_RW), y)
+CFLAGS += -include$(SPDK_ROOT_DIR)/lib/log/log.c
+endif
LDFLAGS += -Wl,--gc-sections
SPDK_LIB_LIST += thread util log
diff --git a/test/common/autotest_common.sh b/test/common/autotest_common.sh
index 8fc383f..6865698 100755
--- a/test/common/autotest_common.sh
+++ b/test/common/autotest_common.sh
@@ -160,7 +160,11 @@ export UBSAN_OPTIONS='halt_on_error=1:print_stacktrace=1:abort_on_error=1'
# Export LeakSanitizer option to use suppression file in order to prevent false positives
# and known leaks in external executables or libraries from showing up.
asan_suppression_file="/var/tmp/asan_suppression_file"
-sudo rm -rf "$asan_suppression_file"
+if [ $CONFIG_APP_RW == 'y' ]; then
+ rm -rf "$asan_suppression_file"
+else
+ sudo rm -rf "$asan_suppression_file"
+fi
cat << EOL >> "$asan_suppression_file"
# ASAN has some bugs around thread_local variables. We have a destructor in place
# to free the thread contexts, but ASAN complains about the leak before those
@@ -309,6 +313,10 @@ function set_test_storage() {
mount=$(df "$target_dir" | awk '$1 !~ /Filesystem/{print $6}')
target_space=${avails["$mount"]}
+ if [ $CONFIG_APP_RW == 'y' ]; then
+ export SPDK_TEST_STORAGE=$target_dir
+ return 0
+ fi
if ((target_space == 0 || target_space < requested_size)); then
continue
fi
diff --git a/test/unit/lib/Makefile b/test/unit/lib/Makefile
index aa2d707..ac8f66c 100644
--- a/test/unit/lib/Makefile
+++ b/test/unit/lib/Makefile
@@ -34,7 +34,11 @@
SPDK_ROOT_DIR := $(abspath $(CURDIR)/../../..)
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
+ifeq ($(CONFIG_APP_RW), y)
+DIRS-y = bdev blob blobfs event ioat iscsi json jsonrpc lvol
+else
DIRS-y = bdev blob blobfs event ioat iscsi json jsonrpc log lvol
+endif
DIRS-y += notify nvme nvmf scsi sock thread util
DIRS-$(CONFIG_IDXD) += idxd
DIRS-$(CONFIG_REDUCE) += reduce
diff --git a/test/unit/lib/bdev/bdev.c/bdev_ut.c b/test/unit/lib/bdev/bdev.c/bdev_ut.c
index f210692..159a01a 100644
--- a/test/unit/lib/bdev/bdev.c/bdev_ut.c
+++ b/test/unit/lib/bdev/bdev.c/bdev_ut.c
@@ -41,6 +41,9 @@
#undef SPDK_CONFIG_VTUNE
#include "bdev/bdev.c"
+#ifdef SPDK_CONFIG_APP_RW
+#include "bdev/bdev_self.c"
+#endif
struct spdk_trace_histories *g_trace_histories;
DEFINE_STUB_V(spdk_trace_add_register_fn, (struct spdk_trace_register_fn *reg_fn));
diff --git a/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c b/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c
index 238823e..80d86cb 100644
--- a/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c
+++ b/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c
@@ -41,6 +41,9 @@
#undef SPDK_CONFIG_VTUNE
#include "bdev/bdev.c"
+#ifdef SPDK_CONFIG_APP_RW
+#include "bdev/bdev_self.c"
+#endif
#define BDEV_UT_NUM_THREADS 3
diff --git a/test/unit/lib/bdev/part.c/part_ut.c b/test/unit/lib/bdev/part.c/part_ut.c
index 2258c71..15bc5d7 100644
--- a/test/unit/lib/bdev/part.c/part_ut.c
+++ b/test/unit/lib/bdev/part.c/part_ut.c
@@ -41,6 +41,9 @@
#undef SPDK_CONFIG_VTUNE
#include "bdev/bdev.c"
+#ifdef SPDK_CONFIG_APP_RW
+#include "bdev/bdev_self.c"
+#endif
#include "bdev/part.c"
struct spdk_trace_histories *g_trace_histories;
diff --git a/test/unit/lib/nvme/Makefile b/test/unit/lib/nvme/Makefile
index 5f74579..7ca1632 100644
--- a/test/unit/lib/nvme/Makefile
+++ b/test/unit/lib/nvme/Makefile
@@ -33,9 +33,13 @@
SPDK_ROOT_DIR := $(abspath $(CURDIR)/../../../..)
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
-
+ifeq ($(CONFIG_APP_RW), y)
+DIRS-y = nvme.c nvme_ctrlr.c nvme_ctrlr_cmd.c nvme_ctrlr_ocssd_cmd.c nvme_ns.c nvme_ns_cmd.c nvme_ns_ocssd_cmd.c nvme_pcie.c nvme_poll_group.c nvme_qpair.c \
+ nvme_quirks.c nvme_tcp.c
+else
DIRS-y = nvme.c nvme_ctrlr.c nvme_ctrlr_cmd.c nvme_ctrlr_ocssd_cmd.c nvme_ns.c nvme_ns_cmd.c nvme_ns_ocssd_cmd.c nvme_pcie.c nvme_poll_group.c nvme_qpair.c \
- nvme_quirks.c nvme_tcp.c nvme_uevent.c \
+ nvme_quirks.c nvme_tcp.c nvme_uevent.c
+endif
DIRS-$(CONFIG_RDMA) += nvme_rdma.c
diff --git a/test/unit/lib/nvme/nvme.c/nvme_ut.c b/test/unit/lib/nvme/nvme.c/nvme_ut.c
index bef45c6..cd2b82d 100644
--- a/test/unit/lib/nvme/nvme.c/nvme_ut.c
+++ b/test/unit/lib/nvme/nvme.c/nvme_ut.c
@@ -67,6 +67,11 @@ DEFINE_STUB(nvme_uevent_connect, int, (void), 1);
DEFINE_STUB(spdk_nvme_poll_group_process_completions, int64_t, (struct spdk_nvme_poll_group *group,
uint32_t completions_per_qpair, spdk_nvme_disconnected_qpair_cb disconnected_qpair_cb), 0);
+#ifdef SPDK_CONFIG_APP_RW
+DEFINE_STUB(spdk_nvme_ctrlr_process_admin_completions, int32_t, (struct spdk_nvme_ctrlr *ctrlr), 0);
+DEFINE_STUB_V(spdk_output_debug_info, (void));
+#endif
+
static bool ut_destruct_called = false;
void
nvme_ctrlr_destruct(struct spdk_nvme_ctrlr *ctrlr)
diff --git a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c
index 16a4c1b..9a1fb5a 100644
--- a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c
+++ b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c
@@ -40,6 +40,9 @@
#include "common/lib/test_env.c"
#include "nvme/nvme_ctrlr.c"
+#ifdef SPDK_CONFIG_APP_RW
+#include "nvme/nvme_ctrlr_self.c"
+#endif
#include "nvme/nvme_quirks.c"
SPDK_LOG_REGISTER_COMPONENT(nvme)
diff --git a/test/unit/lib/nvme/nvme_pcie.c/nvme_pcie_ut.c b/test/unit/lib/nvme/nvme_pcie.c/nvme_pcie_ut.c
index 5956bce..55d2048 100644
--- a/test/unit/lib/nvme/nvme_pcie.c/nvme_pcie_ut.c
+++ b/test/unit/lib/nvme/nvme_pcie.c/nvme_pcie_ut.c
@@ -75,6 +75,11 @@ DEFINE_STUB(spdk_pci_device_get_id, struct spdk_pci_id, (struct spdk_pci_device
DEFINE_STUB(nvme_uevent_connect, int, (void), 0);
+#ifdef SPDK_CONFIG_APP_RW
+DEFINE_STUB(nvme_qpair_check_enabled, bool, (struct spdk_nvme_qpair *qpair), true);
+DEFINE_STUB_V(nvme_qpair_abort_reqs, (struct spdk_nvme_qpair *qpair,uint32_t dnr));
+#endif
+
SPDK_LOG_REGISTER_COMPONENT(nvme)
struct nvme_driver *g_spdk_nvme_driver = NULL;
@@ -309,6 +314,7 @@ test_nvme_pcie_hotplug_monitor(void)
TAILQ_INIT(&driver.shared_attached_ctrlrs);
g_spdk_nvme_driver = &driver;
+#ifndef SPDK_CONFIG_APP_RW
/* Case 1: SPDK_NVME_UEVENT_ADD/ NVME_VFIO */
entry.uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_VFIO;
entry.uevent.action = SPDK_NVME_UEVENT_ADD;
@@ -385,6 +391,7 @@ test_nvme_pcie_hotplug_monitor(void)
_nvme_pcie_hotplug_monitor(&test_nvme_probe_ctx);
CU_ASSERT(pctrlr.ctrlr.is_failed == true);
+#endif
pthread_mutex_destroy(&driver.lock);
pthread_mutexattr_destroy(&attr);
diff --git a/test/unit/lib/scsi/Makefile b/test/unit/lib/scsi/Makefile
index 8044d3f..54ddcb7 100644
--- a/test/unit/lib/scsi/Makefile
+++ b/test/unit/lib/scsi/Makefile
@@ -34,7 +34,11 @@
SPDK_ROOT_DIR := $(abspath $(CURDIR)/../../../..)
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
+ifeq ($(CONFIG_APP_RW), y)
+DIRS-y = dev.c lun.c scsi.c scsi_bdev.c
+else
DIRS-y = dev.c lun.c scsi.c scsi_bdev.c scsi_pr.c
+endif
.PHONY: all clean $(DIRS-y)
diff --git a/test/unit/lib/util/Makefile b/test/unit/lib/util/Makefile
index 2217157..eb0a4c5 100644
--- a/test/unit/lib/util/Makefile
+++ b/test/unit/lib/util/Makefile
@@ -34,8 +34,13 @@
SPDK_ROOT_DIR := $(abspath $(CURDIR)/../../../..)
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
+ifeq ($(CONFIG_APP_RW), y)
+DIRS-y = base64.c bit_array.c cpuset.c crc16.c crc32_ieee.c crc32c.c dif.c \
+ iov.c pipe.c string.c
+else
DIRS-y = base64.c bit_array.c cpuset.c crc16.c crc32_ieee.c crc32c.c dif.c \
iov.c math.c pipe.c string.c
+endif
.PHONY: all clean $(DIRS-y)
diff --git a/test/unit/unittest.sh b/test/unit/unittest.sh
index 91b249c..444bb24 100755
--- a/test/unit/unittest.sh
+++ b/test/unit/unittest.sh
@@ -11,9 +11,12 @@ rootdir=$(readlink -f $(dirname $0)/../..)
source "$rootdir/test/common/autotest_common.sh"
cd "$rootdir"
+enable_raw=`grep '#define SPDK_CONFIG_APP_RW 1' $rootdir/include/spdk/config.h`
function unittest_bdev() {
+ if [ -z ${enable_raw} ]; then
$valgrind $testdir/lib/bdev/bdev.c/bdev_ut
+ fi
$valgrind $testdir/lib/bdev/bdev_ocssd.c/bdev_ocssd_ut
$valgrind $testdir/lib/bdev/raid/bdev_raid.c/bdev_raid_ut
$valgrind $testdir/lib/bdev/bdev_zone.c/bdev_zone_ut
@@ -22,13 +25,15 @@ function unittest_bdev() {
$valgrind $testdir/lib/bdev/scsi_nvme.c/scsi_nvme_ut
$valgrind $testdir/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut
$valgrind $testdir/lib/bdev/vbdev_zone_block.c/vbdev_zone_block_ut
+ if [ -z ${enable_raw} ]; then
$valgrind $testdir/lib/bdev/mt/bdev.c/bdev_ut
+ fi
}
function unittest_blob() {
# We do not compile blob_ut on systems with too old Cunit, so do
# not try to execute it if it doesn't exist
- if [[ -e $testdir/lib/blob/blob.c/blob_ut ]]; then
+ if [[ -z ${enable_raw} && -e $testdir/lib/blob/blob.c/blob_ut ]]; then
$valgrind $testdir/lib/blob/blob.c/blob_ut
fi
$valgrind $testdir/lib/blobfs/tree.c/tree_ut
@@ -82,14 +87,18 @@ function unittest_nvme() {
$valgrind $testdir/lib/nvme/nvme_poll_group.c/nvme_poll_group_ut
$valgrind $testdir/lib/nvme/nvme_quirks.c/nvme_quirks_ut
$valgrind $testdir/lib/nvme/nvme_tcp.c/nvme_tcp_ut
+ if [ -z ${enable_raw} ]; then
$valgrind $testdir/lib/nvme/nvme_uevent.c/nvme_uevent_ut
+ fi
}
function unittest_nvmf() {
$valgrind $testdir/lib/nvmf/ctrlr.c/ctrlr_ut
$valgrind $testdir/lib/nvmf/ctrlr_bdev.c/ctrlr_bdev_ut
$valgrind $testdir/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut
+ if [ -z ${enable_raw} ]; then
$valgrind $testdir/lib/nvmf/subsystem.c/subsystem_ut
+ fi
$valgrind $testdir/lib/nvmf/tcp.c/tcp_ut
}
@@ -98,7 +107,9 @@ function unittest_scsi() {
$valgrind $testdir/lib/scsi/lun.c/lun_ut
$valgrind $testdir/lib/scsi/scsi.c/scsi_ut
$valgrind $testdir/lib/scsi/scsi_bdev.c/scsi_bdev_ut
+ if [ -z ${enable_raw} ]; then
$valgrind $testdir/lib/scsi/scsi_pr.c/scsi_pr_ut
+ fi
}
function unittest_sock() {
@@ -120,7 +131,9 @@ function unittest_util() {
$valgrind $testdir/lib/util/string.c/string_ut
$valgrind $testdir/lib/util/dif.c/dif_ut
$valgrind $testdir/lib/util/iov.c/iov_ut
+ if [ -z ${enable_raw} ]; then
$valgrind $testdir/lib/util/math.c/math_ut
+ fi
$valgrind $testdir/lib/util/pipe.c/pipe_ut
}
@@ -200,7 +213,9 @@ run_test "unittest_iscsi" unittest_iscsi
run_test "unittest_json" unittest_json
run_test "unittest_notify" $valgrind $testdir/lib/notify/notify.c/notify_ut
run_test "unittest_nvme" unittest_nvme
+if [ -z ${enable_raw} ]; then
run_test "unittest_log" $valgrind $testdir/lib/log/log.c/log_ut
+fi
run_test "unittest_lvol" $valgrind $testdir/lib/lvol/lvol.c/lvol_ut
if grep -q '#define SPDK_CONFIG_RDMA 1' $rootdir/include/spdk/config.h; then
run_test "unittest_nvme_rdma" $valgrind $testdir/lib/nvme/nvme_rdma.c/nvme_rdma_ut
@@ -218,7 +233,9 @@ fi
run_test "unittest_scsi" unittest_scsi
run_test "unittest_sock" unittest_sock
+if [ -z ${enable_raw} ]; then
run_test "unittest_thread" $valgrind $testdir/lib/thread/thread.c/thread_ut
+fi
run_test "unittest_util" unittest_util
if grep -q '#define SPDK_CONFIG_VHOST 1' $rootdir/include/spdk/config.h; then
run_test "unittest_vhost" $valgrind $testdir/lib/vhost/vhost.c/vhost_ut
--
2.23.0
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yaqiangchen/spdk.git
[email protected]:yaqiangchen/spdk.git
yaqiangchen
spdk
spdk
master

搜索帮助