diff mbox

[PATCHv4,04/11] cunit: pktio: mtu and promisc mode

Message ID 1417450537-7640-5-git-send-email-maxim.uvarov@linaro.org
State New
Headers show

Commit Message

Maxim Uvarov Dec. 1, 2014, 4:15 p.m. UTC
Add basic check for mtu and promisc modes.

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
---
 test/validation/Makefile.am |   4 +-
 test/validation/odp_pktio.c | 164 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 167 insertions(+), 1 deletion(-)
 create mode 100644 test/validation/odp_pktio.c

Comments

Anders Roxell Dec. 1, 2014, 7:20 p.m. UTC | #1
On 2014-12-01 19:15, Maxim Uvarov wrote:
> Add basic check for mtu and promisc modes.
> 
> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
> ---
>  test/validation/Makefile.am |   4 +-
>  test/validation/odp_pktio.c | 164 ++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 167 insertions(+), 1 deletion(-)
>  create mode 100644 test/validation/odp_pktio.c
> 
> diff --git a/test/validation/Makefile.am b/test/validation/Makefile.am
> index 0b831d0..91adc7e 100644
> --- a/test/validation/Makefile.am
> +++ b/test/validation/Makefile.am
> @@ -6,11 +6,12 @@ AM_LDFLAGS += -L$(CUNIT_PATH)/lib -static -lcunit
>  if ODP_CUNIT_ENABLED
>  TESTS = ${bin_PROGRAMS}
>  check_PROGRAMS = ${bin_PROGRAMS}
> -bin_PROGRAMS = odp_init odp_queue odp_crypto
> +bin_PROGRAMS = odp_init odp_queue odp_crypto odp_pktio
>  odp_init_LDFLAGS = $(AM_LDFLAGS)
>  odp_queue_LDFLAGS = $(AM_LDFLAGS)
>  odp_crypto_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/crypto
>  odp_crypto_LDFLAGS = $(AM_LDFLAGS)
> +odp_pktio_LDFLAGS = $(AM_LDFLAGS)
>  endif
>  
>  dist_odp_init_SOURCES = odp_init.c
> @@ -18,3 +19,4 @@ dist_odp_queue_SOURCES = odp_queue.c
>  dist_odp_crypto_SOURCES = crypto/odp_crypto_test_async_inp.c \
>  			  crypto/odp_crypto_test_sync_inp.c \
>  			  odp_crypto.c
> +dist_odp_pktio_SOURCES = odp_pktio.c
> diff --git a/test/validation/odp_pktio.c b/test/validation/odp_pktio.c
> new file mode 100644
> index 0000000..edbf0c9
> --- /dev/null
> +++ b/test/validation/odp_pktio.c

[...]

