Signed-off-by: Erik Gabriel Carrillo <erik.g.carri...@intel.com> --- test/test/test_event_timer_adapter.c | 77 +++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-)
diff --git a/test/test/test_event_timer_adapter.c b/test/test/test_event_timer_adapter.c index c8623aa..58cbaba 100644 --- a/test/test/test_event_timer_adapter.c +++ b/test/test/test_event_timer_adapter.c @@ -49,8 +49,11 @@ #define TEST_PORT_ID 0 #define TEST_QUEUE_ID 0 +#define NSECPERSEC 1E9 + static int evdev; struct rte_mempool *g_event_timer_pool; +struct rte_event_timer_adapter *g_adapter; static inline void devconf_set_test_values(struct rte_event_dev_config *dev_conf, @@ -158,7 +161,33 @@ testsuite_teardown(void) rte_mempool_free(g_event_timer_pool); } -#define NSECPERSEC 1E9 +static int +adapter_create(void) +{ + int adapter_id = 0; + + struct rte_event_timer_adapter_conf conf = { + .event_dev_id = 0, + .timer_adapter_id = adapter_id, + .clk_src = RTE_EVENT_TIMER_ADAPTER_CPU_CLK, + .timer_tick_ns = NSECPERSEC / 10, + .max_tmo_ns = 180 * NSECPERSEC, + .nb_timers = NB_TEST_EVENT_TIMERS, + .flags = 0, + }; + + g_adapter = rte_event_timer_adapter_create(&conf); + TEST_ASSERT(g_adapter != NULL, "Failed to create event timer adapter"); + + return TEST_SUCCESS; +} + +static void +adapter_free(void) +{ + (void) rte_event_timer_adapter_free(g_adapter); +} + static int adapter_create_free(void) { @@ -245,12 +274,58 @@ adapter_create_free(void) return TEST_SUCCESS; } +/* TODO: test multiple starts */ +static int +adapter_start_stop(void) +{ + int ret; + uint32_t service_id; + struct rte_event_timer_adapter *l_adapter = NULL; + + ret = rte_event_timer_adapter_start(l_adapter); + TEST_ASSERT(ret < 0, "Erroneously started null adapter, ret = %d", ret); + + /* Check that we fail when no service core is mapped */ + ret = rte_event_timer_adapter_start(g_adapter); + TEST_ASSERT(ret == -ENOENT, "Erroneously started adapter with no " + "service core mapped"); + + TEST_ASSERT_SUCCESS(rte_event_timer_adapter_service_id_get(g_adapter, + &service_id), + "Failed to get event timer adapter service id"); + + TEST_ASSERT(rte_service_lcore_count() > 0, "Need one or more service " + "cores to perform this test"); + + /* Could map using service_id, but just do default mapping */ + ret = rte_service_start_with_defaults(); + TEST_ASSERT(ret == 0, "Failed to start services"); + + ret = rte_event_timer_adapter_start(g_adapter); + TEST_ASSERT(ret == 0, "Failed to start adapter"); + + ret = rte_event_timer_adapter_start(g_adapter); + TEST_ASSERT(ret == 0, "Failed to repeatedly start adapter"); + + ret = rte_event_timer_adapter_stop(g_adapter); + TEST_ASSERT(ret == 0, "Failed to stop event adapter, ret = %d", ret); + + ret = rte_event_timer_adapter_stop(l_adapter); + TEST_ASSERT(ret < 0, "Erroneously stopped event adapter, ret = %d", + ret); + + rte_service_lcore_reset_all(); + + return TEST_SUCCESS; +} + static struct unit_test_suite adapter_tests = { .suite_name = "event timer adapter test suite", .setup = testsuite_setup, .teardown = testsuite_teardown, .unit_test_cases = { TEST_CASE(adapter_create_free), + TEST_CASE_ST(adapter_create, adapter_free, adapter_start_stop), TEST_CASES_END() /**< NULL terminate unit test array */ } }; -- 2.6.4