UT/nvme_tcp:test for nvme_tcp_ctrlr_construct
Signed-off-by: Xiaoxiang Zhang <xiaoxiangx.zhang@intel.com> Change-Id: Ic2072129d986937b6cee7a4aaaf8935d030e00ea Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15489 Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
46b4ec7f28
commit
d82abf6638
@ -1571,6 +1571,73 @@ test_nvme_tcp_poll_group_get_stats(void)
|
||||
MOCK_CLEAR(spdk_sock_group_create);
|
||||
}
|
||||
|
||||
static void
|
||||
test_nvme_tcp_ctrlr_construct(void)
|
||||
{
|
||||
struct nvme_tcp_qpair *tqpair = NULL;
|
||||
struct nvme_tcp_ctrlr *tctrlr = NULL;
|
||||
struct spdk_nvme_ctrlr *ctrlr = NULL;
|
||||
struct spdk_nvme_transport_id trid = {
|
||||
.trtype = SPDK_NVME_TRANSPORT_TCP,
|
||||
.priority = 1,
|
||||
.adrfam = SPDK_NVMF_ADRFAM_IPV4,
|
||||
.traddr = "192.168.1.78",
|
||||
.trsvcid = "23",
|
||||
};
|
||||
struct spdk_nvme_ctrlr_opts opts = {
|
||||
.admin_queue_size = 2,
|
||||
.src_addr = "192.168.1.77",
|
||||
.src_svcid = "23",
|
||||
};
|
||||
|
||||
/* Transmit ACK timeout value exceeds max, expected to pass and using max */
|
||||
opts.transport_ack_timeout = NVME_TCP_CTRLR_MAX_TRANSPORT_ACK_TIMEOUT + 1;
|
||||
MOCK_SET(spdk_sock_connect_ext, (struct spdk_sock *)0xDEADBEEF);
|
||||
ctrlr = nvme_tcp_ctrlr_construct(&trid, &opts, NULL);
|
||||
tctrlr = nvme_tcp_ctrlr(ctrlr);
|
||||
tqpair = nvme_tcp_qpair(tctrlr->ctrlr.adminq);
|
||||
|
||||
CU_ASSERT(ctrlr != NULL);
|
||||
CU_ASSERT(tctrlr != NULL);
|
||||
CU_ASSERT(tqpair != NULL);
|
||||
CU_ASSERT(ctrlr->opts.transport_ack_timeout == NVME_TCP_CTRLR_MAX_TRANSPORT_ACK_TIMEOUT);
|
||||
CU_ASSERT(memcmp(&ctrlr->trid, &trid, sizeof(struct spdk_nvme_transport_id)) == 0);
|
||||
CU_ASSERT(tqpair->num_entries == 1);
|
||||
CU_ASSERT(TAILQ_EMPTY(&tqpair->send_queue));
|
||||
CU_ASSERT(TAILQ_EMPTY(&tqpair->outstanding_reqs));
|
||||
CU_ASSERT(!TAILQ_EMPTY(&tqpair->free_reqs));
|
||||
CU_ASSERT(TAILQ_FIRST(&tqpair->free_reqs) == &tqpair->tcp_reqs[0]);
|
||||
CU_ASSERT(TAILQ_FIRST(&tqpair->free_reqs)->cid == 0);
|
||||
CU_ASSERT(TAILQ_FIRST(&tqpair->free_reqs)->tqpair == tqpair);
|
||||
CU_ASSERT(TAILQ_FIRST(&tqpair->free_reqs)->pdu == &tqpair->send_pdus[0]);
|
||||
CU_ASSERT(tqpair->send_pdu == &tqpair->send_pdus[1]);
|
||||
CU_ASSERT(tqpair->recv_pdu == &tqpair->send_pdus[2]);
|
||||
|
||||
free(tqpair->tcp_reqs);
|
||||
spdk_free(tqpair->send_pdus);
|
||||
free(tqpair);
|
||||
free(tctrlr);
|
||||
|
||||
/* The Admin queue size is less than the minimum required size, expected to create Admin qpair failed */
|
||||
opts.admin_queue_size = 1;
|
||||
ctrlr = nvme_tcp_ctrlr_construct(&trid, &opts, NULL);
|
||||
CU_ASSERT(ctrlr == NULL);
|
||||
|
||||
/* Unhandled ADRFAM, expected to create Admin qpair failed */
|
||||
opts.admin_queue_size = 2;
|
||||
trid.adrfam = SPDK_NVMF_ADRFAM_INTRA_HOST;
|
||||
ctrlr = nvme_tcp_ctrlr_construct(&trid, &opts, NULL);
|
||||
CU_ASSERT(ctrlr == NULL);
|
||||
|
||||
/* Error connecting socket, expected to create Admin qpair failed */
|
||||
trid.adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
||||
MOCK_SET(spdk_sock_connect_ext, NULL);
|
||||
ctrlr = nvme_tcp_ctrlr_construct(&trid, &opts, NULL);
|
||||
CU_ASSERT(ctrlr == NULL);
|
||||
|
||||
MOCK_CLEAR(spdk_sock_connect_ext);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
@ -1607,6 +1674,7 @@ main(int argc, char **argv)
|
||||
CU_ADD_TEST(suite, test_nvme_tcp_ctrlr_create_io_qpair);
|
||||
CU_ADD_TEST(suite, test_nvme_tcp_ctrlr_delete_io_qpair);
|
||||
CU_ADD_TEST(suite, test_nvme_tcp_poll_group_get_stats);
|
||||
CU_ADD_TEST(suite, test_nvme_tcp_ctrlr_construct);
|
||||
|
||||
CU_basic_set_mode(CU_BRM_VERBOSE);
|
||||
CU_basic_run_tests();
|
||||
|
Loading…
Reference in New Issue
Block a user