diff mbox

[v6] cunit: add queue test

Message ID 201411111604326577810@linaro.org
State New
Headers show

Commit Message

yan.songming Nov. 11, 2014, 8:04 a.m. UTC
->"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

OK,I will change and send patch again.



yan.songming@linaro.org
 
From: Mike Holmes

Date: 2014-11-11 05:22
To: Yan Songming
CC: lng-odp
Subject: Re: [lng-odp] [PATCH v6]cunit: add queue test


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

+       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 
Linaro  Sr Technical Manager
LNG - ODP

Comments

Mike Holmes Nov. 11, 2014, 12:59 p.m. UTC | #1
Thanks Yan

If you could send that ASAP we need to get the unit tests in the repo as
soon as we can.

Mike

On 11 November 2014 03:04, yan.songming@linaro.org <yan.songming@linaro.org>
wrote:

> ->"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
>
> OK,I will change and send patch again.
>
> ------------------------------
> yan.songming@linaro.org
>
>
> *From:* Mike Holmes <mike.holmes@linaro.org>
> *Date:* 2014-11-11 05:22
> *To:* Yan Songming <yan.songming@linaro.org>
> *CC:* lng-odp <lng-odp@lists.linaro.org>
> *Subject:* Re: [lng-odp] [PATCH v6]cunit: add queue test
>
>
> 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
>>
>
>
>
> --
> *Mike Holmes*
> Linaro  Sr Technical Manager
> 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)) {

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