[2/2] test/event_timer: improve unit test compatability

Message ID 20190316202709.11346-2-pbhagavatula@marvell.com (mailing list archive)
State Accepted, archived
Delegated to: Jerin Jacob
Headers
Series [1/2] eventdev: check timer adapter status before start |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Pavan Nikhilesh Bhagavatula March 16, 2019, 8:27 p.m. UTC
  From: Pavan Nikhilesh <pbhagavatula@marvell.com>

Check if eventdev is open system eventdevs i.e. max_num_events = -1
before asserting.
Allow event timer adapter to adjust the resolution using
RTE_EVENT_TIMER_ADAPTER_F_ADJUST_RES and re-calculate timeout ticks
based on the adjusted resolution.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
 app/test/test_event_timer_adapter.c | 61 +++++++++++++++++------------
 1 file changed, 37 insertions(+), 24 deletions(-)
  

Comments

Carrillo, Erik G March 25, 2019, 9:40 p.m. UTC | #1
> -----Original Message-----
> From: Pavan Nikhilesh Bhagavatula [mailto:pbhagavatula@marvell.com]
> Sent: Saturday, March 16, 2019 3:28 PM
> To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>; Carrillo, Erik G
> <erik.g.carrillo@intel.com>
> Cc: dev@dpdk.org; Pavan Nikhilesh Bhagavatula
> <pbhagavatula@marvell.com>
> Subject: [dpdk-dev] [PATCH 2/2] test/event_timer: improve unit test
> compatability
> 
> From: Pavan Nikhilesh <pbhagavatula@marvell.com>
> 
> Check if eventdev is open system eventdevs i.e. max_num_events = -1
> before asserting.
> Allow event timer adapter to adjust the resolution using
> RTE_EVENT_TIMER_ADAPTER_F_ADJUST_RES and re-calculate timeout ticks
> based on the adjusted resolution.
> 
> Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>

Just one spelling nit - it should be "compatibility" in the subject line.  With that change:

Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
  
Jerin Jacob Kollanukkaran March 30, 2019, 3:05 p.m. UTC | #2
On Mon, 2019-03-25 at 21:40 +0000, Carrillo, Erik G wrote:
> > -----Original Message-----
> > From: Pavan Nikhilesh Bhagavatula [mailto:pbhagavatula@marvell.com]
> > Sent: Saturday, March 16, 2019 3:28 PM
> > To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>; Carrillo, Erik
> > G
> > <erik.g.carrillo@intel.com>
> > Cc: dev@dpdk.org; Pavan Nikhilesh Bhagavatula
> > <pbhagavatula@marvell.com>
> > Subject: [dpdk-dev] [PATCH 2/2] test/event_timer: improve unit test
> > compatability
> > 
> > From: Pavan Nikhilesh <pbhagavatula@marvell.com>
> > 
> > Check if eventdev is open system eventdevs i.e. max_num_events = -1
> > before asserting.
> > Allow event timer adapter to adjust the resolution using
> > RTE_EVENT_TIMER_ADAPTER_F_ADJUST_RES and re-calculate timeout ticks
> > based on the adjusted resolution.
> > 
> > Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
> 
> Just one spelling nit - it should be "compatibility" in the subject
> line.  With that change:

Fixed in apply.

> 
> Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>

Series applied to dpdk-next-eventdev/master. Thanks.
  

Patch

diff --git a/app/test/test_event_timer_adapter.c b/app/test/test_event_timer_adapter.c
index d4b78e093..742ca8181 100644
--- a/app/test/test_event_timer_adapter.c
+++ b/app/test/test_event_timer_adapter.c
@@ -42,8 +42,13 @@  static struct rte_event_timer_adapter *timdev;
 static struct rte_mempool *eventdev_test_mempool;
 static struct rte_ring *timer_producer_ring;
 static uint64_t global_bkt_tck_ns;
+static uint64_t global_info_bkt_tck_ns;
 static volatile uint8_t arm_done;
 
+#define CALC_TICKS(tks)					\
+	((tks * global_bkt_tck_ns) / global_info_bkt_tck_ns)
+
+
 static bool using_services;
 static uint32_t test_lcore1;
 static uint32_t test_lcore2;
@@ -80,7 +85,8 @@  eventdev_setup(void)
 
 	ret = rte_event_dev_info_get(evdev, &info);
 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
