From patchwork Fri Jan 13 13:50:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiale, SongX" X-Patchwork-Id: 122001 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 6A48A423BE; Fri, 13 Jan 2023 06:52:37 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3FBC9410EF; Fri, 13 Jan 2023 06:52:37 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 8F1DE410D4 for ; Fri, 13 Jan 2023 06:52:35 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1673589155; x=1705125155; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=f6pAjZvC0CT01b+j40uNQ+bZWvAFoddZJ/hC2fjWII4=; b=kQgruv19P+CjUG5CpTG7oJ9BOzMx4l9D0CuzGT+I135tJyKCvaokwasa z8AVh0ptFygH9/7MceKAx7V1G1CDEjn7Oskd7CU3DiutIS2eA6MO4qjC9 w1/QP6fkuDqcBNcTG2LfKbR7R1fVj8KX9B9KRjiaYef2RKjG1N+LHE7kc QjIlzLqIgwOZ0mTydUM5l7ARQF85visPybpUWTjVQRPHRT0A56ctSkp8m ixarrtoIUgTnJ/WDkaNh6Okg6CO/j5izWrKQutzQ+W5EctmXndzsZ4Asj uFNG7uRjOksTY4rvk2wqK9vT3Y/ntKPg202sUDOIOO5Ge+KGlTRr2cSTK Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10588"; a="323980546" X-IronPort-AV: E=Sophos;i="5.97,213,1669104000"; d="scan'208";a="323980546" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2023 21:52:34 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10588"; a="688629949" X-IronPort-AV: E=Sophos;i="5.97,213,1669104000"; d="scan'208";a="688629949" Received: from unknown (HELO localhost.localdomain) ([10.239.252.20]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2023 21:52:33 -0800 From: Song Jiale To: dts@dpdk.org Cc: Song Jiale Subject: [dts] [PATCH V1 1/2] tests/*interrupt_pmd: transfer test cases Date: Fri, 13 Jan 2023 13:50:14 +0000 Message-Id: <20230113135015.1317296-1-songx.jiale@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 transfer pf cases from vf_interrupt_pmd suite to interrupt_pmd suite. cases list: test_nic_interrupt_PF_vfio_pci test_nic_interrupt_PF_igb_uio Signed-off-by: Song Jiale --- tests/TestSuite_interrupt_pmd.py | 96 ++++++++++++++++++++++++++--- tests/TestSuite_vf_interrupt_pmd.py | 53 +--------------- 2 files changed, 91 insertions(+), 58 deletions(-) diff --git a/tests/TestSuite_interrupt_pmd.py b/tests/TestSuite_interrupt_pmd.py index 2b77e052..311b5751 100644 --- a/tests/TestSuite_interrupt_pmd.py +++ b/tests/TestSuite_interrupt_pmd.py @@ -11,7 +11,8 @@ import string import time import framework.utils as utils -from framework.test_case import TestCase +from framework.packet import Packet +from framework.test_case import TestCase, skip_unsupported_host_driver class TestInterruptPmd(TestCase): @@ -22,9 +23,14 @@ class TestInterruptPmd(TestCase): self.dut_ports = self.dut.get_ports(self.nic) self.verify(len(self.dut_ports) >= 2, "Insufficient ports") - cores = self.dut.get_core_list("1S/4C/1T") + self.ports_socket = self.dut.get_numa_id(self.dut_ports[0]) + self.core_list = self.dut.get_core_list("1S/4C/1T", socket=self.ports_socket) self.eal_para = self.dut.create_eal_parameters(cores="1S/4C/1T") - self.coremask = utils.create_mask(cores) + + userport = self.tester.get_local_port(self.dut_ports[0]) + self.tport_iface = self.tester.get_interface(userport) + self.tx_mac = self.tester.get_mac(userport) + self.rx_mac = self.dut.get_mac_address(self.dut_ports[0]) self.path = self.dut.apps_name["l3fwd-power"] @@ -76,12 +82,36 @@ class TestInterruptPmd(TestCase): """ pass + def begin_l3fwd_power(self, use_dut, cmd, timeout=60): + """ + begin l3fwd-power + """ + try: + self.logger.info("Launch l3fwd_sample sample:") + use_dut.send_expect(cmd, " Link up", timeout=timeout) + except Exception as e: + self.dut.kill_all() + self.verify( + False, "ERROR: Failed to launch l3fwd-power sample: %s" % str(e) + ) + + def send_packet(self, mac, tport_iface, use_dut): + """ + Send a packet and verify + """ + res = self.tester.is_interface_up(tport_iface) + self.verify(res, "tester port %s link status is down" % tport_iface) + pkt = Packet(pkt_type="UDP") + pkt.config_layer("ether", {"dst": mac, "src": self.tx_mac}) + pkt.send_pkt(self.tester, tx_port=tport_iface) + self.out2 = use_dut.get_session_output(timeout=2) + def test_different_queue(self): cmd = "%s %s -- -p 0x3 -P --config='(0,0,1),(1,0,2)' " % ( self.path, self.eal_para, ) - self.dut.send_expect(cmd, "L3FWD_POWER", 60) + self.begin_l3fwd_power(self.dut, cmd) portQueueLcore = self.trafficFlow["Flow1"] self.verifier_result(2, 2, portQueueLcore) @@ -92,7 +122,7 @@ class TestInterruptPmd(TestCase): "%s %s -- -p 0x3 -P --config='(0,0,0),(0,1,1),(0,2,2),(0,3,3),(0,4,4)' " % (self.path, eal_para) ) - self.dut.send_expect(cmd, "L3FWD_POWER", 120) + self.begin_l3fwd_power(self.dut, cmd) portQueueLcore = self.trafficFlow["Flow2"] self.verifier_result(20, 1, portQueueLcore) @@ -106,10 +136,62 @@ class TestInterruptPmd(TestCase): % (self.path, eal_para) ) - self.dut.send_expect(cmd, "L3FWD_POWER", 60) + self.begin_l3fwd_power(self.dut, cmd) portQueueLcore = self.trafficFlow["Flow3"] self.verifier_result(40, 2, portQueueLcore) + def test_nic_interrupt_PF_vfio_pci(self): + """ + Check Interrupt for PF with vfio-pci driver + """ + eal_para = self.dut.create_eal_parameters(cores=self.core_list) + cmd = "%s %s -- -P -p 1 --config='(0,0,%s)'" % ( + self.path, + eal_para, + self.core_list[0], + ) + + self.begin_l3fwd_power(self.dut, cmd) + + self.send_packet(self.rx_mac, self.tport_iface, self.dut) + + self.verify( + "lcore %s is waked up from rx interrupt on port 0" % self.core_list[0] + in self.out2, + "Wake up failed", + ) + self.verify( + "lcore %s sleeps until interrupt triggers" % self.core_list[0] in self.out2, + "lcore %s not sleeps" % self.core_list[0], + ) + + @skip_unsupported_host_driver(["vfio-pci"]) + def test_nic_interrupt_PF_igb_uio(self): + """ + Check Interrupt for PF with igb_uio driver + """ + self.dut.setup_modules_linux(self.target, "igb_uio", "") + self.dut.ports_info[0]["port"].bind_driver(driver="igb_uio") + + eal_para = self.dut.create_eal_parameters(cores=self.core_list) + cmd = "%s %s -- -P -p 1 --config='(0,0,%s)'" % ( + self.path, + eal_para, + self.core_list[0], + ) + self.begin_l3fwd_power(self.dut, cmd) + self.send_packet(self.rx_mac, self.tport_iface, self.dut) + + self.verify( + "lcore %s is waked up from rx interrupt on port 0" % self.core_list[0] + in self.out2, + "Wake up failed", + ) + self.verify( + "lcore %s sleeps until interrupt triggers" % self.core_list[0] in self.out2, + "lcore %s not sleeps" % self.core_list[0], + ) + def verifier_result(self, num, portnum, portQueueLcore): self.scapy_send_packet(num, portnum) result = self.dut.get_session_output(timeout=5) @@ -150,7 +232,7 @@ class TestInterruptPmd(TestCase): """ Run after each test case. """ - pass + self.dut.kill_all() def tear_down_all(self): """ diff --git a/tests/TestSuite_vf_interrupt_pmd.py b/tests/TestSuite_vf_interrupt_pmd.py index 4f78aea0..4a84c917 100644 --- a/tests/TestSuite_vf_interrupt_pmd.py +++ b/tests/TestSuite_vf_interrupt_pmd.py @@ -13,7 +13,7 @@ import time import framework.utils as utils from framework.packet import Packet -from framework.test_case import TestCase, skip_unsupported_host_driver +from framework.test_case import TestCase from framework.virt_common import VM @@ -104,9 +104,7 @@ class TestVfInterruptPmd(TestCase): ) try: self.logger.info("Launch l3fwd_sample sample:") - self.out = use_dut.send_expect( - cmd_vhost_net, "Checking link statusdone", 60 - ) + self.out = use_dut.send_expect(cmd_vhost_net, "Link up", 60) if "Error" in self.out: raise Exception("Launch l3fwd-power sample failed") else: @@ -266,53 +264,6 @@ class TestVfInterruptPmd(TestCase): "lcore %s not sleeps" % self.core_user, ) - def test_nic_interrupt_PF_vfio_pci(self): - """ - Check Interrupt for PF with vfio-pci driver - """ - self.prepare_l3fwd_power(self.dut) - - self.dut.ports_info[0]["port"].bind_driver(driver="vfio-pci") - - self.begin_l3fwd_power(self.dut) - - self.send_packet(self.mac_port_0, self.rx_intf_0, self.dut) - - self.verify( - "lcore %s is waked up from rx interrupt on port 0" % self.core_user - in self.out2, - "Wake up failed", - ) - self.verify( - "lcore %s sleeps until interrupt triggers" % self.core_user in self.out2, - "lcore %s not sleeps" % self.core_user, - ) - - @skip_unsupported_host_driver(["vfio-pci"]) - def test_nic_interrupt_PF_igb_uio(self): - """ - Check Interrupt for PF with igb_uio driver - """ - self.prepare_l3fwd_power(self.dut) - - self.dut.setup_modules_linux(self.target, "igb_uio", "") - - self.dut.ports_info[0]["port"].bind_driver(driver="igb_uio") - - self.begin_l3fwd_power(self.dut) - - self.send_packet(self.mac_port_0, self.rx_intf_0, self.dut) - - self.verify( - "lcore %s is waked up from rx interrupt on port 0" % self.core_user - in self.out2, - "Wake up failed", - ) - self.verify( - "lcore %s sleeps until interrupt triggers" % self.core_user in self.out2, - "lcore %s not sleeps" % self.core_user, - ) - def test_nic_multi_queues_interrupt_VF_vfio_pci(self, driver="default"): """ Check Interrupt for VF with vfio driver, need test with i40e driver