From patchwork Sun May 28 19:58:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 24817 X-Patchwork-Delegate: jerinj@marvell.com 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 40C4A7CB8; Sun, 28 May 2017 22:00:40 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0077.outbound.protection.outlook.com [104.47.41.77]) by dpdk.org (Postfix) with ESMTP id 5D5767CB0 for ; Sun, 28 May 2017 22:00:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=6NMHmupcDSW31k70ncI2khBxO+OBbwoJvGerW82G3I8=; b=ZF6J4xcTzctNYFMCU8VbEQjJGeGBNf6IQnY4ANc8BhIN7WxWtolzBSfI4UaRxohX3g8FeA9VYbqmFBRSIM4VwabOHKRphz6CnV6slgyxrIt/kZXwJQhaW0h4G3BEfKhYsOiIQjbNBqPf671w6Iu2/bD6OxxlM7eRLZDbgBt2J74= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=caviumnetworks.com; Received: from jerin.domain.name (111.93.218.67) by CY1PR0701MB1725.namprd07.prod.outlook.com (10.163.21.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Sun, 28 May 2017 20:00:33 +0000 From: Jerin Jacob To: dev@dpdk.org Cc: bruce.richardson@intel.com, harry.van.haaren@intel.com, hemant.agrawal@nxp.com, gage.eads@intel.com, nipun.gupta@nxp.com, narender.vangati@intel.com, nikhil.rao@intel.com, gprathyusha@caviumnetworks.com, Jerin Jacob Date: Mon, 29 May 2017 01:28:31 +0530 Message-Id: <20170528195854.6064-11-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170528195854.6064-1-jerin.jacob@caviumnetworks.com> References: <20170528195854.6064-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BMXPR01CA0003.INDPRD01.PROD.OUTLOOK.COM (10.174.214.141) To CY1PR0701MB1725.namprd07.prod.outlook.com (10.163.21.14) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY1PR0701MB1725: X-MS-Office365-Filtering-Correlation-Id: b6a12f54-dc74-4a78-9263-08d4a6043540 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:CY1PR0701MB1725; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 3:RWV9+LQ1HtTZlYYTUFmeJ2GAdvfXLzJa2CrBa5gsMZjXF4MOd30a0/j2s1JyhR9FfUF/dj/4hRoS/cVq5Z8mFjzoHxXnpdVbnKa8ZKsZ+o/fi4Xq79/Wa4Ou+D11Ir7Awo+H6JbDS5H1S66W2umbUnGaDw88ecyhrPl7zcIcIRvwyU5eMrxVpl5MdT2Ktrrxsc8lABQ5kAH5cL7QAqnUqzAO+AcXZhnI1gHkyAAJfOrggoq8Blmz/qlb22bVbC9eExnVSu8NwnQXaoQWIO2Og8JcHA4VJljHVtKlSsWX8t4jw57CV4LiG2wXGO3d4RYZRPKcUQQ7aJ/dl1peJTVXWA==; 25:4Fan+i7jc02THK2/uJNMz51vThsHvwLc3GuGf416GB0DA+qpAkgo91DOGEmqulcyml3WN5CNGxQW6nN5+A2Dz2AGClPZ+PJ3lkHx0m0Ysap6v56QC2t/DE1yrQBO7JFuZtK95xgIUoCKaxjV+1FCRu1U35rNrSZ32Y9FS+UjrlaboddLnO3vtuc5XrUYw4K6nrwIqrsLpubM5TlCYAc+SSND5qU8GLoIHVqeNiCg9kxk+bFU4CD6KsEEiK728RM8EULC1k1kfk+LWCPvguD1r9EgCCnw91G+3+JRxElMPaWJCn+16CIivaACXWktNP5+3+OgMHja0HGWoof+icXuuzPlFil/bEpl4YkTlG1TyPW1QeN1dQhhPhltSF5Dy6lZuWGoBpB0R6ncv7A/3mJX04wkYMBi/OZ+TknXbXKZvAj6T6iBAaawuif5/7IgD6e6BsfyMdtNOOCcgXeIWXCcGKrovUbkj5JCTmB0AjTycEY= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 31:N7i02on3r/q+IrSiESU/aIuaR9XW0TfkE/3vg40b/zBRETnLdj3s6fm1uZFvcTv4uABEMXE07GhFChFaB2IZlgdulVYdLPpzledP0TD+9T/Ulggibu6RVehPMpC7yxLce0YVV7x2+fUg7sC6JvR6u9vF8hqifZ1IYPp3Xa2yXllMu/YLHtXCWQVnU07i9N+rOW3yREp0cQyod9LVJcaxOr+FG0utYwnwq4RAHFVPDHQ=; 20:z6Tf7v2Ezf2wnXz55rLvsspSAlvTTVoljkwMfO6CA0v2Empb6UWD/ji4tem7c5HNKQ5NU+MukJ31E7qgn5Jk1BoLl8NArpsS6uBBrviF2Sy1i73Tr24Vj/12af4jxoa89NLBcogtMCOXSfZjqv9/Sq59KkYgOeHnaf8+0woBGFKsSEsBy/7EUug6Il51AjoPy6kUu7PONQva62kGHsTJZpn2/4+I+WH6s25s0xMicDaxVtvXKZw9/VmmLvd6PEt0RJ6+T2PmFwP1iNKIlCpeMpGryTREUBN03u6kwfRcRCR4b8P4usjHKNmMyI/0IUhtHypa8cuKkD+rBFE3CENwLD1Okc1HL0DPGos0qzfSvBc6NXzdtntupcHHTykgmM/HuHXejM0k6y611DZYdmWHzbwq2mRp2o1JYQWkgWY8STk4HFMUEKEDjpt/lA3Vt/y5TQipPY3lFOuDJDBG2a3f+8qMaAF9HF95XoVFaMFk/2uoc6cQlJFx7SBn67h852AaCm3O8n7wvz8+xrTcErL881n7DCay03EV8H4xStnXXRiq7+4uiLYkTSKVVbqd0b2yk4eLu6IpV08kunVv2c8groHaIIku25mNkuaRLCGloVw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700073)(100105000095)(100000701073)(100105300095)(100000702073)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(100000703073)(100105400095)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(100000704073)(100105200095)(100000705073)(100105500095); SRVR:CY1PR0701MB1725; BCL:0; PCL:0; RULEID:(100000800073)(100110000095)(100000801073)(100110300095)(100000802073)(100110100095)(100000803073)(100110400095)(100000804073)(100110200095)(100000805073)(100110500095); SRVR:CY1PR0701MB1725; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0701MB1725; 4:G6tqae39Bq22KMeZc60MgekuBqebmxbbPmjTVciw?= bCVDQFydNqL8DTQBSIsoQs2bmA526LoldoqQVBJb4hInBwnoH8hu9yzHyL6Fc5N3yWDnjZPu8RDEB6dbm2oyI5ObagvxGLvXj3LIQzBCfgPRTtDCEavkOpItezF9hHuLq99bvkPSL/uMiyQLR1Wbiw98uBMiIDHsHn4V0u+MAXhSonRGnvDmhpKgcffbhfOOu8F+ZX85IqaEHjBTqqTUwylPZQM4S9IRlI+mJTPQY2KXrEAnXk7WGqxMTb/8A6qcrNGJrIoXs8JQAMwEAumirNeUZYjlBv4+sztInWDXf2JJII+Lp5Smmj9vU1/uAmD6VH7+tb/S85CJlnUNDTh1iOyUHQuBdwq4nAI2dq/xyZE+HMnh1jgPWg4QXT58b22zc6DFTRipGi9p9DXISBUp56dJ2VBC80OkRs5NRYLg5SbPPHy1qnFUycCTPNKZPC5JBjjcfoJBjK3TI9j4nrcc43tDV8/W8hkhFritDT0a/z/1aAdqfkLSzQ9XkJ1xSQDvHcoE+d6kG2OhMK4OnRsfo5i5s1OeiVvzZBHTrGmtdk10lbWu3cDqxV9LpTkDFgD5hsnpP0OLNKMKq/ZX+gSrButvMmDHt1EOTMSLrFu5snsQ/yztKAxcxz5LXCYcH7t1TrQvKQ1h8J4go+j00B/WyG2BlfR66PFK0steYFS96ukYIcDtddvsA5PPwNwBx/NENzT5955XeNOG6g/hRQ+kDiyw6a/R+i6ve8NXaBBd059G+gXiZ/x+SkrvUjWewSuG1AonDyPpOZQWZGvlDGdzWpCo9JaTzgq2nr4D21dgaZbNm4DEKa+sFA53qMALpfHzrHK0L3ZJx7UEChsbQrW01zaZaHkhehb/4oy3Ec0QdU1GyTGERyXHKT28oBql2nRaK4Kekmcon1Woc2Q3pXOrrBn1sL7jGbADvvY9OSiIPYDZNEbe4HYbodeWCak2wLZXczTKkirK7SLFkarxpm1nSCv3xmkJUWjS8yTON6mLuP/Ws4dBgbLxBFPxw4Ti93ZTRDc6d0IZLtIpaHp0UpUgwjwqmDK3jGkQWdKGxXIrsK6HC5Pg6+A3Q94HuIQiLcKrL74= X-Forefront-PRVS: 03218BFD9F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(979002)(6009001)(39450400003)(39850400002)(39410400002)(39840400002)(39400400002)(81166006)(6486002)(66066001)(4326008)(50986999)(76176999)(50226002)(189998001)(72206003)(36756003)(6506006)(38730400002)(5003940100001)(5009440100003)(110136004)(107886003)(42186005)(53416004)(7736002)(8676002)(48376002)(50466002)(1076002)(3846002)(6116002)(575784001)(6512007)(2361001)(305945005)(2906002)(478600001)(25786009)(5660300001)(2351001)(6916009)(42882006)(2950100002)(33646002)(8656002)(47776003)(53936002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0701MB1725; H:jerin.domain.name; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0701MB1725; 23:7vRf1Rc8Hxip+3oYJC55DfNr57mwkFebdMVfbl9?= bIchntAd/4JJwRmTnYYowrnIpyAQF3Mt30XwUZWSPbGHhkEmnQ9Dsk9nw1SOLKQq9BlWpfkpMi3JpIfiH5Z8bbWkPdc2esTTUF5nRom23m2H15WWB/9jbIIUS2OkSQN75dDwY1XJoEhuN1XQ1cnO50F1pp8Blr/OnL8T8ogjT6EApHCA3UDde9EPprI8W+8LxrnsvNr3IiBBHHB9o729NaY1fuRzVDF3k+4vLDM7xheSyxX/SLDC5JCCyJFppydkkTekR6f+/WJaRBVjsBwrQetAOGodYTBm9Rw5hjVtEaJaOJ411m+UqcgKytSym1viD3k52nZPz1iWvzujxgzUD5QXeTaZb0XJPKANN7DoT5EebnoQ9yqD+UKGsmF2DtbQ+e/4TfmY6DteY9JdVsNfkTLkZ5ievjdkr0CkyoVoDVc6WbKrw9wX+sBeP3lin39vM4dJ86J6+FR2wZoaaFlF1M+BS0xJ2q1/wQ/5CKrkFBdMhzupvL2wpzkyXyYxI9HFq3ZzXJmvz0sMm5DSX/tuO/Pc+RJ+KwLo3H3wfdY+kLVtJqWtQC0vAKb2uiyNVaz1c+BrLJjsfxlB5hu+dbeo6PBGdN3rYkc1U3sCK8fnNaSpqW/9Jb8EO/5W7Vfi/qmX2HDZ3WUYYi198h9oUz8AE0jHiOe3rT9EjJtbXQ5iLBReDtSa7S+4JuNwdMEQuvZ6Sk/NBv9voR1HRiozCnKv0OC6RuoNbD0+9lj3Lsu2A+Ebw6UJRZhbgi63bz3IciNMujeBlWUDQu9bT6YyTzicuCBLpHNfKr18jxSXmut3GnSeB4niuMOJYqPnsLduh50Mt6geUYfOJ326LVXiN1UDFIpm26XHwQKwNmxDy4d6u4ZoV22rSDIq9X7OQD8NLovrCFDK4/sCiyeimiaBYjKwkaqOYjKAIFbU5sazTAFuZJGPr0CjpYstwLz7wVDqNQtl44f1+hXTiIi5E2cEuuvDrb1EK7pgGWI+XJT1FO6738fPy+8QnFax3QfwOXQH2WcU0MxynvoEwG79Hi7zS3loqXQNCsuifKRbiTxZT9qC9Y1ow+iyEZh652towyorsPYjzubX+eQPmgqnZuL3nAWSCbPo/+47UtLF2+6gVZoiSHzbvLUQb6nZIyNN6cPRS9NsN+YfDxJhDk8JsCSN4/WkfSgpUCRQi1Zl5NZVg5zZ8H/zrozQV1SsODR1IwapQ0Dd+kQwH2lAdvzMX7Do3txTWDIMpeNeXKQMDFenvBsvFq8quww== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 6:meDPWo6JXOs1g5FJTgJgsxQ3b5zxoiIjCh6/Eps9VJJfnXm9ORqbqJkOrUhYGKAlBH3urd5F4/BlfNrpK76VTPFgwMk+e/CuYaOKiSVbtXsRUgZ85D6b3zatGcdeD44ONf9rgV83hXvTMHo1PClrc8576jEOxgHmdtGW4cCD7MYAcWyUsJNHTMvKLxokG4UDvvmXqOjrdvkJ3DUW/Lfw/yEizOiDFCD7eZuzu+LDvT6oQmD42g/RUALM16O3xu36PItoRve61y3V7gAopFJ/nJcfTs7Y0dIWrIImRwwS+esmV3FrYYdU7BQg2me0DCLVkkBFSFoYYl/2mtNW8OFVV5v+P6K2um2Qu8aMZVvconxXklUsIZUXWrd9r7U29JTDS3XMRk+Wstn3QdC61p5HR1b6OcofwZJY73iJ52m1MOJvFlndrn/jdkd+P+w96YFVL1J4q6DLotOaH/33rhzExFoaDhNMI83oEqeGdRejjM5XLVE6rwZDiFiF93u+Znp1PjmIHyBUJ1ooh1D0HpRbdg== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 5:Vx7xTDdGCzeT+DHZKAC3wv+A8deC3glzG6HMPIIV5I3uZ/ltj1OCrs+SXD5GAtYGxq03grc1DCExMS3KV0GRl6zwIDRFHDd/PsL/9vSmPxn7fuL8QCljwTIq6L7Dods8b6Mx4ylDUEmv1+NbDC3iK3j/UESRXP//hsvsJowzDxdzDx1gQCCKxGirCW54xm16UH+Ib8Xdgrd00Sj5cxijjELcNF2Q2BlkNPTWU4k1X3id79+VjJuGSWo49oVE7EO7R/RAeuz5m0c0M7bxsAAZ9uMBqY4yd9ECwc5+4D5v5lzBmEfn9s9u/vFYtiFWpXC6Om2+2HYE7yQckhgjZWW7kkspkfAKEmXKeKgDFyr+lQ1lmQ6+zIj8OBUC1sbpgk4Ck4FuA4JSt3m81BVaxmcVH2C4NXqUSgeOQHe1dnBfd7KClIjW/FpoRG7A5xutDuC+3sXgorl1f58ontj3+4mZQDCvnB3sj3Rvrn04a8ht2ygg9Si9BV1hHyZvz2ByNJV9; 24:Hb+5NXSmW78iCZwRN085OQvfUKioLoyq6J+oeJwgZrr+BJnIzicXGSjP/xKHpaBKk6QWGtL47w1yG4e6XtqcS8ol8MKbzY/6z+EvkaEdkxM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 7:tl2nNwEkC1pbizn81aOzctOIV0iBZdxVBmE6JHYvmcwflIwSePtnTE7q2Ex4YzjsU9CXpAbdt5SavEqM3ixRBlNOlQvuSM3E+N1DS0jDLDkJOTuFGTCcQPCuZl5gVUb/PYGlxSfApIMvoh4wVdHQ8LP9VwBPkaRldVPR7ZkgCRr9IkW5Z8JTjnIeNV0sWM1vagUbN1zPnPVNdy5d+u1hhdD9A7wQgkc5jiYxbzRwJfLeHvdBVXmbPYHQY2RmrZje2LzwNEhTII5BJlRw/ZgW7tiY61yTw8YlS0bc6VhFPek+pu6mMi9QL032ffcSplwCsyeg/K9VdMVuIC7xEw+hhA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 May 2017 20:00:33.1546 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB1725 Subject: [dpdk-dev] [PATCH 10/33] app/testeventdev: invoke the test ops 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" This patch retrieves the test ops from the given test case name and invokes the registered test ops callbacks in order and print the test result. Signed-off-by: Jerin Jacob --- app/test-eventdev/evt_main.c | 136 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) diff --git a/app/test-eventdev/evt_main.c b/app/test-eventdev/evt_main.c index c076cdb62..27d0ae683 100644 --- a/app/test-eventdev/evt_main.c +++ b/app/test-eventdev/evt_main.c @@ -38,6 +38,21 @@ #include #include +#include "evt_options.h" +#include "evt_test.h" + +struct evt_options opt; +struct evt_test *test; + + +static inline void +evt_options_dump_all(struct evt_test *test, struct evt_options *opts) +{ + evt_options_dump(opts); + if (test->ops.opt_dump) + test->ops.opt_dump(opts); +} + int main(int argc, char **argv) { @@ -54,5 +69,126 @@ main(int argc, char **argv) if (!evdevs) rte_panic("no eventdev devices found\n"); + /* Populate the default values of the options */ + evt_options_default(&opt); + + /* Parse the command line arguments */ + ret = evt_options_parse(&opt, argc, argv); + if (ret) { + evt_err("parsing on or more user options failed"); + goto error; + } + + /* Get struct evt_test *test from name */ + test = evt_test_get(opt.test_name); + if (test == NULL) { + evt_err("failed to find requested test: %s", opt.test_name); + goto error; + } + + if (test->ops.test_result == NULL) { + evt_err("%s: ops.test_result not found", opt.test_name); + goto error; + } + + /* Verify the command line options */ + if (opt.dev_id >= rte_event_dev_count()) { + evt_err("invalid event device %d", opt.dev_id); + goto error; + } + if (test->ops.opt_check) { + if (test->ops.opt_check(&opt)) { + evt_err("invalid command line argument"); + evt_options_dump_all(test, &opt); + goto error; + } + } + + /* Check the eventdev capability before proceeding */ + if (test->ops.cap_check) { + if (test->ops.cap_check(&opt) == false) { + evt_info("unsupported test: %s", opt.test_name); + evt_options_dump_all(test, &opt); + ret = EVT_TEST_UNSUPPORTED; + goto nocap; + } + } + + /* Dump the options */ + if (opt.verbose_level) + evt_options_dump_all(test, &opt); + + /* Test specific setup */ + if (test->ops.test_setup) { + if (test->ops.test_setup(test, &opt)) { + evt_err("failed to setup test: %s", opt.test_name); + goto error; + + } + } + + /* Test specific mempool setup */ + if (test->ops.mempool_setup) { + if (test->ops.mempool_setup(test, &opt)) { + evt_err("%s: mempool setup failed", opt.test_name); + goto test_destroy; + } + } + + /* Test specific ethdev setup */ + if (test->ops.ethdev_setup) { + if (test->ops.ethdev_setup(test, &opt)) { + evt_err("%s: ethdev setup failed", opt.test_name); + goto mempool_destroy; + } + } + + /* Test specific eventdev setup */ + if (test->ops.eventdev_setup) { + if (test->ops.eventdev_setup(test, &opt)) { + evt_err("%s: eventdev setup failed", opt.test_name); + goto ethdev_destroy; + } + } + + /* Launch lcores */ + if (test->ops.launch_lcores) { + if (test->ops.launch_lcores(test, &opt)) { + evt_err("%s: failed to launch lcores", opt.test_name); + goto eventdev_destroy; + } + } + + rte_eal_mp_wait_lcore(); + + /* Print the test result */ + ret = test->ops.test_result(test, &opt); +nocap: + if (ret == EVT_TEST_SUCCESS) { + printf("Result: "CLGRN"%s"CLNRM"\n", "Success"); + } else if (ret == EVT_TEST_FAILED) { + printf("Result: "CLRED"%s"CLNRM"\n", "Failed"); + return EXIT_FAILURE; + } else if (ret == EVT_TEST_UNSUPPORTED) { + printf("Result: "CLYEL"%s"CLNRM"\n", "Unsupported"); + } + return 0; +eventdev_destroy: + if (test->ops.eventdev_destroy) + test->ops.eventdev_destroy(test, &opt); + +ethdev_destroy: + if (test->ops.ethdev_destroy) + test->ops.ethdev_destroy(test, &opt); + +mempool_destroy: + if (test->ops.mempool_destroy) + test->ops.mempool_destroy(test, &opt); + +test_destroy: + if (test->ops.test_destroy) + test->ops.test_destroy(test, &opt); +error: + return EXIT_FAILURE; }