From patchwork Mon Mar 20 10:08:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Hunt, David" X-Patchwork-Id: 22010 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 1178ACFA4; Mon, 20 Mar 2017 18:08:28 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 4F74B37B1 for ; Mon, 20 Mar 2017 18:08:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=intel; t=1490029684; x=1521565684; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=n3t+WyzmHq1by0KQx8CGRr5AyFUfvC2hevi2RN2XsZQ=; b=tq/hWMUVKRYIkuBi75ZLh+uEEOvpKwn/MEZjsudQFZj7Ga+a0yW70qLA 7qg8CgwpBj0Vu02bmsM+ku7yJP6cdw==; Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Mar 2017 10:08:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,195,1486454400"; d="scan'208";a="69068939" Received: from silpixa00397515.ir.intel.com (HELO silpixa00397515.ger.corp.intel.com) ([10.237.223.14]) by orsmga004.jf.intel.com with ESMTP; 20 Mar 2017 10:08:03 -0700 From: David Hunt To: dev@dpdk.org Cc: bruce.richardson@intel.com, David Hunt Date: Mon, 20 Mar 2017 10:08:29 +0000 Message-Id: <1490004522-183515-6-git-send-email-david.hunt@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1490004522-183515-1-git-send-email-david.hunt@intel.com> References: <1489558767-56329-2-git-send-email-david.hunt@intel.com> <1490004522-183515-1-git-send-email-david.hunt@intel.com> Subject: [dpdk-dev] [PATCH v11 05/18] test/distributor: extra params for autotests X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" In the next few patches, we'll want to test old and new API, so here we're allowing different parameters to be passed to the tests, instead of just a distributor struct. Signed-off-by: David Hunt Acked-by: Bruce Richardson --- test/test/test_distributor.c | 64 +++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/test/test/test_distributor.c b/test/test/test_distributor.c index 85cb8f3..6059a0c 100644 --- a/test/test/test_distributor.c +++ b/test/test/test_distributor.c @@ -45,6 +45,13 @@ #define BURST 32 #define BIG_BATCH 1024 +struct worker_params { + char name[64]; + struct rte_distributor *dist; +}; + +struct worker_params worker_params; + /* statics - all zero-initialized by default */ static volatile int quit; /**< general quit variable for all threads */ static volatile int zero_quit; /**< var for when we just want thr0 to quit*/ @@ -81,7 +88,9 @@ static int handle_work(void *arg) { struct rte_mbuf *pkt = NULL; - struct rte_distributor *d = arg; + struct worker_params *wp = arg; + struct rte_distributor *d = wp->dist; + unsigned count = 0; unsigned id = __sync_fetch_and_add(&worker_idx, 1); @@ -107,8 +116,9 @@ handle_work(void *arg) * not necessarily in the same order (as different flows). */ static int -sanity_test(struct rte_distributor *d, struct rte_mempool *p) +sanity_test(struct worker_params *wp, struct rte_mempool *p) { + struct rte_distributor *d = wp->dist; struct rte_mbuf *bufs[BURST]; unsigned i; @@ -249,7 +259,8 @@ static int handle_work_with_free_mbufs(void *arg) { struct rte_mbuf *pkt = NULL; - struct rte_distributor *d = arg; + struct worker_params *wp = arg; + struct rte_distributor *d = wp->dist; unsigned count = 0; unsigned id = __sync_fetch_and_add(&worker_idx, 1); @@ -270,8 +281,9 @@ handle_work_with_free_mbufs(void *arg) * library. */ static int -sanity_test_with_mbuf_alloc(struct rte_distributor *d, struct rte_mempool *p) +sanity_test_with_mbuf_alloc(struct worker_params *wp, struct rte_mempool *p) { + struct rte_distributor *d = wp->dist; unsigned i; struct rte_mbuf *bufs[BURST]; @@ -305,7 +317,8 @@ static int handle_work_for_shutdown_test(void *arg) { struct rte_mbuf *pkt = NULL; - struct rte_distributor *d = arg; + struct worker_params *wp = arg; + struct rte_distributor *d = wp->dist; unsigned count = 0; const unsigned id = __sync_fetch_and_add(&worker_idx, 1); @@ -344,9 +357,10 @@ handle_work_for_shutdown_test(void *arg) * library. */ static int -sanity_test_with_worker_shutdown(struct rte_distributor *d, +sanity_test_with_worker_shutdown(struct worker_params *wp, struct rte_mempool *p) { + struct rte_distributor *d = wp->dist; struct rte_mbuf *bufs[BURST]; unsigned i; @@ -401,9 +415,10 @@ sanity_test_with_worker_shutdown(struct rte_distributor *d, * one worker shuts down.. */ static int -test_flush_with_worker_shutdown(struct rte_distributor *d, +test_flush_with_worker_shutdown(struct worker_params *wp, struct rte_mempool *p) { + struct rte_distributor *d = wp->dist; struct rte_mbuf *bufs[BURST]; unsigned i; @@ -480,8 +495,9 @@ int test_error_distributor_create_numworkers(void) /* Useful function which ensures that all worker functions terminate */ static void -quit_workers(struct rte_distributor *d, struct rte_mempool *p) +quit_workers(struct worker_params *wp, struct rte_mempool *p) { + struct rte_distributor *d = wp->dist; const unsigned num_workers = rte_lcore_count() - 1; unsigned i; struct rte_mbuf *bufs[RTE_MAX_LCORE]; @@ -536,28 +552,34 @@ test_distributor(void) } } - rte_eal_mp_remote_launch(handle_work, d, SKIP_MASTER); - if (sanity_test(d, p) < 0) + worker_params.dist = d; + sprintf(worker_params.name, "single"); + + rte_eal_mp_remote_launch(handle_work, &worker_params, SKIP_MASTER); + if (sanity_test(&worker_params, p) < 0) goto err; - quit_workers(d, p); + quit_workers(&worker_params, p); - rte_eal_mp_remote_launch(handle_work_with_free_mbufs, d, SKIP_MASTER); - if (sanity_test_with_mbuf_alloc(d, p) < 0) + rte_eal_mp_remote_launch(handle_work_with_free_mbufs, &worker_params, + SKIP_MASTER); + if (sanity_test_with_mbuf_alloc(&worker_params, p) < 0) goto err; - quit_workers(d, p); + quit_workers(&worker_params, p); if (rte_lcore_count() > 2) { - rte_eal_mp_remote_launch(handle_work_for_shutdown_test, d, + rte_eal_mp_remote_launch(handle_work_for_shutdown_test, + &worker_params, SKIP_MASTER); - if (sanity_test_with_worker_shutdown(d, p) < 0) + if (sanity_test_with_worker_shutdown(&worker_params, p) < 0) goto err; - quit_workers(d, p); + quit_workers(&worker_params, p); - rte_eal_mp_remote_launch(handle_work_for_shutdown_test, d, + rte_eal_mp_remote_launch(handle_work_for_shutdown_test, + &worker_params, SKIP_MASTER); - if (test_flush_with_worker_shutdown(d, p) < 0) + if (test_flush_with_worker_shutdown(&worker_params, p) < 0) goto err; - quit_workers(d, p); + quit_workers(&worker_params, p); } else { printf("Not enough cores to run tests for worker shutdown\n"); @@ -572,7 +594,7 @@ test_distributor(void) return 0; err: - quit_workers(d, p); + quit_workers(&worker_params, p); return -1; }