Please add 'cunit:' or 'test: cunit:' prefix to the subject.

On 11/06/2014 05:08 PM, Yan Songming wrote:
From: "yan.songming" <[email protected]>

Add the cunit test for none syne queue. Test the base queue function

Signed-off-by: yan.songming <[email protected]>
---
Fix spelling problem and commend problem. Add term_local and term_global.
Move cunit queue test to test_odp_queue_base for none syn queue.
---
  test/cunit/Makefile.am      |   8 ++-
  test/cunit/odp_queue_test.c | 158 ++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 163 insertions(+), 3 deletions(-)
  create mode 100644 test/cunit/odp_queue_test.c

diff --git a/test/cunit/Makefile.am b/test/cunit/Makefile.am
index 927a5a5..74a0deb 100644

diff --git a/test/cunit/odp_queue_test.c b/test/cunit/odp_queue_test.c
new file mode 100644
index 0000000..63e5d56
--- /dev/null
+++ b/test/cunit/odp_queue_test.c
@@ -0,0 +1,158 @@
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+
+#include "odp.h"
+#include "CUnit/Basic.h"
+
+#define MAX_BUFFER_QUEUE        (8)
+#define MSG_POOL_SIZE           (4*1024*1024)
+
+static int queue_contest = 0xff;
+
+static int test_odp_buffer_pool_init(void)
+{
+       odp_buffer_pool_t pool;
+       void *pool_base;
+       odp_shm_t shm;
+
+       shm = odp_shm_reserve("msg_pool",
+                             MSG_POOL_SIZE, ODP_CACHE_LINE_SIZE, 0);
+
+       pool_base = odp_shm_addr(shm);
+
+       if (NULL == pool_base) {
+               printf("Shared memory reserve failed.\n");
+               return -1;
+       }
+
+       pool = odp_buffer_pool_create("msg_pool", pool_base, MSG_POOL_SIZE, 0,
+                                     ODP_CACHE_LINE_SIZE, ODP_BUFFER_TYPE_RAW);
+
+       if (ODP_BUFFER_POOL_INVALID == pool) {
+               printf("Pool create failed.\n");
+               return -1;
+       }
+       return 0;
+}
+
+static void test_odp_queue_base(void)
+{
+       odp_queue_t queue_creat_id;
+       odp_queue_t queue_id;
+       odp_buffer_t enbuf[MAX_BUFFER_QUEUE];
+       odp_buffer_t debuf[MAX_BUFFER_QUEUE];
+       odp_buffer_pool_t msg_pool;
+       odp_queue_param_t param;
+
+       int i;
+       odp_buffer_t buf;
+       void *prtn = NULL;
+
+       memset(&param, 0, sizeof(param));
+       param.sched.sync  = ODP_SCHED_SYNC_NONE;
+
+       queue_creat_id = odp_queue_create("test_queue",
+                                         ODP_QUEUE_TYPE_POLL, &param);
+       CU_ASSERT(ODP_QUEUE_INVALID != queue_creat_id);
+
+       CU_ASSERT_EQUAL(ODP_QUEUE_TYPE_POLL,
+                       odp_queue_type(queue_creat_id));
+       CU_ASSERT_EQUAL(ODP_SCHED_SYNC_NONE,
+                       odp_queue_sched_type(queue_creat_id));
+
+       /* test odp_queue_lookup */
+       queue_id = odp_queue_lookup("test_queue");
+       CU_ASSERT_EQUAL(queue_creat_id, queue_id);
+
+       /* test odp_queue_set_context */
+       CU_ASSERT(0 == odp_queue_set_context(queue_id, &queue_contest));
+
+       /* test odp_queue_get_context*/
+       prtn = odp_queue_get_context(queue_id);
+       CU_ASSERT(&queue_contest == (int *)prtn);
+
+       /* apply for buffer */
+       msg_pool = odp_buffer_pool_lookup("msg_pool");
+       buf = odp_buffer_alloc(msg_pool);
+
+       /* test odp_queue_deq and odp_queue_deq */
+       odp_queue_enq(queue_id, buf);
+       CU_ASSERT_EQUAL(buf, odp_queue_deq(queue_id));
+       odp_buffer_free(buf);
+
+       /* apply for mutili buffer */
+       for (i = 0; i < MAX_BUFFER_QUEUE; i++)
+               enbuf[i] = odp_buffer_alloc(msg_pool);
+
+       /* test odp_queue_enq_multi and odp_queue_enq_multi */
+       odp_queue_enq_multi(queue_id, enbuf, MAX_BUFFER_QUEUE);
+       CU_ASSERT_EQUAL(MAX_BUFFER_QUEUE,
+                       odp_queue_deq_multi(queue_id, debuf, MAX_BUFFER_QUEUE));
+
+       for (i = 0; i < MAX_BUFFER_QUEUE; i++) {
+               /* test odp_queue_deq_multi */
+               CU_ASSERT_EQUAL(enbuf[i], debuf[i]);
+               odp_buffer_free(enbuf[i]);
+       }
+       return;
+}
+
+static void test_odp_queue(void)
+{
+       int status;
+       status = odp_init_global(NULL, NULL);
+       CU_ASSERT_FATAL(0 == status);
+
+       CU_ASSERT(0 == odp_init_local())
+
+       CU_ASSERT_FATAL(0 == test_odp_buffer_pool_init());

The code above should be a part of testsuite init function.

+
+       test_odp_queue_base();

The code below should be a part of testsuite finalize function.

+
+       status = odp_term_local();
+       CU_ASSERT(0 == status);
+
+       status = odp_term_global();
+       CU_ASSERT(0 == status);
+       return;
+}
+
+static int init(void)
+{
+       printf("\tODP version: %s\n", odp_version_api_str());
+       return 0;
+}
+
+static int finalize(void)
+{
+       return 0;
+}
+
+int main(void)
+{
+       CU_pSuite ptr_suite = NULL;
+       /* initialize the CUnit test registry */
+       if (CUE_SUCCESS != CU_initialize_registry())
+               return CU_get_error();
+
+       ptr_suite = CU_add_suite("odp queue", init, finalize);
+       if (NULL == ptr_suite) {
+               CU_cleanup_registry();
+               return CU_get_error();
+       }
+
+       /* add the tests to the queue suite */
+       if (NULL == CU_ADD_TEST(ptr_suite, test_odp_queue)) {
+               CU_cleanup_registry();
+               return CU_get_error();
+       }

Currently there is only one test case, but more will be added soon.
Maybe it is better to use CU_register_suites() API from the beginning?

http://cunit.sourceforge.net/doc/managing_tests.html#regsuites

+
+       /* Run all tests using the CUnit Basic interface */
+       CU_basic_set_mode(CU_BRM_VERBOSE);
+       CU_basic_run_tests();
+       CU_cleanup_registry();
+       return CU_get_error();
+}



_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to