Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> --- app/test/test_eventdev.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-)
diff --git a/app/test/test_eventdev.c b/app/test/test_eventdev.c index 042a446..e817838 100644 --- a/app/test/test_eventdev.c +++ b/app/test/test_eventdev.c @@ -51,7 +51,7 @@ testsuite_setup(void) if (!count) { printf("Failed to find a valid event device," " testing with event_skeleton device\n"); - return rte_eal_vdev_init("event_skeleton", NULL); + return rte_eal_vdev_init("event_skeleton0", NULL); } return TEST_SUCCESS; } @@ -720,6 +720,62 @@ test_eventdev_close(void) return rte_event_dev_close(TEST_DEV_ID); } +#define TEST_EVENTDEV_COUNT 8 + +static int +test_eventdev_create_destroy(void) +{ +#ifdef RTE_LIBRTE_PMD_SKELETON_EVENTDEV + int i, ret; + uint8_t curr_count; + char name[RTE_EVENTDEV_NAME_MAX_LEN]; + + curr_count = rte_event_dev_count(); + + /* Start from one to avoid overlap with active event_skeleton0 dev */ + for (i = 1; i <= TEST_EVENTDEV_COUNT; i++) { + ret = snprintf(name, RTE_EVENTDEV_NAME_MAX_LEN, + "%s%u", "event_skeleton", i); + TEST_ASSERT(ret >= 0, "Expected >0, %d", ret); + ret = rte_eal_vdev_init(name, NULL); + TEST_ASSERT_SUCCESS(ret, "Failed to init event_skeleton dev %s", + name); + } + for (i = 1; i <= TEST_EVENTDEV_COUNT; i++) { + ret = snprintf(name, RTE_EVENTDEV_NAME_MAX_LEN, + "%s%u", "event_skeleton", i); + TEST_ASSERT(ret >= 0, "Expected >0, %d", ret); + ret = rte_eal_vdev_uninit(name); + TEST_ASSERT_SUCCESS(ret, "Failed to uninit skeleton dev %s", + name); + } + TEST_ASSERT(curr_count == rte_event_dev_count(), + "init/uninit pairs count mismatch"); + + /* Test in reverse order */ + for (i = 1; i <= TEST_EVENTDEV_COUNT; i++) { + ret = snprintf(name, RTE_EVENTDEV_NAME_MAX_LEN, + "%s%u", "event_skeleton", i); + TEST_ASSERT(ret >= 0, "Expected >0, %d", ret); + ret = rte_eal_vdev_init(name, NULL); + TEST_ASSERT_SUCCESS(ret, "Failed to init event_skeleton dev %s", + name); + } + for (i = TEST_EVENTDEV_COUNT; i > 0; i--) { + ret = snprintf(name, RTE_EVENTDEV_NAME_MAX_LEN, + "%s%u", "event_skeleton", i); + TEST_ASSERT(ret >= 0, "Expected >0, %d", ret); + ret = rte_eal_vdev_uninit(name); + TEST_ASSERT_SUCCESS(ret, "Failed to uninit skeleton dev %s", + name); + } + TEST_ASSERT(curr_count == rte_event_dev_count(), + "init/uninit pairs count mismatch"); +#else + printf("Skipping eventdev_create_destroy test due to unavailability of event skeleton device\n"); +#endif + return TEST_SUCCESS; +} static struct unit_test_suite eventdev_common_testsuite = { .suite_name = "eventdev common code unit test suite", .setup = testsuite_setup, @@ -765,6 +821,8 @@ static struct unit_test_suite eventdev_common_testsuite = { test_eventdev_link_get), TEST_CASE_ST(eventdev_setup_device, NULL, test_eventdev_close), + TEST_CASE_ST(NULL, NULL, + test_eventdev_create_destroy), TEST_CASES_END() /**< NULL terminate unit test array */ } }; -- 2.5.5