test/nvme_rdma: RDMA requests allocation cases

Change-Id: I59b402ed7f204adc20a22406390224400e20ad51
Signed-off-by: Mao Jiang <maox.jiang@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5746
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ziye Yang <ziye.yang@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Mao Jiang 2021-01-15 14:03:58 +08:00 committed by Tomasz Zawadzki
parent 3289ab6d93
commit 7985c34ca0

View File

@ -362,6 +362,63 @@ test_nvme_rdma_build_contig_inline_request(void)
CU_ASSERT(rdma_req.send_sgl[1].lkey == RDMA_UT_LKEY);
}
static void
test_nvme_rdma_alloc_reqs(void)
{
struct nvme_rdma_qpair rqpair = {0};
int rc;
memset(&g_nvme_hooks, 0, sizeof(g_nvme_hooks));
/* Test case 1: zero entry. Expect: FAIL */
rqpair.num_entries = 0;
rc = nvme_rdma_alloc_reqs(&rqpair);
CU_ASSERT(rqpair.rdma_reqs == NULL);
SPDK_CU_ASSERT_FATAL(rc == -ENOMEM);
/* Test case 2: single entry. Expect: PASS */
memset(&rqpair, 0, sizeof(rqpair));
rqpair.num_entries = 1;
rc = nvme_rdma_alloc_reqs(&rqpair);
CU_ASSERT(rc == 0);
CU_ASSERT(rqpair.rdma_reqs[0].send_sgl[0].addr
== (uint64_t)&rqpair.cmds[0]);
CU_ASSERT(rqpair.rdma_reqs[0].send_wr.wr_id
== (uint64_t)&rqpair.rdma_reqs[0].rdma_wr);
CU_ASSERT(rqpair.rdma_reqs[0].send_wr.next == NULL);
CU_ASSERT(rqpair.rdma_reqs[0].send_wr.opcode == IBV_WR_SEND);
CU_ASSERT(rqpair.rdma_reqs[0].send_wr.send_flags == IBV_SEND_SIGNALED);
CU_ASSERT(rqpair.rdma_reqs[0].send_wr.sg_list
== rqpair.rdma_reqs[0].send_sgl);
CU_ASSERT(rqpair.rdma_reqs[0].send_wr.imm_data == 0);
spdk_free(rqpair.rdma_reqs);
spdk_free(rqpair.cmds);
/* Test case 3: multiple entries. Expect: PASS */
memset(&rqpair, 0, sizeof(rqpair));
rqpair.num_entries = 5;
rc = nvme_rdma_alloc_reqs(&rqpair);
CU_ASSERT(rc == 0);
for (int i = 0; i < 5; i++) {
CU_ASSERT(rqpair.rdma_reqs[i].send_sgl[0].addr
== (uint64_t)&rqpair.cmds[i]);
CU_ASSERT(rqpair.rdma_reqs[i].send_wr.wr_id
== (uint64_t)&rqpair.rdma_reqs[i].rdma_wr);
CU_ASSERT(rqpair.rdma_reqs[i].send_wr.next == NULL);
CU_ASSERT(rqpair.rdma_reqs[i].send_wr.opcode == IBV_WR_SEND);
CU_ASSERT(rqpair.rdma_reqs[i].send_wr.send_flags
== IBV_SEND_SIGNALED);
CU_ASSERT(rqpair.rdma_reqs[i].send_wr.sg_list
== rqpair.rdma_reqs[i].send_sgl);
CU_ASSERT(rqpair.rdma_reqs[i].send_wr.imm_data == 0);
}
spdk_free(rqpair.rdma_reqs);
spdk_free(rqpair.cmds);
}
int main(int argc, char **argv)
{
CU_pSuite suite = NULL;
@ -375,6 +432,7 @@ int main(int argc, char **argv)
CU_ADD_TEST(suite, test_nvme_rdma_build_sgl_inline_request);
CU_ADD_TEST(suite, test_nvme_rdma_build_contig_request);
CU_ADD_TEST(suite, test_nvme_rdma_build_contig_inline_request);
CU_ADD_TEST(suite, test_nvme_rdma_alloc_reqs);
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();