diff mbox

[v5] add queue test

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

Commit Message

yan.songming Nov. 6, 2014, 3:08 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 | 158 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 163 insertions(+), 3 deletions(-)
 create mode 100644 test/cunit/odp_queue_test.c

Comments

Anders Roxell Nov. 6, 2014, 4:43 p.m. UTC | #1
On 2014-11-06 23:08, Yan Songming 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 | 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
> --- 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..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 */

Make comments valuable or remove them.

The same goes for all comments.

> +	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)

The name of this test is displayed when CUnit runs, so it needs to make
sense what it tests, e.g., test_odp_queue_sunnyday


Cheers,
Anders

> +{
> +	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());
> +
> +	test_odp_queue_base();
> +
> +	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();
> +	}
> +
> +	/* 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
Jerin Jacob Nov. 7, 2014, 4:23 a.m. UTC | #2
On Thu, Nov 06, 2014 at 11:08:10PM +0800, Yan Songming 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 | 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
> --- 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..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));

odp_queue_deq_multi() can return 0..n number of buffer(s) dequeued. So lets run
in while() loop till it gets MAX_BUFFER_QUEUE buffers.
IMO you can introduce a config "max iteration" parameter to
restrict while() loop runs forever.


> +
> +	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());
> +
> +	test_odp_queue_base();
> +
> +	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();
> +	}
> +
> +	/* 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
yan.songming Nov. 7, 2014, 5:41 a.m. UTC | #3
Anders,

> +static void test_odp_queue(void)

The name of this test is displayed when CUnit runs, so it needs to make
sense what it tests, e.g., test_odp_queue_sunnyday

Yan : The test_odp_queue means the whole test of queue. It calls test_odp_queue_base. This function is the sunnyday test.
         Maybe we should add other deep test later. It may calls test_odp_queue_deep or something else in  test_odp_queue.
         So i think it make sense.

 



yan.songming@linaro.org
 
From: Anders Roxell

Date: 2014-11-07 00:43
To: Yan Songming
CC: lng-odp
Subject: Re: [lng-odp] [PATCH v5] add queue test
On 2014-11-06 23:08, Yan Songming 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 | 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

> --- 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..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 */

 
Make comments valuable or remove them.
 
The same goes for all comments.
 
> + 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)

 
The name of this test is displayed when CUnit runs, so it needs to make
sense what it tests, e.g., test_odp_queue_sunnyday
 
 
Cheers,
Anders
 
> +{

> + 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());

> +

> + test_odp_queue_base();

> +

> + 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();

> + }

> +

> + /* 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
yan.songming Nov. 7, 2014, 1:35 p.m. UTC | #4
Jerin,

odp_queue_deq_multi() can return 0..n number of buffer(s) dequeued. So lets run
in while() loop till it gets MAX_BUFFER_QUEUE buffers.
IMO you can introduce a config "max iteration" parameter to
restrict while() loop runs forever.

I think test every case of the "odp_queue_deq_multi()" may not the work in sunning day test.
So I just test the biggest one, the other work  should do later.


yan.songming@linaro.org
 
From: Jerin Jacob

Date: 2014-11-07 12:53
To: Yan Songming
CC: lng-odp@lists.linaro.org
Subject: Re: [lng-odp] [PATCH v5] add queue test
On Thu, Nov 06, 2014 at 11:08:10PM +0800, Yan Songming 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 | 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

> --- 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..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));

 
odp_queue_deq_multi() can return 0..n number of buffer(s) dequeued. So lets run
in while() loop till it gets MAX_BUFFER_QUEUE buffers.
IMO you can introduce a config "max iteration" parameter to
restrict while() loop runs forever.
 
 
> +

> + 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());

> +

> + test_odp_queue_base();

> +

> + 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();

> + }

> +

> + /* 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
Jerin Jacob Nov. 7, 2014, 2:05 p.m. UTC | #5
On Fri, Nov 07, 2014 at 09:35:39PM +0800, yan.songming@linaro.org wrote:
> Jerin,
> 
> odp_queue_deq_multi() can return 0..n number of buffer(s) dequeued. So lets run
> in while() loop till it gets MAX_BUFFER_QUEUE buffers.
> IMO you can introduce a config "max iteration" parameter to
> restrict while() loop runs forever.
> 
> I think test every case of the "odp_queue_deq_multi()" may not the work in sunning day test.
> So I just test the biggest one, the other work  should do later.

let me write a code snippet(untested) to make it clear.
If it make sense then add it else you can go with existing code.

original:

> + CU_ASSERT_EQUAL(MAX_BUFFER_QUEUE,
> + odp_queue_deq_multi(queue_id, debuf, MAX_BUFFER_QUEUE));

proposed:

nr_deq_entries = 0;
max_iteration = CONFIG_MAX_ITERATION;

do{
        deq_ret  = odp_queue_deq_multi(queue_id, debuf, MAX_BUFFER_QUEUE));
        CU_ASSERT(deq_ret >= 0);
        nr_deq_entries += deq_ret;
        max_iteration--;
        CU_ASSERT(max_iteration >= 0);
}while (nr_deq_entries < MAX_BUFFER_QUEUE);


> 
> 
> yan.songming@linaro.org
>  
> From: Jerin Jacob
> Date: 2014-11-07 12:53
> To: Yan Songming
> CC: lng-odp@lists.linaro.org
> Subject: Re: [lng-odp] [PATCH v5] add queue test
> On Thu, Nov 06, 2014 at 11:08:10PM +0800, Yan Songming 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 | 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
> > --- 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..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));
>  
> odp_queue_deq_multi() can return 0..n number of buffer(s) dequeued. So lets run
> in while() loop till it gets MAX_BUFFER_QUEUE buffers.
> IMO you can introduce a config "max iteration" parameter to
> restrict while() loop runs forever.
>  
>  
> > +
> > + 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());
> > +
> > + test_odp_queue_base();
> > +
> > + 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();
> > + }
> > +
> > + /* 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
Taras Kondratiuk Nov. 7, 2014, 3:36 p.m. UTC | #6
Please add 'cunit:' or 'test: cunit:' prefix to the subject.

On 11/06/2014 05:08 PM, Yan Songming 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 | 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();
> +}
>
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..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());
+
+	test_odp_queue_base();
+
+	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();
+	}
+
+	/* 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();
+}