From patchwork Fri Oct 9 11:59:02 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Uvarov X-Patchwork-Id: 54696 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-lb0-f197.google.com (mail-lb0-f197.google.com [209.85.217.197]) by patches.linaro.org (Postfix) with ESMTPS id 2908522DB6 for ; Fri, 9 Oct 2015 12:06:08 +0000 (UTC) Received: by lbos8 with SMTP id s8sf37596162lbo.2 for ; Fri, 09 Oct 2015 05:06:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:delivered-to:from:to:date :message-id:in-reply-to:references:subject:precedence:list-id :list-unsubscribe:list-archive:list-post:list-help:list-subscribe :mime-version:content-type:content-transfer-encoding:errors-to :sender:x-original-sender:x-original-authentication-results :mailing-list; bh=WY+0DcNyyuM6LjlGrLzKnmqhxyzb2aSRHzQ+oMAjYiA=; b=Vaxjbj41DeurmrGDko961iD8MufgUnTr75cJ6amg2GRX0tUcE/ALnixxxLx1nuEF2b Yb2rcuUw5n+XSgahP77/y9GyYldjuwPg43BQaceKxpUfuili1M5O9rizSoNBO209tINQ 5ryV7o6TPLkjmZg22U5gWOUtYi9DW2TuDmXx3OQvvT3U54e+85p5L6afmDDVEEITCfd+ wYYdzOtUNvaNmmslg9eeH+XzydI3g7dqnR6Z+kJAA0aCCsNJH+Z3dKYZnL3EzSDzR6P5 8iI1H5hqQXb8QHFqxPzrWi3vXIM25uAv0tdu3SUsZ7qA/Ce+VhjlRijFWIh9mMKqGdRf LXpA== X-Gm-Message-State: ALoCoQke7e8MM4D9bDrUTHyNUq6rOc5eZveQB4JSveRlmkqrVmtcsCFXK9XK0EhjLQKKkjhYaZkY X-Received: by 10.112.198.33 with SMTP id iz1mr2502959lbc.8.1444392366623; Fri, 09 Oct 2015 05:06:06 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.25.155.68 with SMTP id d65ls262737lfe.85.gmail; Fri, 09 Oct 2015 05:06:06 -0700 (PDT) X-Received: by 10.25.144.78 with SMTP id s75mr4235864lfd.116.1444392366479; Fri, 09 Oct 2015 05:06:06 -0700 (PDT) Received: from mail-lb0-f182.google.com (mail-lb0-f182.google.com. [209.85.217.182]) by mx.google.com with ESMTPS id ue7si958450lbb.33.2015.10.09.05.06.06 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Oct 2015 05:06:06 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.217.182 as permitted sender) client-ip=209.85.217.182; Received: by lbos8 with SMTP id s8so77624297lbo.0 for ; Fri, 09 Oct 2015 05:06:06 -0700 (PDT) X-Received: by 10.25.207.82 with SMTP id f79mr4233053lfg.73.1444392365601; Fri, 09 Oct 2015 05:06:05 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.59.35 with SMTP id w3csp1160679lbq; Fri, 9 Oct 2015 05:06:04 -0700 (PDT) X-Received: by 10.107.135.69 with SMTP id j66mr13947251iod.174.1444392364129; Fri, 09 Oct 2015 05:06:04 -0700 (PDT) Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id j23si2270834ioi.43.2015.10.09.05.06.01; Fri, 09 Oct 2015 05:06:04 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Received: by lists.linaro.org (Postfix, from userid 109) id E1D4561815; Fri, 9 Oct 2015 12:06:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id D41E261B63; Fri, 9 Oct 2015 12:00:07 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 5CC5561A35; Fri, 9 Oct 2015 11:59:59 +0000 (UTC) Received: from mail-lb0-f180.google.com (mail-lb0-f180.google.com [209.85.217.180]) by lists.linaro.org (Postfix) with ESMTPS id 9588461A2E for ; Fri, 9 Oct 2015 11:59:10 +0000 (UTC) Received: by lbos8 with SMTP id s8so77427468lbo.0 for ; Fri, 09 Oct 2015 04:59:09 -0700 (PDT) X-Received: by 10.112.150.201 with SMTP id uk9mr6567624lbb.102.1444391949378; Fri, 09 Oct 2015 04:59:09 -0700 (PDT) Received: from localhost.localdomain (ppp91-76-161-180.pppoe.mtu-net.ru. [91.76.161.180]) by smtp.gmail.com with ESMTPSA id v19sm235052lfd.7.2015.10.09.04.59.08 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 09 Oct 2015 04:59:08 -0700 (PDT) From: Maxim Uvarov To: lng-odp@lists.linaro.org Date: Fri, 9 Oct 2015 14:59:02 +0300 Message-Id: <1444391944-20772-7-git-send-email-maxim.uvarov@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1444391944-20772-1-git-send-email-maxim.uvarov@linaro.org> References: <1444391944-20772-1-git-send-email-maxim.uvarov@linaro.org> X-Topics: patch Subject: [lng-odp] [PATCHv9 6/8] helper: move ring test to helper X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: , List-Help: , List-Subscribe: , MIME-Version: 1.0 Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: maxim.uvarov@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.217.182 as permitted sender) smtp.mailfrom=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 Move ring test to helper and kill not needed api_test directory. Unfortunately odp_ring_test.c had some old dirty code so I had to clean up it to to use cunit and latest helper apis. Signed-off-by: Maxim Uvarov --- configure.ac | 1 - helper/ring.c | 1 + helper/test/Makefile.am | 6 +- .../api_test/odp_ring_test.c => helper/test/ring.c | 100 ++++++++++++--------- test/Makefile.am | 2 +- test/api_test/.gitignore | 2 - test/api_test/Makefile.am | 13 --- test/api_test/odp_common.c | 91 ------------------- test/api_test/odp_common.h | 42 --------- 9 files changed, 63 insertions(+), 195 deletions(-) rename test/api_test/odp_ring_test.c => helper/test/ring.c (86%) delete mode 100644 test/api_test/.gitignore delete mode 100644 test/api_test/Makefile.am delete mode 100644 test/api_test/odp_common.c delete mode 100644 test/api_test/odp_common.h diff --git a/configure.ac b/configure.ac index 15dc6cf..d90b09b 100644 --- a/configure.ac +++ b/configure.ac @@ -292,7 +292,6 @@ AC_CONFIG_FILES([Makefile pkgconfig/libodphelper.pc scripts/Makefile test/Makefile - test/api_test/Makefile test/performance/Makefile test/validation/Makefile test/validation/buffer/Makefile diff --git a/helper/ring.c b/helper/ring.c index fe01c5d..9052628 100644 --- a/helper/ring.c +++ b/helper/ring.c @@ -644,3 +644,4 @@ int odph_ring_dequeue_burst(odph_ring_t *r, void **obj_table, unsigned n) else return odph_ring_mc_dequeue_burst(r, obj_table, n); } + diff --git a/helper/test/Makefile.am b/helper/test/Makefile.am index f6a3f83..3e0df0b 100644 --- a/helper/test/Makefile.am +++ b/helper/test/Makefile.am @@ -1,13 +1,15 @@ include $(top_srcdir)/test/Makefile.inc AM_CFLAGS += -I$(srcdir)/common +AM_CFLAGS += -I$(top_srcdir)/test/validation/common AM_LDFLAGS += -static TESTS_ENVIRONMENT += TEST_DIR=${builddir} EXECUTABLES = chksum$(EXEEXT) \ thread$(EXEEXT) \ - process$(EXEEXT) + process$(EXEEXT) \ + ring$(EXEEXT) COMPILE_ONLY = @@ -27,3 +29,5 @@ dist_thread_SOURCES = thread.c thread_LDADD = $(LIB)/libodphelper.la $(LIB)/libodp.la dist_process_SOURCES = process.c process_LDADD = $(LIB)/libodphelper.la $(LIB)/libodp.la +dist_ring_SOURCES = ring.c +ring_LDADD = $(LIB)/libodphelper.la $(LIB)/libodp.la diff --git a/test/api_test/odp_ring_test.c b/helper/test/ring.c similarity index 86% rename from test/api_test/odp_ring_test.c rename to helper/test/ring.c index e8a962a..ca2199d 100644 --- a/test/api_test/odp_ring_test.c +++ b/helper/test/ring.c @@ -37,7 +37,6 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - /** * @file * @@ -48,14 +47,24 @@ #include #include #include -#include +#include #include #include +#include #define RING_SIZE 4096 #define MAX_BULK 32 -#define RING_TEST_BASIC +enum { + ODP_RING_TEST_BASIC, + ODP_RING_TEST_STRESS, +}; + +/* local struct for ring_thread argument */ +typedef struct { + pthrd_arg thrdarg; + int stress_type; +} ring_arg_t; static int test_ring_basic(odph_ring_t *r) { @@ -64,24 +73,24 @@ static int test_ring_basic(odph_ring_t *r) unsigned i, num_elems; /* alloc dummy object pointers */ - src = malloc(RING_SIZE*2*sizeof(void *)); + src = malloc(RING_SIZE * 2 * sizeof(void *)); if (src == NULL) { LOG_ERR("failed to allocate test ring src memory\n"); goto fail; } - for (i = 0; i < RING_SIZE*2; i++) + for (i = 0; i < RING_SIZE * 2; i++) src[i] = (void *)(unsigned long)i; cur_src = src; /* alloc some room for copied objects */ - dst = malloc(RING_SIZE*2*sizeof(void *)); + dst = malloc(RING_SIZE * 2 * sizeof(void *)); if (dst == NULL) { LOG_ERR("failed to allocate test ring dst memory\n"); goto fail; } - memset(dst, 0, RING_SIZE*2*sizeof(void *)); + memset(dst, 0, RING_SIZE * 2 * sizeof(void *)); cur_dst = dst; printf("Test SP & SC basic functions\n"); @@ -251,7 +260,7 @@ static int producer_fn(void) void **src = NULL; /* alloc dummy object pointers */ - src = malloc(MAX_BULK*2*sizeof(void *)); + src = malloc(MAX_BULK * 2 * sizeof(void *)); if (src == NULL) { LOG_ERR("failed to allocate producer memory.\n"); return -1; @@ -275,7 +284,7 @@ static int consumer_fn(void) void **src = NULL; /* alloc dummy object pointers */ - src = malloc(MAX_BULK*2*sizeof(void *)); + src = malloc(MAX_BULK * 2 * sizeof(void *)); if (src == NULL) { LOG_ERR("failed to allocate consumer memory.\n"); return -1; @@ -298,7 +307,6 @@ static int consumer_fn(void) } while (1); } - /* * Note : make sure that both enqueue and dequeue * operation starts at same time so to avoid data corruption @@ -319,24 +327,22 @@ typedef enum { static void test_ring_stress(stress_type_t type) { int thr; + thr = odp_thread_id(); switch (type) { case one_enq_one_deq: - if (thr == 1) producer_fn(); if (thr == 2) consumer_fn(); break; - case multi_enq_multi_deq: - if (thr%2 == 0) + if (thr % 2 == 0) producer_fn(); else consumer_fn(); break; - case one_deq_rest_enq: case one_enq_rest_deq:/*TBD*/ default: @@ -344,13 +350,6 @@ static void test_ring_stress(stress_type_t type) } } -/* local struct for ring_thread argument */ -typedef struct { - pthrd_arg thrdarg; - int stress_type; -} ring_arg_t; - - static void *test_ring(void *arg) { ring_arg_t *parg = (ring_arg_t *)arg; @@ -368,8 +367,8 @@ static void *test_ring(void *arg) snprintf(ring_name, sizeof(ring_name), "test_ring_%i", thr); r = odph_ring_create(ring_name, RING_SIZE, - 0 /* not used, alignement - taken care inside func : todo */); + 0 /* not used, alignement + taken care inside func : todo */); if (r == NULL) { LOG_ERR("ring create failed\n"); result = -1; @@ -417,36 +416,43 @@ static void *test_ring(void *arg) return parg; } - -int main(int argc __attribute__((__unused__)), - char *argv[] __attribute__((__unused__))) +int main(int argc TEST_UNUSED, char *argv[] TEST_UNUSED) { ring_arg_t rarg; + odph_linux_pthread_t thread_tbl[MAX_WORKERS]; + odp_cpumask_t cpu_mask; + int num_workers; + char ring_name[ODPH_RING_NAMESIZE]; - if (odp_test_global_init() != 0) - return -1; + if (odp_init_global(NULL, NULL)) { + LOG_ERR("Error: ODP global init failed.\n"); + exit(EXIT_FAILURE); + } - odp_print_system_info(); + if (odp_init_local(ODP_THREAD_CONTROL)) { + LOG_ERR("Error: ODP local init failed.\n"); + exit(EXIT_FAILURE); + } odph_ring_tailq_init(); - rarg.thrdarg.numthrds = odp_cpu_count(); + num_workers = odp_cpumask_def_worker(&cpu_mask, MAX_WORKERS); + rarg.thrdarg.numthrds = rarg.thrdarg.numthrds; -#ifdef RING_TEST_BASIC rarg.thrdarg.testcase = ODP_RING_TEST_BASIC; -#else + printf("starting stess test type : %d..\n", rarg.stress_type); + odph_linux_pthread_create(&thread_tbl[0], &cpu_mask, + test_ring, (void *)&rarg); + odph_linux_pthread_join(thread_tbl, num_workers); + rarg.thrdarg.testcase = ODP_RING_TEST_STRESS; rarg.stress_type = one_enq_one_deq; -/* rarg.stress_type = multi_enq_multi_deq;*/ - char ring_name[ODPH_RING_NAMESIZE]; printf("starting stess test type : %d..\n", rarg.stress_type); - /* create a ring */ snprintf(ring_name, sizeof(ring_name), "test_ring_stress"); - r_stress = odph_ring_create(ring_name, RING_SIZE, - 0 /* not used, alignement - taken care inside func : todo */); + 0 /* not used, alignement + taken care inside func : todo */); if (r_stress == NULL) { LOG_ERR("ring create failed\n"); goto fail; @@ -456,15 +462,21 @@ int main(int argc __attribute__((__unused__)), LOG_ERR("ring lookup failed\n"); goto fail; } -#endif - odp_test_thread_create(test_ring, (pthrd_arg *)&rarg); -#ifndef RING_TEST_BASIC + odph_linux_pthread_create(&thread_tbl[0], &cpu_mask, + test_ring, (void *)&rarg); + odph_linux_pthread_join(thread_tbl, num_workers); + fail: -#endif + if (odp_term_local()) { + LOG_ERR("Error: ODP local term failed.\n"); + exit(EXIT_FAILURE); + } - odp_test_thread_exit(&rarg.thrdarg); + if (odp_term_global()) { + LOG_ERR("Error: ODP global term failed.\n"); + exit(EXIT_FAILURE); + } return 0; } - diff --git a/test/Makefile.am b/test/Makefile.am index 2ba8008..4a75364 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = api_test performance miscellaneous +SUBDIRS = performance miscellaneous if cunit_support SUBDIRS += validation diff --git a/test/api_test/.gitignore b/test/api_test/.gitignore deleted file mode 100644 index 950f443..0000000 --- a/test/api_test/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -odp_ring -odp_shm diff --git a/test/api_test/Makefile.am b/test/api_test/Makefile.am deleted file mode 100644 index fcdba48..0000000 --- a/test/api_test/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -include $(top_srcdir)/test/Makefile.inc - -bin_PROGRAMS = odp_ring$(EXEEXT) - -odp_ring_CFLAGS = $(AM_CFLAGS) - -odp_ring_LDFLAGS = $(AM_LDFLAGS) -static - -noinst_HEADERS = \ - $(top_srcdir)/test/api_test/odp_common.h \ - $(top_srcdir)/test/test_debug.h - -dist_odp_ring_SOURCES = odp_ring_test.c odp_common.c diff --git a/test/api_test/odp_common.c b/test/api_test/odp_common.c deleted file mode 100644 index 0dbefa5..0000000 --- a/test/api_test/odp_common.c +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright (c) 2013, Linaro Limited - * All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/** - * @file - * - * ODP test application common - */ - -#include -#include -#include -#include -#include - -#define MAX_WORKERS 32 /**< Max worker threads */ - -/* Globals */ -static odph_linux_pthread_t thread_tbl[MAX_WORKERS]; /**< worker threads table*/ -static int num_workers; /**< number of workers */ - -/** - * Print system information - */ -void odp_print_system_info(void) -{ - odp_cpumask_t cpumask; - char str[ODP_CPUMASK_STR_SIZE]; - - memset(str, 1, sizeof(str)); - - odp_cpumask_zero(&cpumask); - - odp_cpumask_from_str(&cpumask, "0x1"); - (void)odp_cpumask_to_str(&cpumask, str, sizeof(str)); - - printf("\n"); - printf("ODP system info\n"); - printf("---------------\n"); - printf("ODP API version: %s\n", odp_version_api_str()); - printf("CPU model: %s\n", odp_sys_cpu_model_str()); - printf("CPU freq (hz): %"PRIu64"\n", odp_sys_cpu_hz()); - printf("Cache line size: %i\n", odp_sys_cache_line_size()); - printf("CPU count: %i\n", odp_cpu_count()); - printf("CPU mask: %s\n", str); - - printf("\n"); -} - -/** test init globals and call odp_init_global() */ -int odp_test_global_init(void) -{ - memset(thread_tbl, 0, sizeof(thread_tbl)); - - if (odp_init_global(NULL, NULL)) { - LOG_ERR("ODP global init failed.\n"); - return -1; - } - - num_workers = odp_cpu_count(); - /* force to max CPU count */ - if (num_workers > MAX_WORKERS) - num_workers = MAX_WORKERS; - - return 0; -} - -/** create test thread */ -int odp_test_thread_create(void *func_ptr(void *), pthrd_arg *arg) -{ - odp_cpumask_t cpumask; - - /* Create and init additional threads */ - odp_cpumask_def_worker(&cpumask, arg->numthrds); - odph_linux_pthread_create(thread_tbl, &cpumask, func_ptr, - (void *)arg); - - return 0; -} - -/** exit from test thread */ -int odp_test_thread_exit(pthrd_arg *arg) -{ - /* Wait for other threads to exit */ - odph_linux_pthread_join(thread_tbl, arg->numthrds); - - return 0; -} diff --git a/test/api_test/odp_common.h b/test/api_test/odp_common.h deleted file mode 100644 index f321b6b..0000000 --- a/test/api_test/odp_common.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright (c) 2013, Linaro Limited - * All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/** - * @file - * - * ODP test application common headers - */ - -#ifndef ODP_COMMON_H -#define ODP_COMMON_H - -#define MAX_WORKERS 32 /**< Maximum number of work threads */ - -/** types of tests */ -typedef enum { - ODP_ATOMIC_TEST = 0, - ODP_SHM_TEST, - ODP_RING_TEST_BASIC, - ODP_RING_TEST_STRESS, - ODP_TIMER_PING_TEST, - ODP_MAX_TEST -} odp_test_case_e; - -/** - * Thread argument - */ -typedef struct { - int testcase; /**< specifies which set of API's to exercise */ - int numthrds; /**< no of pthreads to create */ -} pthrd_arg; - -extern void odp_print_system_info(void); -extern int odp_test_global_init(void); -/** create thread fro start_routine function */ -extern int odp_test_thread_create(void *(*start_routine) (void *), pthrd_arg *); -extern int odp_test_thread_exit(pthrd_arg *); - -#endif /* ODP_COMMON_H */