test/nvme_io_msg: cases for io_msg_ctrlr register and unregister
Change-Id: Icd91870712ee977c3f9d803e68e8cb4c4b2ff0e6 Signed-off-by: Mao Jiang <maox.jiang@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6797 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
b7423187a2
commit
cd468b987d
@ -39,12 +39,18 @@
|
||||
|
||||
SPDK_LOG_REGISTER_COMPONENT(nvme)
|
||||
|
||||
DEFINE_STUB(spdk_nvme_ctrlr_alloc_io_qpair, struct spdk_nvme_qpair *,
|
||||
(struct spdk_nvme_ctrlr *ctrlr,
|
||||
const struct spdk_nvme_io_qpair_opts *opts,
|
||||
size_t opts_size), NULL);
|
||||
DEFINE_STUB(spdk_nvme_ctrlr_free_io_qpair, int, (struct spdk_nvme_qpair *qpair), 0);
|
||||
|
||||
DEFINE_RETURN_MOCK(spdk_nvme_ctrlr_alloc_io_qpair, struct spdk_nvme_qpair *);
|
||||
struct spdk_nvme_qpair *
|
||||
spdk_nvme_ctrlr_alloc_io_qpair(struct spdk_nvme_ctrlr *ctrlr,
|
||||
const struct spdk_nvme_io_qpair_opts *user_opts,
|
||||
size_t opts_size)
|
||||
{
|
||||
HANDLE_RETURN_MOCK(spdk_nvme_ctrlr_alloc_io_qpair);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
ut_io_msg_fn(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid, void *arg)
|
||||
{
|
||||
@ -116,6 +122,80 @@ test_nvme_io_msg_send(void)
|
||||
free(request);
|
||||
}
|
||||
|
||||
static void
|
||||
ut_stop(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static void
|
||||
ut_update(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static struct nvme_io_msg_producer ut_nvme_io_msg_producer[2] = {
|
||||
{
|
||||
.name = "ut_test1",
|
||||
.stop = ut_stop,
|
||||
.update = ut_update,
|
||||
}, {
|
||||
.name = "ut_test2",
|
||||
.stop = ut_stop,
|
||||
.update = ut_update,
|
||||
}
|
||||
};
|
||||
|
||||
static void
|
||||
test_nvme_io_msg_ctrlr_register_unregister(void)
|
||||
{
|
||||
struct spdk_nvme_ctrlr ctrlr = {};
|
||||
int rc;
|
||||
|
||||
STAILQ_INIT(&ctrlr.io_producers);
|
||||
MOCK_SET(spdk_nvme_ctrlr_alloc_io_qpair, (void *)0xDEADBEEF);
|
||||
|
||||
rc = nvme_io_msg_ctrlr_register(&ctrlr, &ut_nvme_io_msg_producer[0]);
|
||||
CU_ASSERT(rc == 0);
|
||||
CU_ASSERT(ctrlr.external_io_msgs != NULL);
|
||||
CU_ASSERT(!STAILQ_EMPTY(&ctrlr.io_producers));
|
||||
CU_ASSERT(ctrlr.external_io_msgs_qpair == (void *)0xDEADBEEF);
|
||||
|
||||
nvme_io_msg_ctrlr_unregister(&ctrlr, &ut_nvme_io_msg_producer[0]);
|
||||
CU_ASSERT(ctrlr.external_io_msgs == NULL);
|
||||
CU_ASSERT(ctrlr.external_io_msgs_qpair == NULL);
|
||||
CU_ASSERT(STAILQ_EMPTY(&ctrlr.io_producers));
|
||||
|
||||
/* Multiple producer */
|
||||
rc = nvme_io_msg_ctrlr_register(&ctrlr, &ut_nvme_io_msg_producer[0]);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
rc = nvme_io_msg_ctrlr_register(&ctrlr, &ut_nvme_io_msg_producer[1]);
|
||||
CU_ASSERT(rc == 0);
|
||||
CU_ASSERT(ctrlr.external_io_msgs != NULL);
|
||||
CU_ASSERT(ctrlr.external_io_msgs_qpair == (void *)0xDEADBEEF);
|
||||
nvme_io_msg_ctrlr_unregister(&ctrlr, &ut_nvme_io_msg_producer[0]);
|
||||
CU_ASSERT(!STAILQ_EMPTY(&ctrlr.io_producers));
|
||||
nvme_io_msg_ctrlr_unregister(&ctrlr, &ut_nvme_io_msg_producer[1]);
|
||||
CU_ASSERT(STAILQ_EMPTY(&ctrlr.io_producers));
|
||||
CU_ASSERT(ctrlr.external_io_msgs == NULL);
|
||||
CU_ASSERT(ctrlr.external_io_msgs_qpair == NULL);
|
||||
|
||||
/* The same producer exist */
|
||||
rc = nvme_io_msg_ctrlr_register(&ctrlr, &ut_nvme_io_msg_producer[0]);
|
||||
CU_ASSERT(rc == 0);
|
||||
CU_ASSERT(ctrlr.external_io_msgs != NULL);
|
||||
CU_ASSERT(ctrlr.external_io_msgs_qpair == (void *)0xDEADBEEF);
|
||||
|
||||
rc = nvme_io_msg_ctrlr_register(&ctrlr, &ut_nvme_io_msg_producer[0]);
|
||||
CU_ASSERT(rc == -EEXIST);
|
||||
nvme_io_msg_ctrlr_unregister(&ctrlr, &ut_nvme_io_msg_producer[0]);
|
||||
CU_ASSERT(STAILQ_EMPTY(&ctrlr.io_producers));
|
||||
CU_ASSERT(ctrlr.external_io_msgs == NULL);
|
||||
CU_ASSERT(ctrlr.external_io_msgs_qpair == NULL);
|
||||
MOCK_CLEAR(spdk_nvme_ctrlr_alloc_io_qpair);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
CU_pSuite suite = NULL;
|
||||
@ -127,6 +207,7 @@ int main(int argc, char **argv)
|
||||
suite = CU_add_suite("nvme_io_msg", NULL, NULL);
|
||||
CU_ADD_TEST(suite, test_nvme_io_msg_send);
|
||||
CU_ADD_TEST(suite, test_nvme_io_msg_process);
|
||||
CU_ADD_TEST(suite, test_nvme_io_msg_ctrlr_register_unregister);
|
||||
|
||||
CU_basic_set_mode(CU_BRM_VERBOSE);
|
||||
CU_basic_run_tests();
|
||||
|
Loading…
Reference in New Issue
Block a user