Re: [dpdk-dev] [PATCH v2 1/2] test/ring: add stress test for ST peek API
From: Honnappa Nagarahalli <hidden>
Date: 2020-07-02 16:19:00
-----Original Message----- From: Konstantin Ananyev <redacted> Sent: Thursday, July 2, 2020 9:10 AM To: dev@dpdk.org Cc: Honnappa Nagarahalli <redacted>; Feifei Wang [off-list ref]; Konstantin Ananyev [off-list ref] Subject: [PATCH v2 1/2] test/ring: add stress test for ST peek API Introduce new test case to test ST peek API. Signed-off-by: Konstantin Ananyev <redacted>
Reviewed-by: Honnappa Nagarahalli <redacted>
quoted hunk ↗ jump to hunk
--- app/test/Makefile | 1 + app/test/meson.build | 1 + app/test/test_ring_st_peek_stress.c | 54 +++++++++++++++++++++++++++++ app/test/test_ring_stress.c | 3 ++ app/test/test_ring_stress.h | 1 + 5 files changed, 60 insertions(+) create mode 100644 app/test/test_ring_st_peek_stress.cdiff --git a/app/test/Makefile b/app/test/Makefile index7b96a03a6..37bdaf891 100644--- a/app/test/Makefile +++ b/app/test/Makefile@@ -83,6 +83,7 @@ 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_st_peek_stress.c SRCS-y += test_ring_stress.c SRCS-y += test_pmd_perf.cdiff --git a/app/test/meson.build b/app/test/meson.build indexb224d6f2b..5cb050958 100644--- a/app/test/meson.build +++ b/app/test/meson.build@@ -108,6 +108,7 @@ test_sources = files('commands.c', 'test_ring_peek_stress.c', 'test_ring_perf.c', 'test_ring_rts_stress.c', + 'test_ring_st_peek_stress.c', 'test_ring_stress.c', 'test_rwlock.c', 'test_sched.c',diff --git a/app/test/test_ring_st_peek_stress.cb/app/test/test_ring_st_peek_stress.c new file mode 100644 index 000000000..bc573de47--- /dev/null +++ b/app/test/test_ring_st_peek_stress.c@@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2020 Intel Corporation + */ + +#include "test_ring_stress_impl.h" +#include <rte_ring_elem.h> + +static inline uint32_t +_st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n, + uint32_t *avail) +{ + uint32_t m; + + static rte_spinlock_t lck = RTE_SPINLOCK_INITIALIZER; + + rte_spinlock_lock(&lck); + + m = rte_ring_dequeue_bulk_start(r, obj, n, avail); + n = (m == n) ? n : 0; + rte_ring_dequeue_finish(r, n); + + rte_spinlock_unlock(&lck); + 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; + + static rte_spinlock_t lck = RTE_SPINLOCK_INITIALIZER; + + rte_spinlock_lock(&lck); + + m = rte_ring_enqueue_bulk_start(r, n, free); + n = (m == n) ? n : 0; + rte_ring_enqueue_finish(r, obj, n); + + rte_spinlock_unlock(&lck); + 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_SP_ENQ |RING_F_SC_DEQ); } + +const struct test test_ring_st_peek_stress = { + .name = "ST_PEEK", + .nb_case = RTE_DIM(tests), + .cases = tests, +};diff --git a/app/test/test_ring_stress.c b/app/test/test_ring_stress.c index853fcc190..387cfa747 100644--- a/app/test/test_ring_stress.c +++ b/app/test/test_ring_stress.c@@ -49,6 +49,9 @@ test_ring_stress(void) n += test_ring_peek_stress.nb_case; k += run_test(&test_ring_peek_stress); + n += test_ring_st_peek_stress.nb_case; + k += run_test(&test_ring_st_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 index60953ce47..a9a390341 100644--- a/app/test/test_ring_stress.h +++ b/app/test/test_ring_stress.h@@ -36,3 +36,4 @@ extern const struct test test_ring_mpmc_stress; externconst struct test test_ring_rts_stress; extern const struct test test_ring_hts_stress; extern const struct test test_ring_peek_stress; +extern const struct test test_ring_st_peek_stress; -- 2.17.1