From f0f57a3fe17e7fe45cdd4e11747327e981e846dc Mon Sep 17 00:00:00 2001 From: Mao Jiang Date: Tue, 15 Jun 2021 18:16:56 +0800 Subject: [PATCH] test/nvmf/rdma: cases for rdma freeing request data Change-Id: I3f95438482eb3b373592d2777cfdf28de34d6a30 Signed-off-by: Mao Jiang Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8375 Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot Reviewed-by: Changpeng Liu Reviewed-by: Ziye Yang Reviewed-by: Aleksey Marchuk Reviewed-by: Ben Walker --- test/unit/lib/nvmf/rdma.c/rdma_ut.c | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/test/unit/lib/nvmf/rdma.c/rdma_ut.c b/test/unit/lib/nvmf/rdma.c/rdma_ut.c index bc63aa215..7ad1508d2 100644 --- a/test/unit/lib/nvmf/rdma.c/rdma_ut.c +++ b/test/unit/lib/nvmf/rdma.c/rdma_ut.c @@ -1242,6 +1242,56 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void) CU_ASSERT(data->wr.next == &rdma_req.rsp.wr); } +static void +test_nvmf_rdma_opts_init(void) +{ + struct spdk_nvmf_transport_opts opts = {}; + + nvmf_rdma_opts_init(&opts); + CU_ASSERT(opts.max_queue_depth == SPDK_NVMF_RDMA_DEFAULT_MAX_QUEUE_DEPTH); + CU_ASSERT(opts.max_qpairs_per_ctrlr == SPDK_NVMF_RDMA_DEFAULT_MAX_QPAIRS_PER_CTRLR); + CU_ASSERT(opts.in_capsule_data_size == SPDK_NVMF_RDMA_DEFAULT_IN_CAPSULE_DATA_SIZE); + CU_ASSERT(opts.max_io_size == SPDK_NVMF_RDMA_DEFAULT_MAX_IO_SIZE); + CU_ASSERT(opts.io_unit_size == SPDK_NVMF_RDMA_MIN_IO_BUFFER_SIZE); + CU_ASSERT(opts.max_aq_depth == SPDK_NVMF_RDMA_DEFAULT_AQ_DEPTH); + CU_ASSERT(opts.num_shared_buffers == SPDK_NVMF_RDMA_DEFAULT_NUM_SHARED_BUFFERS); + CU_ASSERT(opts.buf_cache_size == SPDK_NVMF_RDMA_DEFAULT_BUFFER_CACHE_SIZE); + CU_ASSERT(opts.dif_insert_or_strip == SPDK_NVMF_RDMA_DIF_INSERT_OR_STRIP); + CU_ASSERT(opts.abort_timeout_sec == SPDK_NVMF_RDMA_DEFAULT_ABORT_TIMEOUT_SEC); + CU_ASSERT(opts.transport_specific == NULL); +} + +static void +test_nvmf_rdma_request_free_data(void) +{ + struct spdk_nvmf_rdma_request rdma_req = {}; + struct spdk_nvmf_rdma_transport rtransport = {}; + struct spdk_nvmf_rdma_request_data *next_request_data = NULL; + + MOCK_CLEAR(spdk_mempool_get); + rtransport.data_wr_pool = spdk_mempool_create("spdk_nvmf_rdma_wr_data", + SPDK_NVMF_MAX_SGL_ENTRIES, + sizeof(struct spdk_nvmf_rdma_request_data), + SPDK_MEMPOOL_DEFAULT_CACHE_SIZE, + SPDK_ENV_SOCKET_ID_ANY); + next_request_data = spdk_mempool_get(rtransport.data_wr_pool); + SPDK_CU_ASSERT_FATAL(((struct test_mempool *)rtransport.data_wr_pool)->count == + SPDK_NVMF_MAX_SGL_ENTRIES - 1); + next_request_data->wr.wr_id = 1; + next_request_data->wr.num_sge = 2; + next_request_data->wr.next = NULL; + rdma_req.data.wr.next = &next_request_data->wr; + rdma_req.data.wr.wr_id = 1; + rdma_req.data.wr.num_sge = 2; + + nvmf_rdma_request_free_data(&rdma_req, &rtransport); + /* Check if next_request_data put into memory pool */ + CU_ASSERT(((struct test_mempool *)rtransport.data_wr_pool)->count == SPDK_NVMF_MAX_SGL_ENTRIES); + CU_ASSERT(rdma_req.data.wr.num_sge == 0); + + spdk_mempool_free(rtransport.data_wr_pool); +} + int main(int argc, char **argv) { CU_pSuite suite = NULL; @@ -1256,6 +1306,8 @@ int main(int argc, char **argv) CU_ADD_TEST(suite, test_spdk_nvmf_rdma_request_process); CU_ADD_TEST(suite, test_nvmf_rdma_get_optimal_poll_group); CU_ADD_TEST(suite, test_spdk_nvmf_rdma_request_parse_sgl_with_md); + CU_ADD_TEST(suite, test_nvmf_rdma_opts_init); + CU_ADD_TEST(suite, test_nvmf_rdma_request_free_data); CU_basic_set_mode(CU_BRM_VERBOSE); CU_basic_run_tests();