-	TEST_ASSERT(info.max_num_events >= (int32_t)MAX_TIMERS,
+	TEST_ASSERT(info.max_num_events < 0 ||
+			info.max_num_events >= (int32_t)MAX_TIMERS,
 			"ERROR max_num_events=%d < max_events=%d",
 			info.max_num_events, MAX_TIMERS);
 
@@ -276,12 +282,14 @@  test_port_conf_cb(uint16_t id, uint8_t event_dev_id, uint8_t *event_port_id,
 static int
 _timdev_setup(uint64_t max_tmo_ns, uint64_t bkt_tck_ns)
 {
+	struct rte_event_timer_adapter_info info;
 	struct rte_event_timer_adapter_conf config = {
 		.event_dev_id = evdev,
 		.timer_adapter_id = TEST_ADAPTER_ID,
 		.timer_tick_ns = bkt_tck_ns,
 		.max_tmo_ns = max_tmo_ns,
 		.nb_timers = MAX_TIMERS * 10,
+		.flags = RTE_EVENT_TIMER_ADAPTER_F_ADJUST_RES,
 	};
 	uint32_t caps = 0;
 	const char *pool_name = "timdev_test_pool";
@@ -317,6 +325,10 @@  _timdev_setup(uint64_t max_tmo_ns, uint64_t bkt_tck_ns)
 		return TEST_FAILED;
 	}
 
+	rte_event_timer_adapter_get_info(timdev, &info);
+
+	global_info_bkt_tck_ns = info.min_resolution_ns;
+
 	return TEST_SUCCESS;
 }
 
@@ -384,10 +396,11 @@  test_timer_state(void)
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
 	};
 
+
 	rte_mempool_get(eventdev_test_mempool, (void **)&ev_tim);
 	*ev_tim = tim;
 	ev_tim->ev.event_ptr = ev_tim;
-	ev_tim->timeout_ticks = 120;
+	ev_tim->timeout_ticks = CALC_TICKS(120);
 
 	TEST_ASSERT_EQUAL(rte_event_timer_arm_burst(timdev, &ev_tim, 1), 0,
 			"Armed timer exceeding max_timeout.");
@@ -396,7 +409,7 @@  test_timer_state(void)
 			RTE_EVENT_TIMER_ERROR_TOOLATE, ev_tim->state);
 
 	ev_tim->state = RTE_EVENT_TIMER_NOT_ARMED;
-	ev_tim->timeout_ticks = 10;
+	ev_tim->timeout_ticks = CALC_TICKS(10);
 
 	TEST_ASSERT_EQUAL(rte_event_timer_arm_burst(timdev, &ev_tim, 1), 1,
 			"Failed to arm timer with proper timeout.");
@@ -412,7 +425,7 @@  test_timer_state(void)
 			"Armed timer failed to trigger.");
 
 	ev_tim->state = RTE_EVENT_TIMER_NOT_ARMED;
