From 06a0d9ab331946fe322b9de47cbd376cb3342bb8 Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Wed, 15 Aug 2018 14:00:05 -0700 Subject: [PATCH] test: Use ut_multithread framework in nvmf/ctrlr Change-Id: I497abe0996287203f4b99850202a23f35d360f5e Signed-off-by: Ben Walker Reviewed-on: https://review.gerrithub.io/422467 Chandler-Test-Pool: SPDK Automated Test System Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris Reviewed-by: Changpeng Liu --- test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c | 33 ++++++++++++++++++--------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c b/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c index c7dfd28e6..1458bf97d 100644 --- a/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c +++ b/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c @@ -37,7 +37,7 @@ #include "spdk_internal/mock.h" #include "spdk_internal/thread.h" -#include "common/lib/test_env.c" +#include "common/lib/ut_multithread.c" #include "nvmf/ctrlr.c" SPDK_LOG_REGISTER_COMPONENT("nvmf", SPDK_LOG_NVMF) @@ -144,12 +144,6 @@ DEFINE_STUB(spdk_nvmf_transport_qpair_set_sqsize, (struct spdk_nvmf_qpair *qpair), 0); -static void -ctrlr_ut_pass_msg(spdk_msg_fn fn, void *ctx, void *thread_ctx) -{ - fn(ctx); -} - void spdk_nvmf_bdev_ctrlr_identify_ns(struct spdk_nvmf_ns *ns, struct spdk_nvme_ns_data *nsdata) { @@ -340,6 +334,7 @@ test_connect(void) /* Valid admin connect command */ memset(&rsp, 0, sizeof(rsp)); rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS); CU_ASSERT(nvme_status_success(&rsp.nvme_cpl.status)); CU_ASSERT(qpair.ctrlr != NULL); @@ -351,6 +346,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); req.length = sizeof(connect_data) - 1; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVME_SC_INVALID_FIELD); @@ -361,6 +357,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); cmd.connect_cmd.recfmt = 1234; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INCOMPATIBLE_FORMAT); @@ -371,6 +368,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); memset(connect_data.subnqn, 'a', sizeof(connect_data.subnqn)); rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -383,6 +381,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); MOCK_SET(spdk_nvmf_tgt_find_subsystem, NULL); rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -395,6 +394,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); memset(connect_data.hostnqn, 'b', sizeof(connect_data.hostnqn)); rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -407,6 +407,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); MOCK_SET(spdk_nvmf_subsystem_host_allowed, false); rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_HOST); @@ -417,6 +418,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); cmd.connect_cmd.sqsize = 0; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -429,6 +431,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); cmd.connect_cmd.sqsize = 64; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -441,6 +444,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); connect_data.cntlid = 0x1234; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -457,6 +461,7 @@ test_connect(void) MOCK_SET(spdk_nvmf_subsystem_get_ctrlr, &ctrlr); cmd.connect_cmd.qid = 1; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS); CU_ASSERT(nvme_status_success(&rsp.nvme_cpl.status)); CU_ASSERT(qpair.ctrlr == &ctrlr); @@ -466,6 +471,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); MOCK_SET(spdk_nvmf_subsystem_get_ctrlr, NULL); rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -478,6 +484,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); subsystem.subtype = SPDK_NVMF_SUBTYPE_DISCOVERY; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -490,6 +497,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); ctrlr.vcprop.cc.bits.en = 0; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -502,6 +510,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); ctrlr.vcprop.cc.bits.iosqes = 3; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -514,6 +523,7 @@ test_connect(void) memset(&rsp, 0, sizeof(rsp)); ctrlr.vcprop.cc.bits.iocqes = 3; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVMF_FABRIC_SC_INVALID_PARAM); @@ -528,6 +538,7 @@ test_connect(void) spdk_bit_array_set(ctrlr.qpair_mask, 1); spdk_bit_array_set(ctrlr.qpair_mask, 2); rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVME_SC_INVALID_QUEUE_IDENTIFIER); @@ -544,6 +555,7 @@ test_connect(void) spdk_bit_array_set(ctrlr.qpair_mask, 1); cmd.connect_cmd.qid = 1; rc = spdk_nvmf_ctrlr_connect(&req); + poll_threads(); CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS); CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_COMMAND_SPECIFIC); CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVME_SC_INVALID_QUEUE_IDENTIFIER); @@ -766,7 +778,6 @@ test_identify_ns(void) int main(int argc, char **argv) { - struct spdk_thread *thread; CU_pSuite suite = NULL; unsigned int num_failures; @@ -791,15 +802,15 @@ int main(int argc, char **argv) return CU_get_error(); } - thread = spdk_allocate_thread(ctrlr_ut_pass_msg, NULL, NULL, NULL, "ctrlr_ut"); - spdk_set_thread(thread); + allocate_threads(1); + set_thread(0); CU_basic_set_mode(CU_BRM_VERBOSE); CU_basic_run_tests(); num_failures = CU_get_number_of_failures(); CU_cleanup_registry(); - spdk_free_thread(); + free_threads(); return num_failures; }