nvme: Add unit test for nvme_ctrlr_disable() and _poll()

nvme_ctrlr_disable() and nvme_ctrlr_disable_poll() were added almost a
year ago but they did not have any unit test.

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I4d9abe37e5aea18893509776b54de495a407ba67
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17000
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Michael Haeuptle <michaelhaeuptle@gmail.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Shuhei Matsumoto 2023-03-01 21:19:30 +09:00 committed by Jim Harris
parent c14554b681
commit 772bffcbf9

View File

@ -3328,6 +3328,38 @@ test_nvme_transport_ctrlr_ready(void)
MOCK_CLEAR(nvme_transport_ctrlr_ready);
}
static void
test_nvme_ctrlr_disable(void)
{
DECLARE_AND_CONSTRUCT_CTRLR();
int rc;
SPDK_CU_ASSERT_FATAL(nvme_ctrlr_construct(&ctrlr) == 0);
ctrlr.state = NVME_CTRLR_STATE_TRANSPORT_READY;
SPDK_CU_ASSERT_FATAL(nvme_ctrlr_process_init(&ctrlr) == 0);
CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_READY);
/* Start a Controller Level Reset. */
ctrlr.is_disconnecting = true;
nvme_ctrlr_disable(&ctrlr);
g_ut_nvme_regs.cc.bits.en = 0;
rc = nvme_ctrlr_disable_poll(&ctrlr);
CU_ASSERT(rc == -EAGAIN);
CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_DISABLE_WAIT_FOR_READY_0);
g_ut_nvme_regs.csts.bits.rdy = 0;
rc = nvme_ctrlr_disable_poll(&ctrlr);
CU_ASSERT(rc == 0);
CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_DISABLED);
g_ut_nvme_regs.csts.bits.shst = SPDK_NVME_SHST_COMPLETE;
nvme_ctrlr_destruct(&ctrlr);
}
int
main(int argc, char **argv)
{
@ -3384,6 +3416,7 @@ main(int argc, char **argv)
CU_ADD_TEST(suite, test_nvme_ctrlr_ana_resize);
CU_ADD_TEST(suite, test_nvme_ctrlr_get_memory_domains);
CU_ADD_TEST(suite, test_nvme_transport_ctrlr_ready);
CU_ADD_TEST(suite, test_nvme_ctrlr_disable);
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();