Commit 772bffcb authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Jim Harris
Browse files

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: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I4d9abe37e5aea18893509776b54de495a407ba67
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17000


Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarMichael Haeuptle <michaelhaeuptle@gmail.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent c14554b6
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -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();