Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/106978/?format=api
https://patches.dpdk.org/api/patches/106978/?format=api", "web_url": "https://patches.dpdk.org/project/dts/patch/20220207230405.488339-1-yaqi.tang@intel.com/", "project": { "id": 3, "url": "https://patches.dpdk.org/api/projects/3/?format=api", "name": "DTS", "link_name": "dts", "list_id": "dts.dpdk.org", "list_email": "dts@dpdk.org", "web_url": "", "scm_url": "git://dpdk.org/tools/dts", "webscm_url": "http://git.dpdk.org/tools/dts/", "list_archive_url": "https://inbox.dpdk.org/dts", "list_archive_url_format": "https://inbox.dpdk.org/dts/{}", "commit_url_format": "" }, "msgid": "<20220207230405.488339-1-yaqi.tang@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/20220207230405.488339-1-yaqi.tang@intel.com", "date": "2022-02-07T23:04:05", "name": "[V2] tests/dcf_lifecycle: add test cases for CVL DCF enable device reset API", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "bbf41df6e7ee914d4e5065a2cd250b62ec99146f", "submitter": { "id": 2357, "url": "https://patches.dpdk.org/api/people/2357/?format=api", "name": "Yaqi Tang", "email": "yaqi.tang@intel.com" }, "delegate": null, "mbox": "https://patches.dpdk.org/project/dts/patch/20220207230405.488339-1-yaqi.tang@intel.com/mbox/", "series": [ { "id": 21498, "url": "https://patches.dpdk.org/api/series/21498/?format=api", "web_url": "https://patches.dpdk.org/project/dts/list/?series=21498", "date": "2022-02-07T23:04:05", "name": "[V2] tests/dcf_lifecycle: add test cases for CVL DCF enable device reset API", "version": 2, "mbox": "https://patches.dpdk.org/series/21498/mbox/" } ], "comments": "https://patches.dpdk.org/api/patches/106978/comments/", "check": "success", "checks": "https://patches.dpdk.org/api/patches/106978/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dts-bounces@dpdk.org>", "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 13CDDA034F;\n\tMon, 7 Feb 2022 16:05:55 +0100 (CET)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id D9DE8410F3;\n\tMon, 7 Feb 2022 16:05:54 +0100 (CET)", "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n by mails.dpdk.org (Postfix) with ESMTP id 1E240410EA\n for <dts@dpdk.org>; Mon, 7 Feb 2022 16:05:52 +0100 (CET)", "from fmsmga002.fm.intel.com ([10.253.24.26])\n by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 07 Feb 2022 07:05:51 -0800", "from dpdk-yaqi.sh.intel.com ([10.67.119.205])\n by fmsmga002.fm.intel.com with ESMTP; 07 Feb 2022 07:05:50 -0800" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1644246353; x=1675782353;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=4UuhgBGnkna2Md1xRGg5rhp/2JT514Zzx6F0vKiwCC8=;\n b=B2d1tqOQFLCNrlY33kTB/aYOKOp83LIdvTj8ufIoA/kiJv7mg+9PNilI\n XV77TFWSVgaezkYjUD3z+fFbrbFgRtz41W3laKdyzOjty2aIn9k3EaPP/\n a5p5ZEYf3bhydYwPPRqodU9W/jkYSGfcdLkNn8XCxUngPCVvdYA1iPbuQ\n ON/B3S67jb/srMsIUi+DXvAEjnFqLpGIBfNGAgZ4DTIBc5FQOzjNoof97\n qBV9rnm/dRUXdtFOnpSoRpmn1fkYNU9kFfIUeJVkXKdJezrOkKii9ywD3\n Jdv1Lf/vXxpJ/Z/ySYGMcTdrc8DnFQ7CA5+VR4Vs/K+GDUjuNIZZW9VLZ g==;", "X-IronPort-AV": [ "E=McAfee;i=\"6200,9189,10250\"; a=\"273252086\"", "E=Sophos;i=\"5.88,350,1635231600\"; d=\"scan'208\";a=\"273252086\"", "E=Sophos;i=\"5.88,350,1635231600\"; d=\"scan'208\";a=\"628549269\"" ], "X-ExtLoop1": "1", "From": "Yaqi Tang <yaqi.tang@intel.com>", "To": "dts@dpdk.org", "Cc": "Yaqi Tang <yaqi.tang@intel.com>", "Subject": "[dts][PATCH V2] tests/dcf_lifecycle: add test cases for CVL DCF\n enable device reset API", "Date": "Mon, 7 Feb 2022 23:04:05 +0000", "Message-Id": "<20220207230405.488339-1-yaqi.tang@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 <dts.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dts/>", "List-Post": "<mailto:dts@dpdk.org>", "List-Help": "<mailto:dts-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>", "Errors-To": "dts-bounces@dpdk.org" }, "content": "The rte_eth_dev_reset API provides a more elegant way for the application to reset DCF through the commmad \"port reset all\" when reconnecting.\n\nSigned-off-by: Yaqi Tang <yaqi.tang@intel.com>\nTested-by: Yaqi Tang < yaqi.tang@intel.com>\n---\n tests/TestSuite_dcf_lifecycle.py | 391 +++++++++++++++++++++++++++++++\n 1 file changed, 391 insertions(+)", "diff": "diff --git a/tests/TestSuite_dcf_lifecycle.py b/tests/TestSuite_dcf_lifecycle.py\nindex 65b80e69..fcbd4a05 100755\n--- a/tests/TestSuite_dcf_lifecycle.py\n+++ b/tests/TestSuite_dcf_lifecycle.py\n@@ -257,6 +257,7 @@ class TestDcfLifeCycle(TestCase):\n 'pf1_vf1': f\"-a {pf1_vf1}\",\n 'pf2_vf0_dcf': f\"-a {pf2_vf0},cap=dcf\",\n 'pf1_vf0': f\"-a {pf1_vf0}\",\n+ 'pf1_vf0_dcf_vf1': f\"-a {pf1_vf0},cap=dcf -a {pf1_vf1}\",\n }\n return allowlist\n \n@@ -463,6 +464,30 @@ class TestDcfLifeCycle(TestCase):\n status_change_func = getattr(self, func_name)\n status_change_func(**kwargs)\n self.check_vf_pmd2_stats(traffic, verbose_parser, is_traffic_valid=flag)\n+ \n+ def check_vf_traffic(self, func_name, topo=None, flag=False,**kwargs):\n+ dut_port_id, vf_id = topo if topo else [0, 1]\n+ pkt = self.config_stream(dut_port_id, vf_id)\n+ traffic = partial(self.send_packet_by_scapy, pkt, dut_port_id, vf_id)\n+ verbose_parser = partial(self.parse_pmd2_verbose_pkt_count, dut_port_id, vf_id)\n+ self.vf_pmd2_clear_port_stats()\n+ self.check_vf_pmd2_stats(traffic, verbose_parser)\n+ status_change_func = getattr(self, func_name)\n+ status_change_func(**kwargs)\n+\n+ def check_vf_dcf_traffic(self, func_name, topo=None, flag=False,**kwargs):\n+ self.send_pkt_to_vf1()\n+ self.d_con(['show port stats all', \"testpmd> \", 15])\n+ status_change_func = getattr(self, func_name)\n+ status_change_func(**kwargs)\n+\n+ def send_pkt_to_vf1(self):\n+ tester_port_id = self.tester.get_local_port(0)\n+ tester_itf = self.tester.get_interface(tester_port_id)\n+ p = Packet()\n+ p.append_pkt('Ether(src=\"00:11:22:33:44:55\", dst=\"C6:44:32:0A:EC:E1\")/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\")/(\"X\"*64)')\n+ p.send_pkt(self.tester, tx_port=tester_itf)\n+ time.sleep(1)\n \n def run_test_pre(self, pmd_opitons):\n pri_pmd_option = pmd_opitons[0]\n@@ -1519,3 +1544,369 @@ class TestDcfLifeCycle(TestCase):\n self.create_acl_rule_by_kernel_cmd(port_id=1)\n self.d_con(['quit', \"# \", 15])\n self.delete_acl_rule_by_kernel_cmd(port_id=1)\n+\n+ def vf_dcf_testpmd_reset_port(self):\n+ if not self.is_vf_dcf_pmd_on:\n+ return\n+ cmds = [\n+ 'stop',\n+ 'port stop all',\n+ 'port reset all',\n+ 'port start all',\n+ 'start',\n+ 'flow list 0',\n+ ]\n+ [self.d_con([cmd, \"testpmd> \", 15]) for cmd in cmds]\n+\n+ def vf_dcf_reset_device(self):\n+ pf1_vf0 = self.vf_ports_info[0].get('vfs_pci')[0]\n+ cmd = f\"echo 1 > /sys/bus/pci/devices/{pf1_vf0}/reset\"\n+ self.d_a_con(cmd)\n+ self.vf_dcf_testpmd_reset_port()\n+\n+ def vf_dcf_reset_port_detach(self):\n+ if not self.is_vf_dcf_pmd_on:\n+ return\n+ pf1_vf0 = self.vf_ports_info[0].get('vfs_pci')[0]\n+ cmd = f\"echo 1 > /sys/bus/pci/devices/{pf1_vf0}/reset\"\n+ self.d_a_con(cmd)\n+ cmds = [\n+ 'stop',\n+ 'port stop 0',\n+ 'port detach 0',\n+ f\"port attach {pf1_vf0},cap=dcf\",\n+ 'port reset 0',\n+ 'port start 0',\n+ 'start',\n+ 'flow list 0',\n+ ]\n+ [self.d_con([cmd, \"testpmd> \", 15]) for cmd in cmds]\n+\n+ def vf_dcf_reset_mtu(self, dut_port_id=0, vf_id=0):\n+ intf = self.dut.ports_info[dut_port_id]['port'].intf_name\n+ cmd = f\"ifconfig {intf} mtu 3000\"\n+ self.d_a_con(cmd)\n+ self.vf_dcf_testpmd_reset_port()\n+\n+ def vf_dcf_set_mac_addr(self, dut_port_id=0, vf_id=0):\n+ intf = self.dut.ports_info[dut_port_id]['port'].intf_name\n+ cmd = f\"ip link set {intf} vf 0 mac 00:01:02:03:04:05\"\n+ self.d_a_con(cmd)\n+ self.vf_dcf_testpmd_reset_port()\n+ \n+ def verify_two_testpmd_dcf_reset_port(self):\n+ '''\n+ Lauch two testpmd, kill DCF process, and DCF reset port.\n+ '''\n+ except_content = None\n+ try:\n+ self.vf_set_trust()\n+ pmd_opts = [['pf1_vf0_dcf', 'dcf'], ['pf1_vf1', 'vf']]\n+ self.run_test_pre(pmd_opts)\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_traffic('kill_vf_dcf_process', flag=True,**{'file_prefix':pmd_opts[0][1]})\n+ self.run_test_pre(pmd_opts)\n+ self.check_vf_traffic('vf_dcf_testpmd_reset_port')\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_traffic('close_vf_dcf_testpmd')\n+ except Exception as e:\n+ self.logger.error(traceback.format_exc())\n+ except_content = e\n+ finally:\n+ self.run_test_post()\n+ # re-raise verify exception result\n+ if except_content:\n+ raise VerifyFailure(except_content)\n+\n+ def verify_two_testpmd_dcf_reset_device(self):\n+ '''\n+ Lauch two testpmd, and DCF reset device.\n+ '''\n+ except_content = None\n+ try:\n+ self.vf_set_trust()\n+ pmd_opts = [['pf1_vf0_dcf', 'dcf'], ['pf1_vf1', 'vf']]\n+ self.run_test_pre(pmd_opts)\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_traffic('vf_dcf_reset_device')\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_traffic('close_vf_dcf_testpmd')\n+ except Exception as e:\n+ self.logger.error(traceback.format_exc())\n+ except_content = e\n+ finally:\n+ self.run_test_post()\n+ # re-raise verify exception result\n+ if except_content:\n+ raise VerifyFailure(except_content)\n+ \n+ def verify_two_testpmd_dcf_reset_port_detach(self):\n+ '''\n+ Lauch two testpmd, and DCF reset port detach.\n+ '''\n+ except_content = None\n+ try:\n+ self.vf_set_trust()\n+ pmd_opts = [['pf1_vf0_dcf', 'dcf'], ['pf1_vf1', 'vf']]\n+ self.run_test_pre(pmd_opts)\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_traffic('vf_dcf_reset_port_detach')\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_traffic('close_vf_dcf_testpmd')\n+ except Exception as e:\n+ self.logger.error(traceback.format_exc())\n+ except_content = e\n+ finally:\n+ self.run_test_post()\n+ # re-raise verify exception result\n+ if except_content:\n+ raise VerifyFailure(except_content)\n+\n+ def verify_two_testpmd_dcf_reset_mtu(self):\n+ '''\n+ Lauch two testpmd, and DCF reset mtu.\n+ '''\n+ except_content = None\n+ try:\n+ self.vf_set_trust()\n+ pmd_opts = [['pf1_vf0_dcf', 'dcf'], ['pf1_vf1', 'vf']]\n+ self.run_test_pre(pmd_opts)\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_traffic('vf_dcf_reset_mtu')\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_traffic('close_vf_dcf_testpmd')\n+ except Exception as e:\n+ self.logger.error(traceback.format_exc())\n+ except_content = e\n+ finally:\n+ self.run_test_post()\n+ # re-raise verify exception result\n+ if except_content:\n+ raise VerifyFailure(except_content)\n+ \n+ def verify_two_testpmd_dcf_reset_mac(self):\n+ '''\n+ Lauch two testpmd, and DCF reset mac.\n+ '''\n+ except_content = None\n+ try:\n+ self.vf_set_trust()\n+ pmd_opts = [['pf1_vf0_dcf', 'dcf'], ['pf1_vf1', 'vf']]\n+ self.run_test_pre(pmd_opts)\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_traffic('vf_dcf_set_mac_addr')\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_traffic('close_vf_dcf_testpmd')\n+ except Exception as e:\n+ self.logger.error(traceback.format_exc())\n+ except_content = e\n+ finally:\n+ self.run_test_post()\n+ # re-raise verify exception result\n+ if except_content:\n+ raise VerifyFailure(except_content)\n+\n+ def verify_one_testpmd_dcf_reset_port(self):\n+ '''\n+ Lauch one testpmd, kill DCF process, and DCF reset port.\n+ '''\n+ except_content = None\n+ try:\n+ self.vf_set_trust()\n+ pmd_opts = [['pf1_vf0_dcf_vf1', 'dcf']]\n+ self.run_test_pre(pmd_opts)\n+ cmds = ['set fwd mac', 'set verbose 1', 'start']\n+ [self.d_con([cmd, \"testpmd> \", 15]) for cmd in cmds]\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_dcf_traffic('kill_vf_dcf_process', flag=True,**{'file_prefix':'dcf'})\n+ self.run_test_pre(pmd_opts)\n+ cmds = ['set fwd mac', 'set verbose 1', 'start']\n+ [self.d_con([cmd, \"testpmd> \", 15]) for cmd in cmds]\n+ self.check_vf_dcf_traffic('vf_dcf_testpmd_reset_port')\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_dcf_traffic('close_vf_dcf_testpmd')\n+ except Exception as e:\n+ self.logger.error(traceback.format_exc())\n+ except_content = e\n+ finally:\n+ self.run_test_post()\n+ # re-raise verify exception result\n+ if except_content:\n+ raise VerifyFailure(except_content)\n+\n+ def verify_one_testpmd_dcf_reset_device(self):\n+ '''\n+ Lauch one testpmd, and DCF reset device.\n+ '''\n+ except_content = None\n+ try:\n+ self.vf_set_trust()\n+ pmd_opts = [['pf1_vf0_dcf_vf1', 'dcf']]\n+ self.run_test_pre(pmd_opts)\n+ cmds = ['set fwd mac', 'set verbose 1', 'start']\n+ [self.d_con([cmd, \"testpmd> \", 15]) for cmd in cmds]\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_dcf_traffic('vf_dcf_reset_device')\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_dcf_traffic('close_vf_dcf_testpmd')\n+ except Exception as e:\n+ self.logger.error(traceback.format_exc())\n+ except_content = e\n+ finally:\n+ self.run_test_post()\n+ # re-raise verify exception result\n+ if except_content:\n+ raise VerifyFailure(except_content)\n+\n+ def verify_one_testpmd_dcf_reset_port_detach(self):\n+ '''\n+ Lauch one testpmd, and DCF reset port detach.\n+ '''\n+ except_content = None\n+ try:\n+ self.vf_set_trust()\n+ pmd_opts = [['pf1_vf0_dcf_vf1', 'dcf']]\n+ self.run_test_pre(pmd_opts)\n+ cmds = ['set fwd mac', 'set verbose 1', 'start']\n+ [self.d_con([cmd, \"testpmd> \", 15]) for cmd in cmds]\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_dcf_traffic('vf_dcf_reset_port_detach')\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_dcf_traffic('close_vf_dcf_testpmd')\n+ except Exception as e:\n+ self.logger.error(traceback.format_exc())\n+ except_content = e\n+ finally:\n+ self.run_test_post()\n+ # re-raise verify exception result\n+ if except_content:\n+ raise VerifyFailure(except_content)\n+ \n+ def verify_one_testpmd_dcf_reset_mtu(self):\n+ '''\n+ Lauch one testpmd, and DCF reset mtu.\n+ '''\n+ except_content = None\n+ try:\n+ self.vf_set_trust()\n+ pmd_opts = [['pf1_vf0_dcf_vf1', 'dcf']]\n+ self.run_test_pre(pmd_opts)\n+ cmds = ['set fwd mac', 'set verbose 1', 'start']\n+ [self.d_con([cmd, \"testpmd> \", 15]) for cmd in cmds]\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_dcf_traffic('vf_dcf_reset_mtu')\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_dcf_traffic('close_vf_dcf_testpmd')\n+ except Exception as e:\n+ self.logger.error(traceback.format_exc())\n+ except_content = e\n+ finally:\n+ self.run_test_post()\n+ # re-raise verify exception result\n+ if except_content:\n+ raise VerifyFailure(except_content)\n+\n+ def verify_one_testpmd_dcf_reset_mac(self):\n+ '''\n+ Lauch one testpmd, and DCF reset mac.\n+ '''\n+ except_content = None\n+ try:\n+ self.vf_set_trust()\n+ pmd_opts = [['pf1_vf0_dcf_vf1', 'dcf']]\n+ self.run_test_pre(pmd_opts)\n+ cmds = ['set fwd mac', 'set verbose 1', 'start']\n+ [self.d_con([cmd, \"testpmd> \", 15]) for cmd in cmds]\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_dcf_traffic('vf_dcf_set_mac_addr')\n+ self.vf_dcf_testpmd_set_flow_rule()\n+ self.check_vf_dcf_traffic('close_vf_dcf_testpmd')\n+ except Exception as e:\n+ self.logger.error(traceback.format_exc())\n+ except_content = e\n+ finally:\n+ self.run_test_post()\n+ # re-raise verify exception result\n+ if except_content:\n+ raise VerifyFailure(except_content)\n+ \n+ def test_two_testpmd_dcf_reset_port(self):\n+ '''\n+ Lauch two testpmd, DCF reset port, and DCF shall clean up all the rules.\n+ '''\n+ msg = \"begin : Kill DCF process, and DCF reset port\"\n+ self.logger.info(msg)\n+ self.verify_two_testpmd_dcf_reset_port()\n+\n+ def test_two_testpmd_dcf_reset_device(self):\n+ '''\n+ Lauch two testpmd, DCF reset device, and DCF shall clean up all the rules.\n+ '''\n+ msg = \"begin :DCF reset device\"\n+ self.logger.info(msg)\n+ self.verify_two_testpmd_dcf_reset_device()\n+\n+ def test_two_testpmd_dcf_reset_port_detach(self):\n+ '''\n+ Lauch two testpmd, DCF reset port detach, and DCF shall clean up all the rules.\n+ '''\n+ msg = \"begin : DCF reset port detach\"\n+ self.logger.info(msg)\n+ self.verify_two_testpmd_dcf_reset_port_detach()\n+\n+ def test_two_testpmd_dcf_reset_mtu(self):\n+ '''\n+ Lauch two testpmd, DCF reset mtu, and DCF shall clean up all the rules.\n+ '''\n+ msg = \"begin : DCF reset mtu\"\n+ self.logger.info(msg)\n+ self.verify_two_testpmd_dcf_reset_mtu()\n+\n+ def test_two_testpmd_dcf_reset_mac(self):\n+ '''\n+ Lauch two testpmd, DCF reset mac, and DCF shall clean up all the rules.\n+ '''\n+ msg = \"begin : DCF reset mac\"\n+ self.logger.info(msg)\n+ self.verify_two_testpmd_dcf_reset_mac()\n+\n+ def test_one_testpmd_dcf_reset_port(self):\n+ '''\n+ Lauch one testpmd, kill DCF process, and DCF reset port, DCF shall clean up all the rules.\n+ '''\n+ msg = \"begin : Kill DCF process, and DCF reset port\"\n+ self.logger.info(msg)\n+ self.verify_one_testpmd_dcf_reset_port()\n+\n+ def test_one_testpmd_dcf_reset_device(self):\n+ '''\n+ Lauch one testpmd, DCF reset device, and DCF shall clean up all the rules.\n+ '''\n+ msg = \"begin : DCF reset device\"\n+ self.logger.info(msg)\n+ self.verify_one_testpmd_dcf_reset_device()\n+\n+ def test_one_testpmd_dcf_reset_port_detach(self):\n+ '''\n+ Lauch one testpmd, DCF reset port detach, and DCF shall clean up all the rules.\n+ '''\n+ msg = \"begin : DCF reset port detach\"\n+ self.logger.info(msg)\n+ self.verify_one_testpmd_dcf_reset_port_detach()\n+ \n+ def test_one_testpmd_dcf_reset_mtu(self):\n+ '''\n+ Lauch one testpmd, DCF reset mtu, and DCF shall clean up all the rules.\n+ '''\n+ msg = \"begin : DCF reset mtu\"\n+ self.logger.info(msg)\n+ self.verify_one_testpmd_dcf_reset_mtu()\n+\n+ def test_one_testpmd_dcf_reset_mac(self):\n+ '''\n+ Lauch one testpmd, DCF reset mac, and DCF shall clean up all the rules.\n+ '''\n+ msg = \"begin : DCF reset mac\"\n+ self.logger.info(msg)\n+ self.verify_one_testpmd_dcf_reset_mac()\n+\n", "prefixes": [ "V2" ] }{ "id": 106978, "url": "