-	ev_tim->timeout_ticks = 90;
+	ev_tim->timeout_ticks = CALC_TICKS(90);
 	TEST_ASSERT_EQUAL(rte_event_timer_arm_burst(timdev, &ev_tim, 1), 1,
 			"Failed to arm timer with proper timeout.");
 	TEST_ASSERT_EQUAL(rte_event_timer_cancel_burst(timdev, &ev_tim, 1),
@@ -438,7 +451,7 @@  _arm_timers(uint64_t timeout_tcks, uint64_t timers)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = timeout_tcks,
+		.timeout_ticks = CALC_TICKS(timeout_tcks),
 	};
 
 	for (i = 0; i < timers; i++) {
@@ -539,7 +552,7 @@  _arm_timers_burst(uint64_t timeout_tcks, uint64_t timers)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = timeout_tcks,
+		.timeout_ticks = CALC_TICKS(timeout_tcks),
 	};
 
 	for (i = 0; i < timers / MAX_BURST; i++) {
@@ -608,7 +621,7 @@  test_timer_cancel(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = 20,
+		.timeout_ticks = CALC_TICKS(20),
 	};
 
 	for (i = 0; i < MAX_TIMERS; i++) {
@@ -650,7 +663,7 @@  _cancel_producer(uint64_t timeout_tcks, uint64_t timers)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = timeout_tcks,
+		.timeout_ticks = CALC_TICKS(timeout_tcks),
 	};
 
 	for (i = 0; i < timers; i++) {
@@ -689,7 +702,7 @@  _cancel_producer_burst(uint64_t timeout_tcks, uint64_t timers)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = timeout_tcks,
+		.timeout_ticks = CALC_TICKS(timeout_tcks),
 	};
 	int arm_count = 0;
 
@@ -870,7 +883,7 @@  test_timer_cancel_random(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = 20,
+		.timeout_ticks = CALC_TICKS(20),
 	};
 
 	for (i = 0; i < MAX_TIMERS; i++) {
@@ -917,7 +930,7 @@  adapter_create(void)
 		.timer_tick_ns = NSECPERSEC / 10,
 		.max_tmo_ns = 180 * NSECPERSEC,
 		.nb_timers = MAX_TIMERS,
-		.flags = 0,
+		.flags = RTE_EVENT_TIMER_ADAPTER_F_ADJUST_RES,
 	};
 	uint32_t caps = 0;
 
@@ -1058,7 +1071,7 @@  stat_inc_reset_ev_enq(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = 5,	// expire in .5 sec
+		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
 	};
 
 	ret = rte_mempool_get_bulk(eventdev_test_mempool, (void **)evtims,
@@ -1151,7 +1164,7 @@  event_timer_arm(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = 5,	// expire in .5 sec
+		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
 	};
 
 	rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
@@ -1208,7 +1221,7 @@  event_timer_arm_double(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = 5,	// expire in .5 sec
+		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
 	};
 
 	rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
@@ -1267,7 +1280,7 @@  event_timer_arm_expiry(void)
 
 	/* Set up an event timer */
 	*evtim = init_tim;
-	evtim->timeout_ticks = 30,	// expire in 3 secs
+	evtim->timeout_ticks = CALC_TICKS(30),	// expire in 3 secs
 	evtim->ev.event_ptr = evtim;
 
 	ret = rte_event_timer_arm_burst(adapter, &evtim, 1);
@@ -1327,7 +1340,7 @@  event_timer_arm_rearm(void)
 
 	/* Set up a timer */
 	*evtim = init_tim;
-	evtim->timeout_ticks = 1;  // expire in 0.1 sec
+	evtim->timeout_ticks = CALC_TICKS(1);  // expire in 0.1 sec
 	evtim->ev.event_ptr = evtim;
 
 	/* Arm it */
@@ -1388,7 +1401,7 @@  event_timer_arm_max(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = 5,	// expire in .5 sec
+		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
 	};
 
 	ret = rte_mempool_get_bulk(eventdev_test_mempool, (void **)evtims,
@@ -1456,7 +1469,7 @@  event_timer_arm_invalid_sched_type(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = 5,	// expire in .5 sec
+		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
 	};
 
 	if (!using_services)
@@ -1498,7 +1511,7 @@  event_timer_arm_invalid_timeout(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = 5,	// expire in .5 sec
+		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
 	};
 
 	rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
@@ -1521,7 +1534,7 @@  event_timer_arm_invalid_timeout(void)
 
 	*evtim = init_tim;
 	evtim->ev.event_ptr = evtim;
-	evtim->timeout_ticks = 1801;  // timeout too big
+	evtim->timeout_ticks = CALC_TICKS(1801);  // timeout too big
 
 	ret = rte_event_timer_arm_burst(timdev, &evtim, 1);
 	TEST_ASSERT_EQUAL(ret, 0, "Expected to fail timer arm with invalid "
@@ -1569,7 +1582,7 @@  event_timer_cancel(void)
 	/* Set up a timer */
 	*evtim = init_tim;
 	evtim->ev.event_ptr = evtim;
-	evtim->timeout_ticks = 30;  // expire in 3 sec
+	evtim->timeout_ticks = CALC_TICKS(30);  // expire in 3 sec
 
 	/* Check that cancelling an inited but unarmed timer fails */
 	ret = rte_event_timer_cancel_burst(adapter, &evtim, 1);
@@ -1619,7 +1632,7 @@  event_timer_cancel_double(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = 5,	// expire in .5 sec
+		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
 	};
 
 	rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
@@ -1631,7 +1644,7 @@  event_timer_cancel_double(void)
 	/* Set up a timer */
 	*evtim = init_tim;
 	evtim->ev.event_ptr = evtim;
-	evtim->timeout_ticks = 30;  // expire in 3 sec
+	evtim->timeout_ticks = CALC_TICKS(30);  // expire in 3 sec
 
 	ret = rte_event_timer_arm_burst(adapter, &evtim, 1);
 	TEST_ASSERT_EQUAL(ret, 1, "Failed to arm event timer: %s\n",
@@ -1716,7 +1729,7 @@  adapter_create_max(void)
 		.timer_tick_ns = NSECPERSEC / 10,
 		.max_tmo_ns = 180 * NSECPERSEC,
 		.nb_timers = MAX_TIMERS,
-		.flags = 0,
+		.flags = RTE_EVENT_TIMER_ADAPTER_F_ADJUST_RES,
 	};
 
 	if (!using_services)