From 6a49507c47168890a6d1d0b8960b01fef546bdc8 Mon Sep 17 00:00:00 2001 From: ChengqiangMeng Date: Tue, 1 Jun 2021 15:14:56 +0800 Subject: [PATCH] unittest/nvme_rdma: increase code coverage for nvme_rdma.c nvme_rdma_parse_addr and nvme_rdma_qpair_init code comprehensive coverage. Signed-off-by: ChengqiangMeng Change-Id: I7474281a2b80c092f0ed516e1da3649473eb0fa3 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7337 Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot Reviewed-by: Aleksey Marchuk Reviewed-by: Changpeng Liu --- test/common/lib/test_rdma.c | 3 +- test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/test/common/lib/test_rdma.c b/test/common/lib/test_rdma.c index 62cd934eb..d89f48745 100644 --- a/test/common/lib/test_rdma.c +++ b/test/common/lib/test_rdma.c @@ -39,8 +39,9 @@ #define RDMA_UT_LKEY 123 #define RDMA_UT_RKEY 312 +struct spdk_rdma_qp g_spdk_rdma_qp = {}; DEFINE_STUB(spdk_rdma_qp_create, struct spdk_rdma_qp *, (struct rdma_cm_id *cm_id, - struct spdk_rdma_qp_init_attr *qp_attr), NULL); + struct spdk_rdma_qp_init_attr *qp_attr), &g_spdk_rdma_qp); DEFINE_STUB(spdk_rdma_qp_accept, int, (struct spdk_rdma_qp *spdk_rdma_qp, struct rdma_conn_param *conn_param), 0); DEFINE_STUB(spdk_rdma_qp_complete_connect, int, (struct spdk_rdma_qp *spdk_rdma_qp), 0); diff --git a/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c b/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c index e550bbe9f..b31245630 100644 --- a/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c +++ b/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c @@ -1030,6 +1030,50 @@ test_nvme_rdma_poll_group_connect_disconnect_qpair(void) free(rqpair); } +static void +test_nvme_rdma_parse_addr(void) +{ + struct sockaddr_storage dst_addr; + int rc = 0; + + memset(&dst_addr, 0, sizeof(dst_addr)); + /* case1: getaddrinfo failed */ + rc = nvme_rdma_parse_addr(&dst_addr, AF_INET, NULL, NULL); + CU_ASSERT(rc != 0); + + /* case2: res->ai_addrlen < sizeof(*sa). Expect: Pass. */ + rc = nvme_rdma_parse_addr(&dst_addr, AF_INET, "12.34.56.78", "23"); + CU_ASSERT(rc == 0); + CU_ASSERT(dst_addr.ss_family == AF_INET); +} + +static void +test_nvme_rdma_qpair_init(void) +{ + struct nvme_rdma_qpair rqpair = {}; + struct rdma_cm_id cm_id = {}; + struct ibv_qp qp = {}; + struct nvme_rdma_ctrlr rctrlr = {}; + int rc = 0; + + rctrlr.ctrlr.trid.trtype = SPDK_NVME_TRANSPORT_RDMA; + rqpair.cm_id = &cm_id; + g_nvme_hooks.get_ibv_pd = NULL; + rqpair.qpair.poll_group = NULL; + rqpair.qpair.ctrlr = &rctrlr.ctrlr; + g_spdk_rdma_qp.qp = &qp; + + rc = nvme_rdma_qpair_init(&rqpair); + CU_ASSERT(rc == 0); + + CU_ASSERT(rqpair.cm_id->context == &rqpair.qpair); + CU_ASSERT(rqpair.max_send_sge == NVME_RDMA_DEFAULT_TX_SGE); + CU_ASSERT(rqpair.max_recv_sge == NVME_RDMA_DEFAULT_RX_SGE); + CU_ASSERT(rqpair.current_num_sends == 0); + CU_ASSERT(rqpair.current_num_recvs == 0); + CU_ASSERT(rqpair.cq == (struct ibv_cq *)0xFEEDBEEF); +} + int main(int argc, char **argv) { CU_pSuite suite = NULL; @@ -1055,6 +1099,8 @@ int main(int argc, char **argv) CU_ADD_TEST(suite, test_nvme_rdma_validate_cm_event); CU_ADD_TEST(suite, test_nvme_rdma_register_and_unregister_reqs); CU_ADD_TEST(suite, test_nvme_rdma_poll_group_connect_disconnect_qpair); + CU_ADD_TEST(suite, test_nvme_rdma_parse_addr); + CU_ADD_TEST(suite, test_nvme_rdma_qpair_init); CU_basic_set_mode(CU_BRM_VERBOSE); CU_basic_run_tests();