The test creates one queue of each schedule sync type and destroys those. Signed-off-by: Petri Savolainen <petri.savolai...@nokia.com> --- test/validation/odp_schedule.c | 64 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+)
diff --git a/test/validation/odp_schedule.c b/test/validation/odp_schedule.c index efc7c8b..0f659b8 100644 --- a/test/validation/odp_schedule.c +++ b/test/validation/odp_schedule.c @@ -33,6 +33,7 @@ #define DISABLE_EXCL_ATOMIC 0 #define ENABLE_EXCL_ATOMIC 1 +#define MAGIC 0xdeadbeef /* Test global variables */ typedef struct { @@ -80,6 +81,68 @@ static void test_schedule_num_prio(void) CU_ASSERT(prio == odp_schedule_num_prio()); } +static void test_schedule_queue_destroy(void) +{ + odp_pool_t p; + odp_pool_param_t params; + odp_queue_param_t qp; + odp_queue_t queue, from; + odp_buffer_t buf; + odp_event_t ev; + uint32_t *u32; + int i; + odp_schedule_sync_t sync[] = {ODP_SCHED_SYNC_NONE, + ODP_SCHED_SYNC_ATOMIC, + ODP_SCHED_SYNC_ORDERED}; + + params.buf.size = 100; + params.buf.align = 0; + params.buf.num = 1; + params.type = ODP_POOL_BUFFER; + + p = odp_pool_create("sched_destroy_pool", ODP_SHM_NULL, ¶ms); + + CU_ASSERT_FATAL(p != ODP_POOL_INVALID); + + for (i = 0; i < 3; i++) { + qp.sched.prio = ODP_SCHED_PRIO_DEFAULT; + qp.sched.group = ODP_SCHED_GROUP_DEFAULT; + qp.sched.sync = sync[i]; + + queue = odp_queue_create("sched_destroy_queue", + ODP_QUEUE_TYPE_SCHED, &qp); + + CU_ASSERT_FATAL(queue != ODP_QUEUE_INVALID); + + buf = odp_buffer_alloc(p); + + CU_ASSERT_FATAL(buf != ODP_BUFFER_INVALID); + + u32 = odp_buffer_addr(buf); + u32[0] = MAGIC; + + ev = odp_buffer_to_event(buf); + CU_ASSERT(odp_queue_enq(queue, ev) == 0); + + ev = odp_schedule(&from, ODP_SCHED_WAIT); + + CU_ASSERT_FATAL(ev != ODP_EVENT_INVALID); + + CU_ASSERT_FATAL(from == queue); + + buf = odp_buffer_from_event(ev); + u32 = odp_buffer_addr(buf); + + CU_ASSERT_FATAL(u32[0] == MAGIC); + + odp_buffer_free(buf); + + CU_ASSERT_FATAL(odp_queue_destroy(queue) == 0); + } + + CU_ASSERT_FATAL(odp_pool_destroy(p) == 0); +} + static void *schedule_common_(void *arg) { thread_args_t *args = (thread_args_t *)arg; @@ -683,6 +746,7 @@ static int schd_suite_term(void) struct CU_TestInfo schd_tests[] = { {"schedule_wait_time", test_schedule_wait_time}, {"schedule_num_prio", test_schedule_num_prio}, + {"schedule_queue_destroy", test_schedule_queue_destroy}, {"schedule_1q_1t_n", test_schedule_1q_1t_n}, {"schedule_1q_1t_a", test_schedule_1q_1t_a}, {"schedule_1q_1t_o", test_schedule_1q_1t_o}, -- 2.3.4 _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org http://lists.linaro.org/mailman/listinfo/lng-odp