diff mbox

queue test

Message ID 201410310932595244726@linaro.org
State New
Headers show

Commit Message

yan.songming Oct. 31, 2014, 1:33 a.m. UTC
add cunit test of queue. 
add file: test/cunit/odp_queue_test.c
change file : /test/cunit/Makefile.am

From: "yan.songming" <yan.songming@linaro.org>

 
---
test/cunit/Makefile.am      |   4 +-
test/cunit/odp_queue_test.c | 168 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 171 insertions(+), 1 deletion(-)
create mode 100644 test/cunit/odp_queue_test.c
 
-- 
1.8.3.1

Comments

Mike Holmes Oct. 31, 2014, 2:11 a.m. UTC | #1
On 30 October 2014 21:33, yan.songming@linaro.org <yan.songming@linaro.org>
wrote:

> add cunit test of queue.
> add file: test/cunit/odp_queue_test.c
> change file : /test/cunit/Makefile.am
>
> From: "yan.songming" <yan.songming@linaro.org>
>
> ---
>  test/cunit/Makefile.am      |   4 +-
>  test/cunit/odp_queue_test.c | 168
> ++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 171 insertions(+), 1 deletion(-)
>  create mode 100644 test/cunit/odp_queue_test.c
>
> diff --git a/test/cunit/Makefile.am b/test/cunit/Makefile.am
> index 927a5a5..46f46c9 100644
> --- a/test/cunit/Makefile.am
> +++ b/test/cunit/Makefile.am
> @@ -6,8 +6,10 @@ AM_LDFLAGS += -L$(CUNIT_PATH)/lib
>  if ODP_CUNIT_ENABLED
>  TESTS = ${bin_PROGRAMS}
>  check_PROGRAMS = ${bin_PROGRAMS}
> -bin_PROGRAMS = odp_init
> +bin_PROGRAMS = odp_init odp_queue
>  odp_init_LDFLAGS = $(AM_LDFLAGS) -static -lcunit
> +odp_queue_LDFLAGS = $(AM_LDFLAGS) -static -lcunit
>  endif
>  +dist_odp_queue_SOURCES = odp_queue_test.c
>  dist_odp_init_SOURCES = odp_init_test.c
> diff --git a/test/cunit/odp_queue_test.c b/test/cunit/odp_queue_test.c
> new file mode 100644
> index 0000000..816ef22
> --- /dev/null
> +++ b/test/cunit/odp_queue_test.c
> @@ -0,0 +1,168 @@
> +/* Copyright (c) 2014, Linaro Limited
> + * All rights reserved.
> + *
> + * SPDX-License-Identifier:     BSD-3-Clause
> + */
> +
> +#include "odp.h"
> +#include "CUnit/Basic.h"
> +#include "odp_queue.h"
> +#include "odp_buffer.h"
> +#include "odp_shared_memory.h"
> +#include "odp_buffer_pool.h"
>
>
This may apply as a general rule for all the tests we write, but
applications using ODP should only include odp.h if they want to be sure
they replicate the features available to an application.


> +
> +#define MAX_BUFFER_QUEUE        (8)             /**< Max enqueu buf num */
>
>
spelling = en-queue ?


> +#define MSG_POOL_SIZE           (4*1024*1024)   /**< Message pool size */
> +
> +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 (pool_base == NULL) {
> + ODP_ERR("Shared memory reserve failed.\n");
>
>
We plan to deprecate the use of ODP_ERR in applications, use printf
instead, or a CU_ASSERT, same for other instances.


> + return -1;
> + }
> +
> + pool = odp_buffer_pool_create("msg_pool", pool_base, MSG_POOL_SIZE,
> +       0,
> +       ODP_CACHE_LINE_SIZE, ODP_BUFFER_TYPE_RAW);
> +
> + if (pool == ODP_BUFFER_POOL_INVALID) {
> + ODP_ERR("Pool create failed.\n");
> + return -1;
> + }
> +    return 0;
> +}
> +
> +static void test_odp_queue(void)
> +{
> +    odp_queue_t       queue_creatid;
>
>
queue_create_id might be easier to read


>  +    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;
> +
> +    /* test odp_queue_create */
> +    memset(&param, 0, sizeof(param));
> +    param.sched.sync  = ODP_SCHED_SYNC_NONE;
> +
> +    queue_creatid = odp_queue_create("test_queue", ODP_QUEUE_TYPE_POLL,
> &param);
> +    CU_ASSERT(queue_creatid != ODP_QUEUE_INVALID);
> +
> +    /* test odp_queue_type */
> +    CU_ASSERT_EQUAL(ODP_QUEUE_TYPE_POLL, odp_queue_type(queue_creatid));
> +
> +    /* test odp_queue_type */
> +    CU_ASSERT_EQUAL(ODP_SCHED_SYNC_NONE,
> odp_queue_sched_type(queue_creatid));
> +
> +    /* test odp_queue_lookup */
> +    queue_id = odp_queue_lookup("test_queue");
> +    CU_ASSERT_EQUAL(queue_creatid, 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);
> +
> +    /* inite buffer pool */
>
>
spelling initialize buffer pool ?

+    CU_ASSERT_FATAL(0 == test_odp_buffer_pool_init());
> +
> +    /* 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 */
>
>
should be test odp_queue_enq 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);
> +    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]);
> + /*  buffer free */
> +        odp_buffer_free(Enbuf[i]);
> +    }
> +    return;
> +}
> +
> +static void test_odp_init_global(void)
> +{
> + int status;
> + status = odp_init_global(NULL, NULL);
> + CU_ASSERT_FATAL(status == 0);
> +}
> +
> +static int init(void)
> +{
> + printf("\tODP version: %s\n", odp_version_api_str());
> + return 0;
> +}
> +
> +static int finalise(void)
>
>
spelling finalize  ?


