From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DBF32A00C3; Tue, 19 Apr 2022 07:56:34 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AFDE74068E; Tue, 19 Apr 2022 07:56:34 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 6DF3140150 for ; Tue, 19 Apr 2022 07:56:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650347793; x=1681883793; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=+OXWQDgsMfePhItEWIjj0bTYRCysFYg2yGTUg9z9sUs=; b=FbHTLzXITIBZmm2/4pcrgcI4eXFB76ulIrmASh74vde+Z50BdDrkxTaM awctx6Uo4YBemn2l/CaXYIU5gD11ADjezljHyFyziNezrXnoqIhZUo5mB tom77Uwjiz0so3Wg5cLpI5G3VAG54GKcMaUousxvR/EkoB8QpXnDrgWBb IZIrtgJf59YtsuRtIbd/vBXM88sNT4Qw4YbtyVdwYobAIgtjgOjNCp/Ke TVDdIcucnLDBUud82llE86/NBOhxL87cn6DHKB4VgHEHXzaNyJODVnDes MO7rN3YiF4L+TMR0mOmLUPWm3gO18j6cprVtK9ZbKH9AyKnNbaBMFAvN7 A==; X-IronPort-AV: E=McAfee;i="6400,9594,10321"; a="261287055" X-IronPort-AV: E=Sophos;i="5.90,271,1643702400"; d="scan'208";a="261287055" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2022 22:56:32 -0700 X-IronPort-AV: E=Sophos;i="5.90,271,1643702400"; d="scan'208";a="529175203" Received: from unknown (HELO localhost.localdomain) ([10.239.251.222]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2022 22:56:30 -0700 From: Wei Ling To: dts@dpdk.org Cc: Wei Ling Subject: [dts][PATCH V1 2/2] tests/vdev_primary_secondary: add hutplut testcase2 Date: Tue, 19 Apr 2022 13:56:22 +0800 Message-Id: <20220419055622.943321-1-weix.ling@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 Add hutplut testcase2. Signed-off-by: Wei Ling --- tests/TestSuite_vdev_primary_secondary.py | 90 ++++++++++++++++++----- 1 file changed, 72 insertions(+), 18 deletions(-) diff --git a/tests/TestSuite_vdev_primary_secondary.py b/tests/TestSuite_vdev_primary_secondary.py index 7f054cda..e9f08d82 100644 --- a/tests/TestSuite_vdev_primary_secondary.py +++ b/tests/TestSuite_vdev_primary_secondary.py @@ -66,6 +66,7 @@ class TestVdevPrimarySecondary(TestCase): self.pci_info = self.dut.ports_info[0]["pci"] self.app_testpmd_path = self.dut.apps_name["test-pmd"] self.app_symmetric_mp_path = self.dut.apps_name["symmetric_mp"] + self.app_hotplug_mp_path = self.dut.apps_name["hotplug_mp"] self.testpmd_name = self.app_testpmd_path.split("/")[-1] def set_up(self): @@ -89,7 +90,7 @@ class TestVdevPrimarySecondary(TestCase): vm_params["opt_mac"] = "%s%d" % (self.virtio_mac, i + 2) vm_params["opt_queue"] = self.queues vm_params["opt_server"] = "server" - vm_params["opt_settings"] = "mrg_rxbuf=on,mq=on,vectors=%d" % ( + vm_params["opt_settings"] = "mrg_rxbuf=on,csum=on,mq=on,vectors=%d" % ( 2 * self.queues + 2 ) self.vm.set_vm_device(**vm_params) @@ -125,11 +126,13 @@ class TestVdevPrimarySecondary(TestCase): ) start_cmd = testcmd + eal_params + vdev1 + vdev2 + para self.dut.send_expect(start_cmd, "testpmd> ", 120) + + def send_packets_from_vhost(self): self.dut.send_expect("set fwd txonly", "testpmd> ", 120) self.dut.send_expect("start", "testpmd> ", 120) - def launch_examples(self): - example_cmd_auto = ( + def launch_symmetric_mp(self): + example_cmd_primary = ( self.app_symmetric_mp_path + " -l 0 -n %d --proc-type=auto -- -p 3 --num-procs=%d --proc-id=0" ) @@ -137,48 +140,99 @@ class TestVdevPrimarySecondary(TestCase): self.app_symmetric_mp_path + " -l 1 -n %d --proc-type=secondary -- -p 3 --num-procs=%d --proc-id=1" ) - final_cmd_first = example_cmd_auto % (self.mem_channels, self.queues) + final_cmd_primary = example_cmd_primary % (self.mem_channels, self.queues) final_cmd_secondary = example_cmd_secondary % (self.mem_channels, self.queues) - self.vhost_first.send_expect(final_cmd_first, "Lcore", 120) + self.vhost_primary.send_expect(final_cmd_primary, "Lcore", 120) time.sleep(3) self.vhost_secondary.send_expect(final_cmd_secondary, "Lcore", 120) + def launch_hotplug_mp(self): + example_cmd_primary = ( + self.app_hotplug_mp_path + + " -l 0 -n %d --proc-type=auto -- -p 3 --num-procs=%d --proc-id=0" + ) + example_cmd_secondary = ( + self.app_hotplug_mp_path + + " -l 1 -n %d --proc-type=secondary -- -p 3 --num-procs=%d --proc-id=1" + ) + final_cmd_primary = example_cmd_primary % (self.mem_channels, self.queues) + final_cmd_secondary = example_cmd_secondary % (self.mem_channels, self.queues) + self.vhost_primary.send_expect(final_cmd_primary, "example>", 120) + time.sleep(3) + self.vhost_secondary.send_expect(final_cmd_secondary, "example>", 120) + + def check_etherdev(self, dev_list): + primary_out = self.vhost_primary.send_expect("list", "example", 120) + for dev in dev_list: + self.verify(dev in primary_out, "dev {} not in the list") + secondary_out = self.vhost_secondary.send_expect("list", "example", 120) + for dev in dev_list: + self.verify(dev in secondary_out, "dev {} not in the list") + + def detach_etherdev_from_primary(self, dev_pci): + self.vhost_primary.send_expect("detach {}".format(dev_pci), "example", 120) + + def attach_etherdev_from_secondary(self, dev_pci): + self.vhost_secondary.send_expect("attach {}".format(dev_pci), "example", 120) + def prepare_symmetric_mp(self): out = self.vm_dut.build_dpdk_apps("./examples/multi_process/symmetric_mp") self.verify("Error" not in out, "compilation symmetric_mp error") + def prepare_hotplug_mp(self): + out = self.vm_dut.build_dpdk_apps("./examples/multi_process/hotplug_mp") + self.verify("Error" not in out, "compilation hotplug_mp error") + def close_session(self): - self.vm_dut.close_session(self.vhost_first) + self.vm_dut.close_session(self.vhost_primary) self.vm_dut.close_session(self.vhost_secondary) - def test_Virtio_primary_and_secondary_process(self): - # start testpmd + def test_virtio_primary_and_secondary_process(self): self.launch_testpmd() self.setup_vm_env() - # Modify code self.prepare_symmetric_mp() - # create 2 new session - self.vhost_first = self.vm_dut.new_session(suite="vhost_first") + self.vhost_primary = self.vm_dut.new_session(suite="vhost_primary") self.vhost_secondary = self.vm_dut.new_session(suite="vhsot_secondary") - # start symmetric_mp - self.launch_examples() + self.launch_symmetric_mp() + self.send_packets_from_vhost() time.sleep(3) - vhost_first_out = self.vhost_first.send_expect("^c", "#", 15) - print(vhost_first_out) + vhost_primary_out = self.vhost_primary.send_expect("^c", "#", 15) + print(vhost_primary_out) time.sleep(3) vhost_secondary_out = self.vhost_secondary.send_expect("^c", "#", 15) print(vhost_secondary_out) - result_first = re.findall(r"Port \d: RX - (\w+)", vhost_first_out) + result_primary = re.findall(r"Port \d: RX - (\w+)", vhost_primary_out) result_secondary = re.findall(r"Port \d: RX - (\w+)", vhost_secondary_out) self.verify( - len(result_first[0]) != 0 - and len(result_first[1]) != 0 + len(result_primary[0]) != 0 + and len(result_primary[1]) != 0 and len(result_secondary[0]) != 0 and len(result_secondary[1]) != 0, "RX no data", ) self.dut.send_expect("quit", "#", 15) + def test_virtio_primay_and_secondary_process_hotplug(self): + self.launch_testpmd() + self.setup_vm_env() + self.prepare_hotplug_mp() + self.vhost_primary = self.vm_dut.new_session(suite="vhost_primary") + self.vhost_secondary = self.vm_dut.new_session(suite="vhsot_secondary") + self.launch_hotplug_mp() + vm_ports = [] + for pci_info in self.vm_dut.ports_info: + vm_ports.append(pci_info['pci']) + self.check_etherdev(dev_list=vm_ports) + detach_pci = vm_ports[0] + for _ in range(2): + self.detach_etherdev_from_primary(dev_pci=detach_pci) + vm_ports.remove(detach_pci) + self.check_etherdev(dev_list=vm_ports) + self.attach_etherdev_from_secondary(dev_pci=detach_pci) + vm_ports.append(detach_pci) + self.logger.info(vm_ports) + self.check_etherdev(dev_list=vm_ports) + def tear_down(self): """ Run after each test case. -- 2.25.1