From: Konstantin Ananyev Date: Mon, 20 Apr 2020 12:28:29 +0000 (+0100) Subject: test/ring: add stress test for MT peek API X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=582581d578971df78c075bcaf68f3fb0df6bc8a3;p=dpdk.git test/ring: add stress test for MT peek API Introduce new test case to test MT peek API. Signed-off-by: Konstantin Ananyev Acked-by: Honnappa Nagarahalli --- diff --git a/app/test/Makefile b/app/test/Makefile index 28f0b9ac2d..631a21028b 100644 --- a/app/test/Makefile +++ b/app/test/Makefile @@ -80,6 +80,7 @@ SRCS-y += test_ring.c SRCS-y += test_ring_mpmc_stress.c SRCS-y += test_ring_hts_stress.c SRCS-y += test_ring_perf.c +SRCS-y += test_ring_peek_stress.c SRCS-y += test_ring_rts_stress.c SRCS-y += test_ring_stress.c SRCS-y += test_pmd_perf.c diff --git a/app/test/meson.build b/app/test/meson.build index 20c4978c2a..d15278cf90 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -102,6 +102,7 @@ test_sources = files('commands.c', 'test_ring.c', 'test_ring_mpmc_stress.c', 'test_ring_hts_stress.c', + 'test_ring_peek_stress.c', 'test_ring_perf.c', 'test_ring_rts_stress.c', 'test_ring_stress.c', diff --git a/app/test/test_ring_peek_stress.c b/app/test/test_ring_peek_stress.c new file mode 100644 index 0000000000..cfc82d7286 --- /dev/null +++ b/app/test/test_ring_peek_stress.c @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2020 Intel Corporation + */ + +#include "test_ring_stress_impl.h" +#include + +static inline uint32_t +_st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n, + uint32_t *avail) +{ + uint32_t m; + + m = rte_ring_dequeue_bulk_start(r, obj, n, avail); + n = (m == n) ? n : 0; + rte_ring_dequeue_finish(r, n); + return n; +} + +static inline uint32_t +_st_ring_enqueue_bulk(struct rte_ring *r, void * const *obj, uint32_t n, + uint32_t *free) +{ + uint32_t m; + + m = rte_ring_enqueue_bulk_start(r, n, free); + n = (m == n) ? n : 0; + rte_ring_enqueue_finish(r, obj, n); + return n; +} + +static int +_st_ring_init(struct rte_ring *r, const char *name, uint32_t num) +{ + return rte_ring_init(r, name, num, + RING_F_MP_HTS_ENQ | RING_F_MC_HTS_DEQ); +} + +const struct test test_ring_peek_stress = { + .name = "MT_PEEK", + .nb_case = RTE_DIM(tests), + .cases = tests, +}; diff --git a/app/test/test_ring_stress.c b/app/test/test_ring_stress.c index 29a1368d7b..853fcc1902 100644 --- a/app/test/test_ring_stress.c +++ b/app/test/test_ring_stress.c @@ -46,6 +46,9 @@ test_ring_stress(void) n += test_ring_hts_stress.nb_case; k += run_test(&test_ring_hts_stress); + n += test_ring_peek_stress.nb_case; + k += run_test(&test_ring_peek_stress); + printf("Number of tests:\t%u\nSuccess:\t%u\nFailed:\t%u\n", n, k, n - k); return (k != n); diff --git a/app/test/test_ring_stress.h b/app/test/test_ring_stress.h index 9a87c7f7b9..60953ce47d 100644 --- a/app/test/test_ring_stress.h +++ b/app/test/test_ring_stress.h @@ -35,3 +35,4 @@ struct test { extern const struct test test_ring_mpmc_stress; extern const struct test test_ring_rts_stress; extern const struct test test_ring_hts_stress; +extern const struct test test_ring_peek_stress;