> +
> +int main(void)
> +{
> +	odp_shm_t shm;
> +	void *pool_base;
> +	odp_buffer_pool_t pool;
> +	odp_queue_t out_queue;
> +	CU_pSuite ptr_suite;
> +	CU_pTest ptest;

The naming of the pointers is not consistent in this file.

> +
> +	if (odp_init_global(NULL, NULL)) {
> +		printf("ODP global init failed.\n");
> +		return -1;
> +	}
> +	odp_init_local();
> +
> +	shm = odp_shm_reserve("shm_packet_pool",
> +			SHM_PKT_POOL_SIZE,
> +			ODP_CACHE_LINE_SIZE, 0);
> +
> +	pool_base = odp_shm_addr(shm);
> +	if (!pool_base) {
> +		fprintf(stderr, "Packet pool allocation failed.\n");
> +		return -1;
> +	}
> +
> +	pool = odp_buffer_pool_create("packet_pool", pool_base,
> +			SHM_PKT_POOL_SIZE,
> +			SHM_PKT_POOL_BUF_SIZE,
> +			ODP_CACHE_LINE_SIZE,
> +			ODP_BUFFER_TYPE_PACKET);
> +	if (ODP_BUFFER_POOL_INVALID == pool) {
> +		fprintf(stderr, "Packet pool creation failed.\n");
> +		return -1;
> +	}
> +	out_queue = odp_queue_create("crypto-out",
> +			ODP_QUEUE_TYPE_POLL, NULL);
> +	if (ODP_QUEUE_INVALID == out_queue) {
> +		fprintf(stderr, "Crypto outq creation failed.\n");
> +		return -1;
> +	}
> +	shm = odp_shm_reserve("shm_compl_pool",
> +			SHM_COMPL_POOL_SIZE,
> +			ODP_CACHE_LINE_SIZE,
> +			ODP_SHM_SW_ONLY);
> +	pool_base = odp_shm_addr(shm);
> +	if (!pool_base) {
> +		fprintf(stderr, "Completion pool allocation failed.\n");
> +		return -1;
> +	}
> +	pool = odp_buffer_pool_create("compl_pool", pool_base,
> +			SHM_COMPL_POOL_SIZE,
> +			SHM_COMPL_POOL_BUF_SIZE,
> +			ODP_CACHE_LINE_SIZE,
> +			ODP_BUFFER_TYPE_RAW);
> +	if (ODP_BUFFER_POOL_INVALID == pool) {
> +		fprintf(stderr, "Completion pool creation failed.\n");
> +		return -1;
> +	}
> +
> +	/* Open a packet IO instance for this thread */
> +	pktio = odp_pktio_open("eth0", pool);
> +	if (pktio == ODP_PKTIO_INVALID) {
> +		fprintf(stderr, "Error: pktio create failed\n");
> +		return -1;
> +	}
> +
> +	printf("\tODP version: %s\n", odp_version_api_str());
> +
> +	/* initialize the CUnit test registry */
> +	if (CUE_SUCCESS != CU_initialize_registry())
> +		return CU_get_error();
> +
> +	/* add a suite to the registry */
> +	ptr_suite = CU_add_suite(__FILE__, NULL, NULL);

We should use the table and not this.

Cheers,
Anders
Maxim Uvarov Dec. 1, 2014, 10:07 p.m. UTC | #2
On 12/01/2014 10:20 PM, Anders Roxell wrote:
> On 2014-12-01 19:15, Maxim Uvarov wrote:
>> Add basic check for mtu and promisc modes.
>>
>> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
>> ---
>>   test/validation/Makefile.am |   4 +-
>>   test/validation/odp_pktio.c | 164 ++++++++++++++++++++++++++++++++++++++++++++
>>   2 files changed, 167 insertions(+), 1 deletion(-)
>>   create mode 100644 test/validation/odp_pktio.c
>>
>> diff --git a/test/validation/Makefile.am b/test/validation/Makefile.am
>> index 0b831d0..91adc7e 100644
>> --- a/test/validation/Makefile.am
>> +++ b/test/validation/Makefile.am
>> @@ -6,11 +6,12 @@ AM_LDFLAGS += -L$(CUNIT_PATH)/lib -static -lcunit
>>   if ODP_CUNIT_ENABLED
>>   TESTS = ${bin_PROGRAMS}
>>   check_PROGRAMS = ${bin_PROGRAMS}
>> -bin_PROGRAMS = odp_init odp_queue odp_crypto
>> +bin_PROGRAMS = odp_init odp_queue odp_crypto odp_pktio
>>   odp_init_LDFLAGS = $(AM_LDFLAGS)
>>   odp_queue_LDFLAGS = $(AM_LDFLAGS)
>>   odp_crypto_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/crypto
>>   odp_crypto_LDFLAGS = $(AM_LDFLAGS)
>> +odp_pktio_LDFLAGS = $(AM_LDFLAGS)
>>   endif
>>   
>>   dist_odp_init_SOURCES = odp_init.c
>> @@ -18,3 +19,4 @@ dist_odp_queue_SOURCES = odp_queue.c
>>   dist_odp_crypto_SOURCES = crypto/odp_crypto_test_async_inp.c \
>>   			  crypto/odp_crypto_test_sync_inp.c \
>>   			  odp_crypto.c
>> +dist_odp_pktio_SOURCES = odp_pktio.c
>> diff --git a/test/validation/odp_pktio.c b/test/validation/odp_pktio.c
>> new file mode 100644
>> index 0000000..edbf0c9
>> --- /dev/null
>> +++ b/test/validation/odp_pktio.c
> [...]
>
>> +
>> +int main(void)
>> +{
>> +	odp_shm_t shm;
>> +	void *pool_base;
>> +	odp_buffer_pool_t pool;
>> +	odp_queue_t out_queue;
>> +	CU_pSuite ptr_suite;
>> +	CU_pTest ptest;
> The naming of the pointers is not consistent in this file.
>
>> +
>> +	if (odp_init_global(NULL, NULL)) {
>> +		printf("ODP global init failed.\n");
>> +		return -1;
>> +	}
>> +	odp_init_local();
>> +
>> +	shm = odp_shm_reserve("shm_packet_pool",
>> +			SHM_PKT_POOL_SIZE,
>> +			ODP_CACHE_LINE_SIZE, 0);
>> +
>> +	pool_base = odp_shm_addr(shm);
>> +	if (!pool_base) {
>> +		fprintf(stderr, "Packet pool allocation failed.\n");
>> +		return -1;
>> +	}
>> +
>> +	pool = odp_buffer_pool_create("packet_pool", pool_base,
>> +			SHM_PKT_POOL_SIZE,
>> +			SHM_PKT_POOL_BUF_SIZE,
>> +			ODP_CACHE_LINE_SIZE,
>> +			ODP_BUFFER_TYPE_PACKET);
>> +	if (ODP_BUFFER_POOL_INVALID == pool) {
>> +		fprintf(stderr, "Packet pool creation failed.\n");
>> +		return -1;
>> +	}
>> +	out_queue = odp_queue_create("crypto-out",
>> +			ODP_QUEUE_TYPE_POLL, NULL);
>> +	if (ODP_QUEUE_INVALID == out_queue) {
>> +		fprintf(stderr, "Crypto outq creation failed.\n");
>> +		return -1;
>> +	}
>> +	shm = odp_shm_reserve("shm_compl_pool",
>> +			SHM_COMPL_POOL_SIZE,
>> +			ODP_CACHE_LINE_SIZE,
>> +			ODP_SHM_SW_ONLY);
>> +	pool_base = odp_shm_addr(shm);
>> +	if (!pool_base) {
>> +		fprintf(stderr, "Completion pool allocation failed.\n");
>> +		return -1;
>> +	}
>> +	pool = odp_buffer_pool_create("compl_pool", pool_base,
>> +			SHM_COMPL_POOL_SIZE,
>> +			SHM_COMPL_POOL_BUF_SIZE,
>> +			ODP_CACHE_LINE_SIZE,
>> +			ODP_BUFFER_TYPE_RAW);
>> +	if (ODP_BUFFER_POOL_INVALID == pool) {
>> +		fprintf(stderr, "Completion pool creation failed.\n");
>> +		return -1;
>> +	}
>> +
>> +	/* Open a packet IO instance for this thread */
>> +	pktio = odp_pktio_open("eth0", pool);
>> +	if (pktio == ODP_PKTIO_INVALID) {
>> +		fprintf(stderr, "Error: pktio create failed\n");
>> +		return -1;
>> +	}
>> +
>> +	printf("\tODP version: %s\n", odp_version_api_str());
>> +
>> +	/* initialize the CUnit test registry */
>> +	if (CUE_SUCCESS != CU_initialize_registry())
>> +		return CU_get_error();
>> +
>> +	/* add a suite to the registry */
>> +	ptr_suite = CU_add_suite(__FILE__, NULL, NULL);
> We should use the table and not this.

in patch 11 I switched to tables.

Maxim.

>
> Cheers,
> Anders
Anders Roxell Dec. 1, 2014, 10:52 p.m. UTC | #3
On 2014-12-02 01:07, Maxim Uvarov wrote:
> On 12/01/2014 10:20 PM, Anders Roxell wrote:
> >On 2014-12-01 19:15, Maxim Uvarov wrote:
> >>Add basic check for mtu and promisc modes.
> >>
> >>Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
> >>---
> >>  test/validation/Makefile.am |   4 +-
> >>  test/validation/odp_pktio.c | 164 ++++++++++++++++++++++++++++++++++++++++++++
> >>  2 files changed, 167 insertions(+), 1 deletion(-)
> >>  create mode 100644 test/validation/odp_pktio.c
> >>
> >>diff --git a/test/validation/Makefile.am b/test/validation/Makefile.am
> >>index 0b831d0..91adc7e 100644
> >>--- a/test/validation/Makefile.am
> >>+++ b/test/validation/Makefile.am
> >>@@ -6,11 +6,12 @@ AM_LDFLAGS += -L$(CUNIT_PATH)/lib -static -lcunit
> >>  if ODP_CUNIT_ENABLED
> >>  TESTS = ${bin_PROGRAMS}
> >>  check_PROGRAMS = ${bin_PROGRAMS}
> >>-bin_PROGRAMS = odp_init odp_queue odp_crypto
> >>+bin_PROGRAMS = odp_init odp_queue odp_crypto odp_pktio
> >>  odp_init_LDFLAGS = $(AM_LDFLAGS)
> >>  odp_queue_LDFLAGS = $(AM_LDFLAGS)
> >>  odp_crypto_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/crypto
> >>  odp_crypto_LDFLAGS = $(AM_LDFLAGS)
> >>+odp_pktio_LDFLAGS = $(AM_LDFLAGS)
> >>  endif
> >>  dist_odp_init_SOURCES = odp_init.c
> >>@@ -18,3 +19,4 @@ dist_odp_queue_SOURCES = odp_queue.c
> >>  dist_odp_crypto_SOURCES = crypto/odp_crypto_test_async_inp.c \
> >>  			  crypto/odp_crypto_test_sync_inp.c \
> >>  			  odp_crypto.c
> >>+dist_odp_pktio_SOURCES = odp_pktio.c
> >>diff --git a/test/validation/odp_pktio.c b/test/validation/odp_pktio.c
> >>new file mode 100644
> >>index 0000000..edbf0c9
> >>--- /dev/null
> >>+++ b/test/validation/odp_pktio.c
> >[...]
> >
> >>+
> >>+int main(void)
> >>+{
> >>+	odp_shm_t shm;
> >>+	void *pool_base;
> >>+	odp_buffer_pool_t pool;
> >>+	odp_queue_t out_queue;
> >>+	CU_pSuite ptr_suite;
> >>+	CU_pTest ptest;
> >The naming of the pointers is not consistent in this file.
> >
> >>+
> >>+	if (odp_init_global(NULL, NULL)) {
> >>+		printf("ODP global init failed.\n");
> >>+		return -1;
> >>+	}
> >>+	odp_init_local();
> >>+
> >>+	shm = odp_shm_reserve("shm_packet_pool",
> >>+			SHM_PKT_POOL_SIZE,
> >>+			ODP_CACHE_LINE_SIZE, 0);
> >>+
> >>+	pool_base = odp_shm_addr(shm);
> >>+	if (!pool_base) {
> >>+		fprintf(stderr, "Packet pool allocation failed.\n");
> >>+		return -1;
> >>+	}
> >>+
> >>+	pool = odp_buffer_pool_create("packet_pool", pool_base,
> >>+			SHM_PKT_POOL_SIZE,
> >>+			SHM_PKT_POOL_BUF_SIZE,
> >>+			ODP_CACHE_LINE_SIZE,
> >>+			ODP_BUFFER_TYPE_PACKET);
> >>+	if (ODP_BUFFER_POOL_INVALID == pool) {
> >>+		fprintf(stderr, "Packet pool creation failed.\n");
> >>+		return -1;
> >>+	}
> >>+	out_queue = odp_queue_create("crypto-out",
> >>+			ODP_QUEUE_TYPE_POLL, NULL);
> >>+	if (ODP_QUEUE_INVALID == out_queue) {
> >>+		fprintf(stderr, "Crypto outq creation failed.\n");
> >>+		return -1;
> >>+	}
> >>+	shm = odp_shm_reserve("shm_compl_pool",
> >>+			SHM_COMPL_POOL_SIZE,
> >>+			ODP_CACHE_LINE_SIZE,
> >>+			ODP_SHM_SW_ONLY);
> >>+	pool_base = odp_shm_addr(shm);
> >>+	if (!pool_base) {
> >>+		fprintf(stderr, "Completion pool allocation failed.\n");
> >>+		return -1;
> >>+	}
> >>+	pool = odp_buffer_pool_create("compl_pool", pool_base,
> >>+			SHM_COMPL_POOL_SIZE,
> >>+			SHM_COMPL_POOL_BUF_SIZE,
> >>+			ODP_CACHE_LINE_SIZE,
> >>+			ODP_BUFFER_TYPE_RAW);
> >>+	if (ODP_BUFFER_POOL_INVALID == pool) {
> >>+		fprintf(stderr, "Completion pool creation failed.\n");
> >>+		return -1;
> >>+	}
> >>+
> >>+	/* Open a packet IO instance for this thread */
> >>+	pktio = odp_pktio_open("eth0", pool);
> >>+	if (pktio == ODP_PKTIO_INVALID) {
> >>+		fprintf(stderr, "Error: pktio create failed\n");
> >>+		return -1;
> >>+	}
> >>+
> >>+	printf("\tODP version: %s\n", odp_version_api_str());
> >>+
> >>+	/* initialize the CUnit test registry */
> >>+	if (CUE_SUCCESS != CU_initialize_registry())
> >>+		return CU_get_error();
> >>+
> >>+	/* add a suite to the registry */
> >>+	ptr_suite = CU_add_suite(__FILE__, NULL, NULL);
> >We should use the table and not this.
> 
> in patch 11 I switched to tables.

So squash patch 11 into this patch then!


Cheers,
Anders
diff mbox

Patch

diff --git a/test/validation/Makefile.am b/test/validation/Makefile.am
index 0b831d0..91adc7e 100644
--- a/test/validation/Makefile.am
+++ b/test/validation/Makefile.am
@@ -6,11 +6,12 @@  AM_LDFLAGS += -L$(CUNIT_PATH)/lib -static -lcunit
 if ODP_CUNIT_ENABLED
 TESTS = ${bin_PROGRAMS}
 check_PROGRAMS = ${bin_PROGRAMS}
-bin_PROGRAMS = odp_init odp_queue odp_crypto
+bin_PROGRAMS = odp_init odp_queue odp_crypto odp_pktio
 odp_init_LDFLAGS = $(AM_LDFLAGS)
 odp_queue_LDFLAGS = $(AM_LDFLAGS)
 odp_crypto_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/crypto
 odp_crypto_LDFLAGS = $(AM_LDFLAGS)
+odp_pktio_LDFLAGS = $(AM_LDFLAGS)
 endif
 
 dist_odp_init_SOURCES = odp_init.c
@@ -18,3 +19,4 @@  dist_odp_queue_SOURCES = odp_queue.c
 dist_odp_crypto_SOURCES = crypto/odp_crypto_test_async_inp.c \
 			  crypto/odp_crypto_test_sync_inp.c \
 			  odp_crypto.c
+dist_odp_pktio_SOURCES = odp_pktio.c
diff --git a/test/validation/odp_pktio.c b/test/validation/odp_pktio.c
new file mode 100644
index 0000000..edbf0c9
--- /dev/null
+++ b/test/validation/odp_pktio.c
@@ -0,0 +1,164 @@ 
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:	BSD-3-Clause
+ */
+
+#include <odp.h>
+#include "CUnit/Basic.h"
+
+#define SHM_PKT_POOL_SIZE	(512 * 2048 * 2)
+#define SHM_PKT_POOL_BUF_SIZE	(1024 * 32)
+
+#define SHM_COMPL_POOL_SIZE	(128 * 1024)
+#define SHM_COMPL_POOL_BUF_SIZE	128
+
+static odp_pktio_t pktio;
+
+static void test_pktio_mtu(void)
+{
+	int i;
+	int ret;
+	int def;
+
+	def = odp_pktio_mtu(pktio);
+	CU_ASSERT(def > 0);
+
+	for (i = 64; i < 9000; i *= 2) {
+		printf(" %d ", i);
+
+		ret = odp_pktio_set_mtu(pktio, i);
+		CU_ASSERT(0 == ret);
+
+		ret = odp_pktio_mtu(pktio);
+		CU_ASSERT(i == ret);
+	}
+
+	ret = odp_pktio_set_mtu(pktio, def);
+	CU_ASSERT(0 == ret);
+
+	return;
+}
+
+static void test_pktio_promisc(void)
+{
+	int ret;
+
+	ret = odp_pktio_promisc_set(pktio, 1);
+	CU_ASSERT(0 == ret);
+
+	/* Check */
+	ret = odp_pktio_promisc_enabled(pktio);
+	CU_ASSERT(1 == ret);
+
+	ret = odp_pktio_promisc_set(pktio, 0);
+	CU_ASSERT(0 == ret);
+
+	/* Check */
+	ret = odp_pktio_promisc_enabled(pktio);
+	CU_ASSERT(0 == ret);
+
+	return;
+}
+
+int main(void)
+{
+	odp_shm_t shm;
+	void *pool_base;
+	odp_buffer_pool_t pool;
+	odp_queue_t out_queue;
+	CU_pSuite ptr_suite;
+	CU_pTest ptest;
+
+	if (odp_init_global(NULL, NULL)) {
+		printf("ODP global init failed.\n");
+		return -1;
+	}
+	odp_init_local();
+
+	shm = odp_shm_reserve("shm_packet_pool",
+			SHM_PKT_POOL_SIZE,
+			ODP_CACHE_LINE_SIZE, 0);
+
+	pool_base = odp_shm_addr(shm);
+	if (!pool_base) {
+		fprintf(stderr, "Packet pool allocation failed.\n");
+		return -1;
+	}
+
+	pool = odp_buffer_pool_create("packet_pool", pool_base,
+			SHM_PKT_POOL_SIZE,
+			SHM_PKT_POOL_BUF_SIZE,
+			ODP_CACHE_LINE_SIZE,
+			ODP_BUFFER_TYPE_PACKET);
+	if (ODP_BUFFER_POOL_INVALID == pool) {
+		fprintf(stderr, "Packet pool creation failed.\n");
+		return -1;
+	}
+	out_queue = odp_queue_create("crypto-out",
+			ODP_QUEUE_TYPE_POLL, NULL);
+	if (ODP_QUEUE_INVALID == out_queue) {
+		fprintf(stderr, "Crypto outq creation failed.\n");
+		return -1;
+	}
+	shm = odp_shm_reserve("shm_compl_pool",
+			SHM_COMPL_POOL_SIZE,
+			ODP_CACHE_LINE_SIZE,
+			ODP_SHM_SW_ONLY);
+	pool_base = odp_shm_addr(shm);
+	if (!pool_base) {
+		fprintf(stderr, "Completion pool allocation failed.\n");
+		return -1;
+	}
+	pool = odp_buffer_pool_create("compl_pool", pool_base,
+			SHM_COMPL_POOL_SIZE,
+			SHM_COMPL_POOL_BUF_SIZE,
+			ODP_CACHE_LINE_SIZE,
+			ODP_BUFFER_TYPE_RAW);
+	if (ODP_BUFFER_POOL_INVALID == pool) {
+		fprintf(stderr, "Completion pool creation failed.\n");
+		return -1;
+	}
+
+	/* Open a packet IO instance for this thread */
+	pktio = odp_pktio_open("eth0", pool);
+	if (pktio == ODP_PKTIO_INVALID) {
+		fprintf(stderr, "Error: pktio create failed\n");
+		return -1;
+	}
+
+	printf("\tODP version: %s\n", odp_version_api_str());
+
+	/* initialize the CUnit test registry */
+	if (CUE_SUCCESS != CU_initialize_registry())
+		return CU_get_error();
+
+	/* add a suite to the registry */
+	ptr_suite = CU_add_suite(__FILE__, NULL, NULL);
+	if (NULL == ptr_suite) {
+		CU_cleanup_registry();
+		return CU_get_error();
+	}
+
+	ptest = CU_ADD_TEST(ptr_suite, test_pktio_mtu);
+	if (NULL == ptest) {
+		CU_cleanup_registry();
+		return CU_get_error();
+	}
+
+	ptest = CU_ADD_TEST(ptr_suite, test_pktio_promisc);
+	if (NULL == ptest) {
+		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();
+
+	odp_term_local();
+	odp_term_global();
+
+	return CU_get_error();
+}