test/nvme: add unit test cases for nvme_qpair.c
Add unit test for API function spdk_nvme_qpair_add_cmd_error_injection() and spdk_nvme_qpair_remove_cmd_error_injection(). Change-Id: Ia1f0baf94c3ab1b9a03c6c2b4796346cbe120a62 Signed-off-by: Chen Wang <chenx.wang@intel.com> Reviewed-on: https://review.gerrithub.io/416905 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
parent
1fcfc425bf
commit
87210c1391
@ -319,6 +319,66 @@ test_get_status_string(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
test_nvme_qpair_add_cmd_error_injection(void)
|
||||
{
|
||||
struct spdk_nvme_qpair qpair = {};
|
||||
struct spdk_nvme_ctrlr ctrlr = {};
|
||||
int rc;
|
||||
|
||||
prepare_submit_request_test(&qpair, &ctrlr);
|
||||
ctrlr.adminq = &qpair;
|
||||
|
||||
/* Admin error injection at submission path */
|
||||
rc = spdk_nvme_qpair_add_cmd_error_injection(&ctrlr, NULL,
|
||||
SPDK_NVME_OPC_GET_FEATURES, true, 5000, 1,
|
||||
SPDK_NVME_SCT_GENERIC, SPDK_NVME_SC_INVALID_FIELD);
|
||||
|
||||
CU_ASSERT(rc == 0);
|
||||
CU_ASSERT(!TAILQ_EMPTY(&qpair.err_cmd_head));
|
||||
|
||||
/* Remove cmd error injection */
|
||||
spdk_nvme_qpair_remove_cmd_error_injection(&ctrlr, NULL, SPDK_NVME_OPC_GET_FEATURES);
|
||||
|
||||
CU_ASSERT(TAILQ_EMPTY(&qpair.err_cmd_head));
|
||||
|
||||
/* IO error injection at completion path */
|
||||
rc = spdk_nvme_qpair_add_cmd_error_injection(&ctrlr, &qpair,
|
||||
SPDK_NVME_OPC_READ, false, 0, 1,
|
||||
SPDK_NVME_SCT_MEDIA_ERROR, SPDK_NVME_SC_UNRECOVERED_READ_ERROR);
|
||||
|
||||
CU_ASSERT(rc == 0);
|
||||
CU_ASSERT(!TAILQ_EMPTY(&qpair.err_cmd_head));
|
||||
|
||||
/* Provide the same opc, and check whether allocate a new entry */
|
||||
rc = spdk_nvme_qpair_add_cmd_error_injection(&ctrlr, &qpair,
|
||||
SPDK_NVME_OPC_READ, false, 0, 1,
|
||||
SPDK_NVME_SCT_MEDIA_ERROR, SPDK_NVME_SC_UNRECOVERED_READ_ERROR);
|
||||
|
||||
CU_ASSERT(rc == 0);
|
||||
SPDK_CU_ASSERT_FATAL(!TAILQ_EMPTY(&qpair.err_cmd_head));
|
||||
CU_ASSERT(TAILQ_NEXT(TAILQ_FIRST(&qpair.err_cmd_head), link) == NULL);
|
||||
|
||||
/* Remove cmd error injection */
|
||||
spdk_nvme_qpair_remove_cmd_error_injection(&ctrlr, &qpair, SPDK_NVME_OPC_READ);
|
||||
|
||||
CU_ASSERT(TAILQ_EMPTY(&qpair.err_cmd_head));
|
||||
|
||||
rc = spdk_nvme_qpair_add_cmd_error_injection(&ctrlr, &qpair,
|
||||
SPDK_NVME_OPC_COMPARE, true, 0, 5,
|
||||
SPDK_NVME_SCT_GENERIC, SPDK_NVME_SC_COMPARE_FAILURE);
|
||||
|
||||
CU_ASSERT(rc == 0);
|
||||
CU_ASSERT(!TAILQ_EMPTY(&qpair.err_cmd_head));
|
||||
|
||||
/* Remove cmd error injection */
|
||||
spdk_nvme_qpair_remove_cmd_error_injection(&ctrlr, &qpair, SPDK_NVME_OPC_COMPARE);
|
||||
|
||||
CU_ASSERT(TAILQ_EMPTY(&qpair.err_cmd_head));
|
||||
|
||||
cleanup_submit_request_test(&qpair);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
CU_pSuite suite = NULL;
|
||||
@ -343,6 +403,8 @@ int main(int argc, char **argv)
|
||||
#ifdef DEBUG
|
||||
|| CU_add_test(suite, "get_status_string", test_get_status_string) == NULL
|
||||
#endif
|
||||
|| CU_add_test(suite, "spdk_nvme_qpair_add_cmd_error_injection",
|
||||
test_nvme_qpair_add_cmd_error_injection) == NULL
|
||||
) {
|
||||
CU_cleanup_registry();
|
||||
return CU_get_error();
|
||||
|
Loading…
Reference in New Issue
Block a user