[dpdk-dev] [PATCH v6 11/23] test: exercise event timer adapter start/stop functions

Erik Gabriel Carrillo erik.g.carrillo at intel.com
Thu Jan 11 01:21:02 CET 2018


Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo at 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



More information about the dev mailing list