diff mbox

[API-NEXT,3/3] validation: queue: api validation tests for odp_queue_info()

Message ID 1447055757-8654-4-git-send-email-carl.wallen@nokia.com
State Accepted
Commit 8a6923ee1f3bc5449e1d171f77fbfae76e32a124
Headers show

Commit Message

Wallen, Carl (Nokia - FI/Espoo) Nov. 9, 2015, 7:55 a.m. UTC
Verify the functionality of the queue api function odp_queue_info() for
different queue types.

Signed-off-by: Carl Wallen <carl.wallen@nokia.com>
---
 test/validation/queue/queue.c | 57 +++++++++++++++++++++++++++++++++++++++++++
 test/validation/queue/queue.h |  1 +
 2 files changed, 58 insertions(+)

--
2.1.4
diff mbox

Patch

diff --git a/test/validation/queue/queue.c b/test/validation/queue/queue.c
index 98da2ec..3b522c9 100644
--- a/test/validation/queue/queue.c
+++ b/test/validation/queue/queue.c
@@ -125,8 +125,65 @@  void queue_test_sunnydays(void)
	CU_ASSERT(odp_queue_destroy(queue_id) == 0);
 }

+void queue_test_info(void)
+{
+	odp_queue_t q_poll, q_order;
+	const char *const nq_poll = "test_q_poll";
+	const char *const nq_order = "test_q_order";
+	odp_queue_info_t info;
+	odp_queue_param_t param;
+	char q_poll_ctx[] = "test_q_poll context data";
+	char q_order_ctx[] = "test_q_order context data";
+	unsigned lock_count;
+	char *ctx;
+	int ret;
+
+	/* Create a polled queue and set context */
+	q_poll = odp_queue_create(nq_poll, ODP_QUEUE_TYPE_POLL, NULL);
+	CU_ASSERT(ODP_QUEUE_INVALID != q_poll);
+	CU_ASSERT(odp_queue_context_set(q_poll, q_poll_ctx) == 0);
+
+	/* Create a scheduled ordered queue with explicitly set params */
+	odp_queue_param_init(&param);
+	param.sched.prio = ODP_SCHED_PRIO_NORMAL;
+	param.sched.sync = ODP_SCHED_SYNC_ORDERED;
+	param.sched.group = ODP_SCHED_GROUP_ALL;
+	param.sched.lock_count = 1;
+	param.context = q_order_ctx;
+	q_order = odp_queue_create(nq_order, ODP_QUEUE_TYPE_SCHED, &param);
+	CU_ASSERT(ODP_QUEUE_INVALID != q_order);
+
+	/* Check info for the polled queue */
+	CU_ASSERT(odp_queue_info(q_poll, &info) == 0);
+	CU_ASSERT(strcmp(nq_poll, info.name) == 0);
+	CU_ASSERT(info.type == ODP_QUEUE_TYPE_POLL);
+	CU_ASSERT(info.type == odp_queue_type(q_poll));
+	ctx = info.param.context; /* 'char' context ptr */
+	CU_ASSERT(ctx == q_poll_ctx);
+	CU_ASSERT(info.param.context == odp_queue_context(q_poll));
+
+	/* Check info for the scheduled ordered queue */
+	CU_ASSERT(odp_queue_info(q_order, &info) == 0);
+	CU_ASSERT(strcmp(nq_order, info.name) == 0);
+	CU_ASSERT(info.type == ODP_QUEUE_TYPE_SCHED);
+	CU_ASSERT(info.type == odp_queue_type(q_order));
+	ctx = info.param.context; /* 'char' context ptr */
+	CU_ASSERT(ctx == q_order_ctx);
+	CU_ASSERT(info.param.context == odp_queue_context(q_order));
+	CU_ASSERT(info.param.sched.prio == odp_queue_sched_prio(q_order));
+	CU_ASSERT(info.param.sched.sync == odp_queue_sched_type(q_order));
+	CU_ASSERT(info.param.sched.group == odp_queue_sched_group(q_order));
+	CU_ASSERT(ret = odp_queue_lock_count(q_order) >= 0);
+	lock_count = (unsigned) ret;
+	CU_ASSERT(info.param.sched.lock_count == lock_count);
+
+	CU_ASSERT(odp_queue_destroy(q_poll) == 0);
+	CU_ASSERT(odp_queue_destroy(q_order) == 0);
+}
+
 odp_testinfo_t queue_suite[] = {
	ODP_TEST_INFO(queue_test_sunnydays),
+	ODP_TEST_INFO(queue_test_info),
	ODP_TEST_INFO_NULL,
 };

diff --git a/test/validation/queue/queue.h b/test/validation/queue/queue.h
index 5de7b2c..813fe1e 100644
--- a/test/validation/queue/queue.h
+++ b/test/validation/queue/queue.h
@@ -11,6 +11,7 @@ 

 /* test functions: */
 void queue_test_sunnydays(void);
+void queue_test_info(void);

 /* test arrays: */
 extern odp_testinfo_t queue_suite[];