diff mbox

[v6] cunit: add queue test

Message ID 1415540473-52549-1-git-send-email-yan.songming@linaro.org
State New
Headers show

Commit Message

yan.songming Nov. 9, 2014, 1:41 p.m. UTC
From: "yan.songming" <yan.songming@linaro.org>

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

Signed-off-by: yan.songming <yan.songming@linaro.org>
---
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 | 160 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 165 insertions(+), 3 deletions(-)
 create mode 100644 test/cunit/odp_queue_test.c

Comments

Bill Fischofer Nov. 9, 2014, 2:19 p.m. UTC | #1
odp_buffer_pool_create() is changing.  Applications no longer allocate
memory for buffer pools.  Instead applications specify pool parameters via
the odp_buffer_pool_param_t structure.  See the ODP Buffer Design doc for
details.

Patches to make these changes effective should be integrating this week as
part of upleveling the APIs to ODP v1.0, so all applications/tests/other
programs that make use of this API will need to change to the simpler model.

Whether your hold patches until this change has been integrated or plan to
issue update patches to reflect these changes is up to you, but be aware of
this upcoming change.

Bill

On Sun, Nov 9, 2014 at 7:41 AM, Yan Songming <yan.songming@linaro.org>
wrote:

> From: "yan.songming" <yan.songming@linaro.org>
>
> Add the cunit test for none syne queue. Test the base queue function
>
> Signed-off-by: yan.songming <yan.songming@linaro.org>
> ---
> 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 | 160
> ++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 165 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
> --- a/test/cunit/Makefile.am
> +++ b/test/cunit/Makefile.am
> @@ -1,13 +1,15 @@
>  include $(top_srcdir)/test/Makefile.inc
>
>  AM_CFLAGS += -I$(CUNIT_PATH)/include
> -AM_LDFLAGS += -L$(CUNIT_PATH)/lib
> +AM_LDFLAGS += -L$(CUNIT_PATH)/lib -static -lcunit
>
>  if ODP_CUNIT_ENABLED
>  TESTS = ${bin_PROGRAMS}
>  check_PROGRAMS = ${bin_PROGRAMS}
> -bin_PROGRAMS = odp_init
> -odp_init_LDFLAGS = $(AM_LDFLAGS) -static -lcunit
> +bin_PROGRAMS = odp_init odp_queue
> +odp_init_LDFLAGS = $(AM_LDFLAGS)
> +odp_queue_LDFLAGS = $(AM_LDFLAGS)
>  endif
>
>  dist_odp_init_SOURCES = odp_init_test.c
> +dist_odp_queue_SOURCES = odp_queue_test.c
> diff --git a/test/cunit/odp_queue_test.c b/test/cunit/odp_queue_test.c
> new file mode 100644
> index 0000000..5040f13
> --- /dev/null
> +++ b/test/cunit/odp_queue_test.c
> @@ -0,0 +1,160 @@
> +/* 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)
> +#define CONFIG_MAX_ITERATION    (100)
> +
> +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;
> +       odp_buffer_t *pbuf_tmp;
> +       int i;
> +       int nr_deq_entries = 0;
> +       int max_iteration = CONFIG_MAX_ITERATION;
> +       int deq_ret;
> +       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));
> +
> +       queue_id = odp_queue_lookup("test_queue");
> +       CU_ASSERT_EQUAL(queue_creat_id, queue_id);
> +
> +       CU_ASSERT(0 == odp_queue_set_context(queue_id, &queue_contest));
> +
> +       prtn = odp_queue_get_context(queue_id);
> +       CU_ASSERT(&queue_contest == (int *)prtn);
> +
> +       msg_pool = odp_buffer_pool_lookup("msg_pool");
> +       buf = odp_buffer_alloc(msg_pool);
> +
> +       odp_queue_enq(queue_id, buf);
> +       CU_ASSERT_EQUAL(buf, odp_queue_deq(queue_id));
> +       odp_buffer_free(buf);
> +
> +       for (i = 0; i < MAX_BUFFER_QUEUE; i++)
> +               enbuf[i] = odp_buffer_alloc(msg_pool);
> +
> +       /*
> +        * odp_queue_enq_multi may return 0..n buffers due to the resource
> +        * constraints in the implementation at that given point of time.
> +        */
> +       odp_queue_enq_multi(queue_id, enbuf, MAX_BUFFER_QUEUE);
> +       pbuf_tmp = debuf;
> +       do {
> +               deq_ret  = odp_queue_deq_multi(queue_id, pbuf_tmp,
> +                                              MAX_BUFFER_QUEUE);
> +               nr_deq_entries += deq_ret;
> +               max_iteration--;
> +               pbuf_tmp += deq_ret;
> +               CU_ASSERT(max_iteration >= 0);
> +       } while (nr_deq_entries < MAX_BUFFER_QUEUE);
> +
> +       for (i = 0; i < MAX_BUFFER_QUEUE; i++) {
> +               CU_ASSERT_EQUAL(enbuf[i], debuf[i]);
> +               odp_buffer_free(enbuf[i]);
> +       }
> +
> +       return;
> +}
> +
> +static int init(void)
> +{
> +       if (0 != odp_init_global(NULL, NULL)) {
> +               printf("odp_init_global fail.\n");
> +               return -1;
> +       }
> +       if (0 != odp_init_local()) {
> +               printf("odp_init_local fail.\n");
> +               return -1;
> +       }
> +       if (0 != test_odp_buffer_pool_init()) {
> +               printf("test_odp_buffer_pool_init fail.\n");
> +               return -1;
> +       }
> +       return 0;
> +}
> +
> +static int finalize(void)
> +{
> +       odp_term_local();
> +       odp_term_global();
> +       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();
> +
> +       /* add the tests to the queue suite */
> +       ptr_suite = CU_add_suite("odp queue", init, finalize);
> +       if (NULL == ptr_suite) {
> +               CU_cleanup_registry();
> +               return CU_get_error();
> +       }
> +
> +       if (NULL == CU_ADD_TEST(ptr_suite, test_odp_queue_base)) {
> +               CU_cleanup_registry();
> +               return CU_get_error();
> +       }
> +
> +       /* 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();
> +}
> --
> 1.8.3.1
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
>
Mike Holmes Nov. 10, 2014, 9:22 p.m. UTC | #2
On 9 November 2014 08:41, Yan Songming <yan.songming@linaro.org> wrote:

> From: "yan.songming" <yan.songming@linaro.org>
>
> Add the cunit test for none syne queue. Test the base queue function
>
> Signed-off-by: yan.songming <yan.songming@linaro.org>
> ---
> 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 | 160
> ++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 165 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
> --- a/test/cunit/Makefile.am
> +++ b/test/cunit/Makefile.am
> @@ -1,13 +1,15 @@
>  include $(top_srcdir)/test/Makefile.inc
>
>  AM_CFLAGS += -I$(CUNIT_PATH)/include
> -AM_LDFLAGS += -L$(CUNIT_PATH)/lib
> +AM_LDFLAGS += -L$(CUNIT_PATH)/lib -static -lcunit
>
>  if ODP_CUNIT_ENABLED
>  TESTS = ${bin_PROGRAMS}
>  check_PROGRAMS = ${bin_PROGRAMS}
> -bin_PROGRAMS = odp_init
> -odp_init_LDFLAGS = $(AM_LDFLAGS) -static -lcunit
> +bin_PROGRAMS = odp_init odp_queue
> +odp_init_LDFLAGS = $(AM_LDFLAGS)
> +odp_queue_LDFLAGS = $(AM_LDFLAGS)
>  endif
>
>  dist_odp_init_SOURCES = odp_init_test.c
> +dist_odp_queue_SOURCES = odp_queue_test.c
> diff --git a/test/cunit/odp_queue_test.c b/test/cunit/odp_queue_test.c
> new file mode 100644
> index 0000000..5040f13
> --- /dev/null
> +++ b/test/cunit/odp_queue_test.c
> @@ -0,0 +1,160 @@
> +/* 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)
> +#define CONFIG_MAX_ITERATION    (100)
> +
> +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;
> +       odp_buffer_t *pbuf_tmp;
> +       int i;
> +       int nr_deq_entries = 0;
> +       int max_iteration = CONFIG_MAX_ITERATION;
> +       int deq_ret;
> +       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));
> +
> +       queue_id = odp_queue_lookup("test_queue");
> +       CU_ASSERT_EQUAL(queue_creat_id, queue_id);
> +
> +       CU_ASSERT(0 == odp_queue_set_context(queue_id, &queue_contest));
> +
> +       prtn = odp_queue_get_context(queue_id);
> +       CU_ASSERT(&queue_contest == (int *)prtn);
> +
> +       msg_pool = odp_buffer_pool_lookup("msg_pool");
> +       buf = odp_buffer_alloc(msg_pool);
> +
> +       odp_queue_enq(queue_id, buf);
> +       CU_ASSERT_EQUAL(buf, odp_queue_deq(queue_id));
> +       odp_buffer_free(buf);
> +
> +       for (i = 0; i < MAX_BUFFER_QUEUE; i++)
> +               enbuf[i] = odp_buffer_alloc(msg_pool);
> +
> +       /*
> +        * odp_queue_enq_multi may return 0..n buffers due to the resource
> +        * constraints in the implementation at that given point of time.
> +        */
> +       odp_queue_enq_multi(queue_id, enbuf, MAX_BUFFER_QUEUE);
> +       pbuf_tmp = debuf;
> +       do {
> +               deq_ret  = odp_queue_deq_multi(queue_id, pbuf_tmp,
> +                                              MAX_BUFFER_QUEUE);
> +               nr_deq_entries += deq_ret;
> +               max_iteration--;
> +               pbuf_tmp += deq_ret;
> +               CU_ASSERT(max_iteration >= 0);
> +       } while (nr_deq_entries < MAX_BUFFER_QUEUE);
> +
> +       for (i = 0; i < MAX_BUFFER_QUEUE; i++) {
> +               CU_ASSERT_EQUAL(enbuf[i], debuf[i]);
> +               odp_buffer_free(enbuf[i]);
> +       }
> +
> +       return;
> +}
> +
> +static int init(void)
> +{
> +       if (0 != odp_init_global(NULL, NULL)) {
> +               printf("odp_init_global fail.\n");
> +               return -1;
> +       }
> +       if (0 != odp_init_local()) {
> +               printf("odp_init_local fail.\n");
> +               return -1;
> +       }
> +       if (0 != test_odp_buffer_pool_init()) {
> +               printf("test_odp_buffer_pool_init fail.\n");
> +               return -1;
> +       }
> +       return 0;
> +}
> +
> +static int finalize(void)
> +{
> +       odp_term_local();
> +       odp_term_global();
> +       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();
> +
> +       /* add the tests to the queue suite */
> +       ptr_suite = CU_add_suite("odp queue", init, finalize);

+       if (NULL == ptr_suite) {
> +               CU_cleanup_registry();
> +               return CU_get_error();
> +       }
> +
> +       if (NULL == CU_ADD_TEST(ptr_suite, test_odp_queue_base)) {
>

"test_odp_queue_base"  is not very descriptive as a name for this test case
 "test_odp_queue_sunnyday" is a better name
if you change that I would add Reviewed-by


> +               CU_cleanup_registry();
> +               return CU_get_error();
> +       }
> +
> +       /* 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();
> +}
> --
> 1.8.3.1
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
>
diff mbox

Patch

diff --git a/test/cunit/Makefile.am b/test/cunit/Makefile.am
index 927a5a5..74a0deb 100644
--- a/test/cunit/Makefile.am
+++ b/test/cunit/Makefile.am
@@ -1,13 +1,15 @@ 
 include $(top_srcdir)/test/Makefile.inc
 
 AM_CFLAGS += -I$(CUNIT_PATH)/include
-AM_LDFLAGS += -L$(CUNIT_PATH)/lib
+AM_LDFLAGS += -L$(CUNIT_PATH)/lib -static -lcunit
 
 if ODP_CUNIT_ENABLED
 TESTS = ${bin_PROGRAMS}
 check_PROGRAMS = ${bin_PROGRAMS}
-bin_PROGRAMS = odp_init
-odp_init_LDFLAGS = $(AM_LDFLAGS) -static -lcunit
+bin_PROGRAMS = odp_init odp_queue
+odp_init_LDFLAGS = $(AM_LDFLAGS)
+odp_queue_LDFLAGS = $(AM_LDFLAGS)
 endif
 
 dist_odp_init_SOURCES = odp_init_test.c
+dist_odp_queue_SOURCES = odp_queue_test.c
diff --git a/test/cunit/odp_queue_test.c b/test/cunit/odp_queue_test.c
new file mode 100644
index 0000000..5040f13
--- /dev/null
+++ b/test/cunit/odp_queue_test.c
@@ -0,0 +1,160 @@ 
+/* 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)
+#define CONFIG_MAX_ITERATION    (100)
+
+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;
+	odp_buffer_t *pbuf_tmp;
+	int i;
+	int nr_deq_entries = 0;
+	int max_iteration = CONFIG_MAX_ITERATION;
+	int deq_ret;
+	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));
+
+	queue_id = odp_queue_lookup("test_queue");
+	CU_ASSERT_EQUAL(queue_creat_id, queue_id);
+
+	CU_ASSERT(0 == odp_queue_set_context(queue_id, &queue_contest));
+
+	prtn = odp_queue_get_context(queue_id);
+	CU_ASSERT(&queue_contest == (int *)prtn);
+
+	msg_pool = odp_buffer_pool_lookup("msg_pool");
+	buf = odp_buffer_alloc(msg_pool);
+
+	odp_queue_enq(queue_id, buf);
+	CU_ASSERT_EQUAL(buf, odp_queue_deq(queue_id));
+	odp_buffer_free(buf);
+
+	for (i = 0; i < MAX_BUFFER_QUEUE; i++)
+		enbuf[i] = odp_buffer_alloc(msg_pool);
+
+	/*
+	 * odp_queue_enq_multi may return 0..n buffers due to the resource
+	 * constraints in the implementation at that given point of time.
+	 */
+	odp_queue_enq_multi(queue_id, enbuf, MAX_BUFFER_QUEUE);
+	pbuf_tmp = debuf;
+	do {
+		deq_ret  = odp_queue_deq_multi(queue_id, pbuf_tmp,
+					       MAX_BUFFER_QUEUE);
+		nr_deq_entries += deq_ret;
+		max_iteration--;
+		pbuf_tmp += deq_ret;
+		CU_ASSERT(max_iteration >= 0);
+	} while (nr_deq_entries < MAX_BUFFER_QUEUE);
+
+	for (i = 0; i < MAX_BUFFER_QUEUE; i++) {
+		CU_ASSERT_EQUAL(enbuf[i], debuf[i]);
+		odp_buffer_free(enbuf[i]);
+	}
+
+	return;
+}
+
+static int init(void)
+{
+	if (0 != odp_init_global(NULL, NULL)) {
+		printf("odp_init_global fail.\n");
+		return -1;
+	}
+	if (0 != odp_init_local()) {
+		printf("odp_init_local fail.\n");
+		return -1;
+	}
+	if (0 != test_odp_buffer_pool_init()) {
+		printf("test_odp_buffer_pool_init fail.\n");
+		return -1;
+	}
+	return 0;
+}
+
+static int finalize(void)
+{
+	odp_term_local();
+	odp_term_global();
+	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();
+
+	/* add the tests to the queue suite */
+	ptr_suite = CU_add_suite("odp queue", init, finalize);
+	if (NULL == ptr_suite) {
+		CU_cleanup_registry();
+		return CU_get_error();
+	}
+
+	if (NULL == CU_ADD_TEST(ptr_suite, test_odp_queue_base)) {
+		CU_cleanup_registry();
+		return CU_get_error();
+	}
+
+	/* 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();
+}