http://docs.opendataplane.org/linux-generic-gcov-html/linux-generic/index.html

It works, but there are still holes in the linux-generic implementation of
the API

ODP_QUEUE_TYPE_PKTIN: needs testing in this unit test possibly, but it may
fall with APIs that are going to be tested by other code we believe.

   - odp_buffer_t queue_sched_buf(odp_queue_t handle) - > in scheduler
   - int queue_sched_atomic(odp_queue_t handle)  - > in scheduler



On 11 November 2014 10:16, Maxim Uvarov <[email protected]> wrote:

> Merged, please check!
>
> Maxim.
>
>
> On 11/11/2014 06:10 PM, Anders Roxell wrote:
>
>> On 11 November 2014 16:09, Maxim Uvarov <[email protected]> wrote:
>>
>>> I can fix that on applying.
>>>
>> Thanks Maxim.
>>
>> Yan, then you don't need to resend the patch!
>>
>> Cheers,
>> Anders
>>
>>  Maxim.
>>>
>>> On 11/11/2014 05:58 PM, [email protected] wrote:
>>>
>>>> Anders,
>>>> I think you mean that the name of suit should be the same as file name .
>>>> I just see the change you made at odp_init.c today.
>>>> I will fix it and send to Maxim
>>>> Thanks.
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------
>>>> ------------
>>>> [email protected]
>>>>
>>>>      *From:* Anders Roxell <mailto:[email protected]>
>>>>      *Date:* 2014-11-11 22:33
>>>>      *To:* Yan Songming <mailto:[email protected]>
>>>>      *CC:* lng-odp <mailto:[email protected]>
>>>>      *Subject:* Re: [lng-odp] [PATCH v7] cunit: add queue test
>>>>
>>>>      On 2014-11-11 21:06, Yan Songming wrote:
>>>>      > Add the cunit test for none syne queue. Test the base queue
>>>> function
>>>>      >
>>>>      > Signed-off-by: yan.songming <[email protected]>
>>>>      Reviewed-and-Tested-by: Anders Roxell <[email protected]>
>>>>      Minor nit that maybe Maxim can fixup before applying the patch?
>>>>      See inline
>>>>      > ---
>>>>      > 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.c | 157
>>>>      +++++++++++++++++++++++++++++++++++++++++++++++++
>>>>      > 2 files changed, 162 insertions(+), 3 deletions(-)
>>>>      > create mode 100644 test/cunit/odp_queue.c
>>>>      >
>>>>      > diff --git a/test/cunit/Makefile.am b/test/cunit/Makefile.am
>>>>      > index 4014bed..439e134 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.c
>>>>      > +dist_odp_queue_SOURCES = odp_queue.c
>>>>      > diff --git a/test/cunit/odp_queue.c b/test/cunit/odp_queue.c
>>>>      > new file mode 100644
>>>>      > index 0000000..001b544
>>>>      > --- /dev/null
>>>>      > +++ b/test/cunit/odp_queue.c
>>>>      > @@ -0,0 +1,157 @@
>>>>      > +/* 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_sunnyday(void)
>>>>      > +{
>>>>      > + odp_queue_t queue_creat_id, queue_id;
>>>>      > + odp_buffer_t enbuf[MAX_BUFFER_QUEUE], debuf[MAX_BUFFER_QUEUE];
>>>>      > + odp_buffer_t buf;
>>>>      > + odp_buffer_pool_t msg_pool;
>>>>      > + odp_queue_param_t param;
>>>>      > + odp_buffer_t *pbuf_tmp;
>>>>      > + int i, deq_ret;
>>>>      > + int nr_deq_entries = 0;
>>>>      > + int max_iteration = CONFIG_MAX_ITERATION;
>>>>      > + 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);
>>>>      change "odp queue" to __FILE__
>>>>      > + if (NULL == ptr_suite) {
>>>>      > + CU_cleanup_registry();
>>>>      > + return CU_get_error();
>>>>      > + }
>>>>      > +
>>>>      > + if (NULL == CU_ADD_TEST(ptr_suite, test_odp_queue_sunnyday)) {
>>>>      > + 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
>>>>      > [email protected]
>>>>      > http://lists.linaro.org/mailman/listinfo/lng-odp
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> lng-odp mailing list
>>>> [email protected]
>>>> http://lists.linaro.org/mailman/listinfo/lng-odp
>>>>
>>>
>>>
>>> _______________________________________________
>>> lng-odp mailing list
>>> [email protected]
>>> http://lists.linaro.org/mailman/listinfo/lng-odp
>>>
>>
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> http://lists.linaro.org/mailman/listinfo/lng-odp
>



-- 
*Mike Holmes*
Linaro  Sr Technical Manager
LNG - ODP
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to