From 19453e5b6c3fef6823cb751fd27a10022318f270 Mon Sep 17 00:00:00 2001 From: Evgeniy Kochetov Date: Sat, 14 Mar 2020 17:35:24 +0000 Subject: [PATCH] ut/nvme: Test Set Num Queues controller intialization step Signed-off-by: Evgeniy Kochetov Change-Id: I590420fb7d976240a5a924ea7c0204c29d072990 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1272 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto --- .../lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c index 3f637b734..2043dd61d 100644 --- a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c +++ b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c @@ -207,13 +207,13 @@ int nvme_qpair_init(struct spdk_nvme_qpair *qpair, uint16_t id, return 0; } +static struct spdk_nvme_cpl fake_cpl = {}; + static void fake_cpl_success(spdk_nvme_cmd_cb cb_fn, void *cb_arg) { - struct spdk_nvme_cpl cpl = {}; - - cpl.status.sc = SPDK_NVME_SC_SUCCESS; - cb_fn(cb_arg, &cpl); + fake_cpl.status.sc = SPDK_NVME_SC_SUCCESS; + cb_fn(cb_arg, &fake_cpl); } int @@ -2052,6 +2052,26 @@ test_nvme_ctrlr_init_set_nvmf_ioccsz(void) nvme_ctrlr_destruct(&ctrlr); } +static void +test_nvme_ctrlr_init_set_num_queues(void) +{ + DECLARE_AND_CONSTRUCT_CTRLR(); + + ctrlr.state = NVME_CTRLR_STATE_IDENTIFY; + CU_ASSERT(nvme_ctrlr_process_init(&ctrlr) == 0); /* -> SET_NUM_QUEUES */ + CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_SET_NUM_QUEUES); + + ctrlr.opts.num_io_queues = 64; + /* Num queues is zero-based. So, use 31 to get 32 queues */ + fake_cpl.cdw0 = 31 + (31 << 16); + CU_ASSERT(nvme_ctrlr_process_init(&ctrlr) == 0); /* -> CONSTRUCT_NS */ + CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_CONSTRUCT_NS); + CU_ASSERT(ctrlr.opts.num_io_queues == 32); + fake_cpl.cdw0 = 0; + + nvme_ctrlr_destruct(&ctrlr); +} + int main(int argc, char **argv) { CU_pSuite suite = NULL; @@ -2111,6 +2131,8 @@ int main(int argc, char **argv) || CU_add_test(suite, "test_spdk_nvme_ctrlr_set_trid", test_spdk_nvme_ctrlr_set_trid) == NULL || CU_add_test(suite, "test_nvme_ctrlr_init_set_nvmf_ioccsz", test_nvme_ctrlr_init_set_nvmf_ioccsz) == NULL + || CU_add_test(suite, "test nvme ctrlr init set num queues", + test_nvme_ctrlr_init_set_num_queues) == NULL ) { CU_cleanup_registry(); return CU_get_error();