From patchwork Thu May 18 05:51:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yu Jiang X-Patchwork-Id: 126974 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 861CB42B35; Thu, 18 May 2023 07:52:08 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 820BA42B71; Thu, 18 May 2023 07:52:08 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id C45CD40E25 for ; Thu, 18 May 2023 07:52:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684389127; x=1715925127; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=Wqsx0FSkZfHXesxYkcb5ku0hx8hbJXhjy0Pr0Vmhu+w=; b=VAPznc2EHj+s2QAbosj5b515HTnmS65kJrcpVhcJH4LZUT4S+J2BJeyd jnIx5WWuuPub2n/Z+Y/A12bGXLArFFTfdxjrgLY3imP9KZ3Z3BZPHYJT7 Zz+P9KnmpPMTqN171UrRV/dQvMGVjwoI56OfboFb1BGY1aX9u24QTgBuN 2HfSApyPa8grjAdY8yXQj9qgPDmBdcSjY7pOW015Rvsd/CYMH3OrXkHEw 49C5JR4n258CLCLxOKt2ZfM0DtJ33Lr0zpSnyBmYCQIm5lD5RgqJTwa5Z JVSy08qKOwIewxiInH0+8DSTsUAAFHd9+7jfXNKsrzVh24GEt9Glyte4z w==; X-IronPort-AV: E=McAfee;i="6600,9927,10713"; a="331589506" X-IronPort-AV: E=Sophos;i="5.99,284,1677571200"; d="scan'208";a="331589506" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 May 2023 22:51:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10713"; a="702027892" X-IronPort-AV: E=Sophos;i="5.99,284,1677571200"; d="scan'208";a="702027892" Received: from unknown (HELO localhost.localdomain) ([10.239.252.196]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 May 2023 22:51:48 -0700 From: Yu Jiang To: lijuan.tu@intel.com, dts@dpdk.org Cc: Yu Jiang Subject: [dts][PATCH V2] tests/meson_tests: split test_args in conf/meson_tests.cfg and add -a param and save meson test log Date: Thu, 18 May 2023 13:51:46 +0800 Message-Id: <20230518055146.2027779-1-yux.jiang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org 1, add "-a" param to avoid conflict when running in container. 2, save detailed /root/dpdk/<>/meson-logs/testlog.txt to dts/output. Signed-off-by: Yu Jiang Reviewed-by: Lijuan Tu --- V2: format and optimize script. --- conf/meson_tests.cfg | 3 ++- tests/TestSuite_meson_tests.py | 49 +++++++++++++++++++++++++--------- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/conf/meson_tests.cfg b/conf/meson_tests.cfg index 5fefed5a..d6cb8359 100644 --- a/conf/meson_tests.cfg +++ b/conf/meson_tests.cfg @@ -38,4 +38,5 @@ driver-tests = "" debug-tests = "" extra-tests = "" perf-tests = "" -param = "-t 24 --test-args '-c 0xff' --num-processes 20 " +test_args = "-c 0xff" +other_param = "-t 24 --num-processes 20 " diff --git a/tests/TestSuite_meson_tests.py b/tests/TestSuite_meson_tests.py index a0bba9b0..eb42972d 100644 --- a/tests/TestSuite_meson_tests.py +++ b/tests/TestSuite_meson_tests.py @@ -28,6 +28,7 @@ class TestMesonTests(TestCase): # -t 2 self.ratio = 6 self.dut_pathlog = "fast-test.log" + self.testlog = "" self.execute_wait_time = self.ratio * self.timeout * 10 # skip scope self.SKIP_SCOPE = "" @@ -35,6 +36,7 @@ class TestMesonTests(TestCase): self.base_output = os.path.join( os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "output" ) + self.dut_ports = self.dut.get_ports() def set_up(self): """ @@ -99,17 +101,30 @@ class TestMesonTests(TestCase): self.verify(False, f"Test failed. {sub_fail}{sub_timeout}") def meson_param(self, case_name): + # add -a param when running in container + test_args = self.get_suite_cfg().get("test_args", "") + if self.dut_ports: + for port in self.dut_ports: + test_args += " -a {}".format( + self.dut.get_port_pci(self.dut_ports[port]) + ) return ( self.get_suite_cfg().get(case_name, "") + " " - + self.get_suite_cfg().get("param", "") + + self.get_suite_cfg().get("other_param", "") + + " --test-args '{}'".format(test_args) ) - def copy_file_from_dut(self): + def copy_file_from_dut(self, case_name): if os.path.exists(os.path.join(self.base_output, self.dut_pathlog)): os.remove(os.path.join(self.base_output, self.dut_pathlog)) src_pathlog = f"/tmp/{self.dut_pathlog}" self.dut.session.copy_file_from(src_pathlog, self.base_output) + if self.testlog: + tester_pathlog = ( + self.base_output + "/" + "{}_mesontest.log".format(case_name) + ) + self.dut.session.copy_file_from(self.testlog, tester_pathlog) def insmod_kni(self): out = self.dut.send_expect("lsmod | grep rte_kni", "# ") @@ -142,8 +157,10 @@ class TestMesonTests(TestCase): # config test case list in conf/meson_tests.cfg cmds = f"meson test -C {self.target} --suite DPDK:fast-tests {param} |tee /tmp/{self.dut_pathlog}" out = self.dut.send_expect(cmds, "# ", self.execute_wait_time) - self.logger.info(out) - self.copy_file_from_dut() + # Full log written to /root/dpdk/<>/meson-logs/testlog.txt + self.testlog = re.search(r"Full log written to (\S+)", out).groups()[0] + self.logger.info(self.testlog) + self.copy_file_from_dut("fast-tests") self.check_meson_test_result() def test_driver(self): @@ -153,8 +170,10 @@ class TestMesonTests(TestCase): self.delete_exists_files() cmds = f"meson test -C {self.target} --suite DPDK:driver-tests {param} |tee /tmp/{self.dut_pathlog}" out = self.dut.send_expect(cmds, "# ", self.execute_wait_time) - self.logger.info(out) - self.copy_file_from_dut() + # Full log written to /root/dpdk/<>/meson-logs/testlog.txt + self.testlog = re.search(r"Full log written to (\S+)", out).groups()[0] + self.logger.info(self.testlog) + self.copy_file_from_dut("driver-tests") self.check_meson_test_result() def test_debug(self): @@ -164,8 +183,10 @@ class TestMesonTests(TestCase): self.delete_exists_files() cmds = f"meson test -C {self.target} --suite DPDK:debug-tests {param} |tee /tmp/{self.dut_pathlog}" out = self.dut.send_expect(cmds, "# ", self.execute_wait_time) - self.logger.info(out) - self.copy_file_from_dut() + # Full log written to /root/dpdk/<>/meson-logs/testlog.txt + self.testlog = re.search(r"Full log written to (\S+)", out).groups()[0] + self.logger.info(self.testlog) + self.copy_file_from_dut("debug-tests") self.check_meson_test_result() def test_extra(self): @@ -175,8 +196,10 @@ class TestMesonTests(TestCase): self.delete_exists_files() cmds = f"meson test -C {self.target} --suite DPDK:extra-tests {param} |tee /tmp/{self.dut_pathlog}" out = self.dut.send_expect(cmds, "# ", self.execute_wait_time) - self.logger.info(out) - self.copy_file_from_dut() + # Full log written to /root/dpdk/<>/meson-logs/testlog.txt + self.testlog = re.search(r"Full log written to (\S+)", out).groups()[0] + self.logger.info(self.testlog) + self.copy_file_from_dut("extra-tests") self.check_meson_test_result() self.logger.warning( "Extra-tests are know issues which are recorded in DPDK commit and meson.build (detail see test plan)" @@ -190,8 +213,10 @@ class TestMesonTests(TestCase): self.delete_exists_files() cmds = f"meson test -C {self.target} --suite DPDK:perf-tests {param} |tee /tmp/{self.dut_pathlog}" out = self.dut.send_expect(cmds, "# ", self.execute_wait_time) - self.logger.info(out) - self.copy_file_from_dut() + # Full log written to /root/dpdk/<>/meson-logs/testlog.txt + self.testlog = re.search(r"Full log written to (\S+)", out).groups()[0] + self.logger.info(self.testlog) + self.copy_file_from_dut("perf-tests") self.check_meson_test_result() def tear_down(self):