> +{
> + 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 a suite to the registry */
> + ptr_suite = CU_add_suite("odp intalization", init, finalise);
>
>
spelling initialization ?


> + if (NULL == ptr_suite) {
> + CU_cleanup_registry();
> + return CU_get_error();
> + }
> + /* add the tests to the suite */
> + if (NULL == CU_ADD_TEST(ptr_suite, test_odp_init_global)) {
> + CU_cleanup_registry();
> + return CU_get_error();
> + }
> +
> +
> + ptr_suite = CU_add_suite("odp queue", init, finalise);
> + 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
>
>
diff mbox

Patch

diff --git a/test/cunit/Makefile.am b/test/cunit/Makefile.am
index 927a5a5..46f46c9 100644
--- a/test/cunit/Makefile.am
+++ b/test/cunit/Makefile.am
@@ -6,8 +6,10 @@  AM_LDFLAGS += -L$(CUNIT_PATH)/lib
if ODP_CUNIT_ENABLED
TESTS = ${bin_PROGRAMS}
check_PROGRAMS = ${bin_PROGRAMS}
-bin_PROGRAMS = odp_init
+bin_PROGRAMS = odp_init odp_queue
odp_init_LDFLAGS = $(AM_LDFLAGS) -static -lcunit
+odp_queue_LDFLAGS = $(AM_LDFLAGS) -static -lcunit
endif
+dist_odp_queue_SOURCES = odp_queue_test.c
dist_odp_init_SOURCES = odp_init_test.c
diff --git a/test/cunit/odp_queue_test.c b/test/cunit/odp_queue_test.c
new file mode 100644
index 0000000..816ef22
--- /dev/null
+++ b/test/cunit/odp_queue_test.c
@@ -0,0 +1,168 @@ 
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+
+#include "odp.h"
+#include "CUnit/Basic.h"
+#include "odp_queue.h"
+#include "odp_buffer.h"
+#include "odp_shared_memory.h"
+#include "odp_buffer_pool.h"
+
+#define MAX_BUFFER_QUEUE        (8)             /**< Max enqueu buf num */
+#define MSG_POOL_SIZE           (4*1024*1024)   /**< Message pool size */
+
+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 (pool_base == NULL) {
+ ODP_ERR("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 (pool == ODP_BUFFER_POOL_INVALID) {
+ ODP_ERR("Pool create failed.\n");
+ return -1;
+ }
+    return 0;
+}
+
+static void test_odp_queue(void)
+{
+    odp_queue_t       queue_creatid; 
+    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;
+   
+    /* test odp_queue_create */
+    memset(&param, 0, sizeof(param));
+    param.sched.sync  = ODP_SCHED_SYNC_NONE;
+
+    queue_creatid = odp_queue_create("test_queue", ODP_QUEUE_TYPE_POLL, &param);
+    CU_ASSERT(queue_creatid != ODP_QUEUE_INVALID);
+
+    /* test odp_queue_type */
+    CU_ASSERT_EQUAL(ODP_QUEUE_TYPE_POLL, odp_queue_type(queue_creatid));
+
+    /* test odp_queue_type */
+    CU_ASSERT_EQUAL(ODP_SCHED_SYNC_NONE, odp_queue_sched_type(queue_creatid));
+
+    /* test odp_queue_lookup */
+    queue_id = odp_queue_lookup("test_queue");
+    CU_ASSERT_EQUAL(queue_creatid, 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);
+
+    /* inite buffer pool */
+    CU_ASSERT_FATAL(0 == test_odp_buffer_pool_init());
+
+    /* 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);
+    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]);
+ /*  buffer free */
+        odp_buffer_free(Enbuf[i]);
+    }
+    return;
+}
+
+static void test_odp_init_global(void)
+{
+ int status;
+ status = odp_init_global(NULL, NULL);
+ CU_ASSERT_FATAL(status == 0);
+}
+
+static int init(void)
+{
+ printf("\tODP version: %s\n", odp_version_api_str());
+ return 0;
+}
+
+static int finalise(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();
+ /* add a suite to the registry */
+ ptr_suite = CU_add_suite("odp intalization", init, finalise);
+ if (NULL == ptr_suite) {
+ CU_cleanup_registry();
+ return CU_get_error();
+ }
+ /* add the tests to the suite */
+ if (NULL == CU_ADD_TEST(ptr_suite, test_odp_init_global)) {
+ CU_cleanup_registry();
+ return CU_get_error();
+ }
+
+
+ ptr_suite = CU_add_suite("odp queue", init, finalise);
+ 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();
+}
+