aboutsummaryrefslogtreecommitdiff
path: root/test/validation/api/queue
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@linaro.org>2018-06-15 13:22:01 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2018-06-19 15:48:32 +0300
commit53f3baf58256c085fa230992eb03c896276fc874 (patch)
tree7799820e9cd649015f90e0e6557c0ac3be78dd41 /test/validation/api/queue
parent7266ca2e44705e550ba7c8c1a71fa373eabd7b99 (diff)
validation: queue: test enq/deq mode combinations
Changed the single thread, lock-free queue test to generic single thread burst enq/deq test. Test all combination enq/deq mode combination with blocking and lock-free queues. Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'test/validation/api/queue')
-rw-r--r--test/validation/api/queue/queue.c75
1 files changed, 66 insertions, 9 deletions
diff --git a/test/validation/api/queue/queue.c b/test/validation/api/queue/queue.c
index 304de0211..20408da5a 100644
--- a/test/validation/api/queue/queue.c
+++ b/test/validation/api/queue/queue.c
@@ -224,7 +224,9 @@ static odp_event_t dequeue_event(odp_queue_t queue)
return ev;
}
-static void queue_test_lockfree(void)
+static void test_burst(odp_nonblocking_t nonblocking,
+ odp_queue_op_mode_t enq_mode,
+ odp_queue_op_mode_t deq_mode)
{
odp_queue_param_t param;
odp_queue_t queue;
@@ -237,12 +239,16 @@ static void queue_test_lockfree(void)
CU_ASSERT_FATAL(odp_queue_capability(&capa) == 0);
- if (capa.plain.lockfree.max_num == 0) {
- printf(" NO LOCKFREE QUEUES. Test skipped.\n");
- return;
- }
+ max_burst = capa.plain.max_size;
+
+ if (nonblocking == ODP_NONBLOCKING_LF) {
+ if (capa.plain.lockfree.max_num == 0) {
+ printf(" NO LOCKFREE QUEUES. Test skipped.\n");
+ return;
+ }
- max_burst = capa.plain.lockfree.max_size;
+ max_burst = capa.plain.lockfree.max_size;
+ }
if (max_burst == 0 || max_burst > MAX_NUM_EVENT)
max_burst = MAX_NUM_EVENT;
@@ -252,10 +258,12 @@ static void queue_test_lockfree(void)
odp_queue_param_init(&param);
param.type = ODP_QUEUE_TYPE_PLAIN;
- param.nonblocking = ODP_NONBLOCKING_LF;
+ param.nonblocking = nonblocking;
param.size = max_burst;
+ param.enq_mode = enq_mode;
+ param.deq_mode = deq_mode;
- queue = odp_queue_create("lockfree_queue", &param);
+ queue = odp_queue_create("burst test", &param);
CU_ASSERT_FATAL(queue != ODP_QUEUE_INVALID);
CU_ASSERT(odp_queue_deq(queue) == ODP_EVENT_INVALID);
@@ -299,6 +307,48 @@ static void queue_test_lockfree(void)
CU_ASSERT(odp_queue_destroy(queue) == 0);
}
+static void queue_test_burst(void)
+{
+ test_burst(ODP_BLOCKING, ODP_QUEUE_OP_MT, ODP_QUEUE_OP_MT);
+}
+
+static void queue_test_burst_spmc(void)
+{
+ test_burst(ODP_BLOCKING, ODP_QUEUE_OP_MT_UNSAFE, ODP_QUEUE_OP_MT);
+}
+
+static void queue_test_burst_mpsc(void)
+{
+ test_burst(ODP_BLOCKING, ODP_QUEUE_OP_MT, ODP_QUEUE_OP_MT_UNSAFE);
+}
+
+static void queue_test_burst_spsc(void)
+{
+ test_burst(ODP_BLOCKING, ODP_QUEUE_OP_MT_UNSAFE,
+ ODP_QUEUE_OP_MT_UNSAFE);
+}
+
+static void queue_test_burst_lf(void)
+{
+ test_burst(ODP_NONBLOCKING_LF, ODP_QUEUE_OP_MT, ODP_QUEUE_OP_MT);
+}
+
+static void queue_test_burst_lf_spmc(void)
+{
+ test_burst(ODP_NONBLOCKING_LF, ODP_QUEUE_OP_MT_UNSAFE, ODP_QUEUE_OP_MT);
+}
+
+static void queue_test_burst_lf_mpsc(void)
+{
+ test_burst(ODP_NONBLOCKING_LF, ODP_QUEUE_OP_MT, ODP_QUEUE_OP_MT_UNSAFE);
+}
+
+static void queue_test_burst_lf_spsc(void)
+{
+ test_burst(ODP_NONBLOCKING_LF, ODP_QUEUE_OP_MT_UNSAFE,
+ ODP_QUEUE_OP_MT_UNSAFE);
+}
+
static void queue_test_param(void)
{
odp_queue_t queue, null_queue;
@@ -669,7 +719,14 @@ static void queue_test_mt_plain_nonblock_lf(void)
odp_testinfo_t queue_suite[] = {
ODP_TEST_INFO(queue_test_capa),
ODP_TEST_INFO(queue_test_mode),
- ODP_TEST_INFO(queue_test_lockfree),
+ ODP_TEST_INFO(queue_test_burst),
+ ODP_TEST_INFO(queue_test_burst_spmc),
+ ODP_TEST_INFO(queue_test_burst_mpsc),
+ ODP_TEST_INFO(queue_test_burst_spsc),
+ ODP_TEST_INFO(queue_test_burst_lf),
+ ODP_TEST_INFO(queue_test_burst_lf_spmc),
+ ODP_TEST_INFO(queue_test_burst_lf_mpsc),
+ ODP_TEST_INFO(queue_test_burst_lf_spsc),
ODP_TEST_INFO(queue_test_param),
ODP_TEST_INFO(queue_test_info),
ODP_TEST_INFO(queue_test_mt_plain_block),