From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 8D4405A63 for ; Fri, 22 May 2015 11:04:50 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP; 22 May 2015 02:04:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,474,1427785200"; d="scan'208";a="733612505" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by orsmga002.jf.intel.com with ESMTP; 22 May 2015 02:04:49 -0700 Received: from shecgisg003.sh.intel.com (shecgisg003.sh.intel.com [10.239.29.90]) by shvmail01.sh.intel.com with ESMTP id t4M94kdV003995; Fri, 22 May 2015 17:04:46 +0800 Received: from shecgisg003.sh.intel.com (localhost [127.0.0.1]) by shecgisg003.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id t4M94ihN014413; Fri, 22 May 2015 17:04:46 +0800 Received: (from yliu84x@localhost) by shecgisg003.sh.intel.com (8.13.6/8.13.6/Submit) id t4M94iYM014409; Fri, 22 May 2015 17:04:44 +0800 From: "Jiajia, Sun" To: dts@dpdk.org Date: Fri, 22 May 2015 17:04:06 +0800 Message-Id: <1432285452-14286-14-git-send-email-sunx.jiajia@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1432285452-14286-1-git-send-email-sunx.jiajia@intel.com> References: <1432285452-14286-1-git-send-email-sunx.jiajia@intel.com> Subject: [dts] [PATCH v2 13/19] Add some base functions to get the device info in the testpmd X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 May 2015 09:04:51 -0000 From: sjiajiax Signed-off-by: sjiajiax --- framework/pmd_output.py | 92 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/framework/pmd_output.py b/framework/pmd_output.py index 473339d..4ccdd0d 100644 --- a/framework/pmd_output.py +++ b/framework/pmd_output.py @@ -32,6 +32,7 @@ import os import re import dts +from settings import TIMEOUT class PmdOutput(): @@ -42,6 +43,7 @@ class PmdOutput(): def __init__(self, dut): self.dut = dut + self.dut.testpmd = self self.rx_pkts_prefix = "RX-packets:" self.rx_missed_prefix = "RX-missed:" self.rx_bytes_prefix = "RX-bytes:" @@ -113,3 +115,93 @@ class PmdOutput(): out = self.dut.send_expect(command, "testpmd> ", 120) self.command = command return out + + def execute_cmd(self, pmd_cmd, expected='testpmd> ', timeout=TIMEOUT, + alt_session=False): + return self.dut.send_expect('%s' % pmd_cmd, expected, timeout=timeout, + alt_session=alt_session) + + def get_value_from_string(self, key_str, regx_str, string): + """ + Get some values from the given string by the regular expression. + """ + pattern = r"(?<=%s)%s" % (key_str, regx_str) + s = re.compile(pattern) + res = s.search(string) + if type(res).__name__ == 'NoneType': + return ' ' + else: + return res.group(0) + + def get_detail_from_port_info(self, key_str, regx_str, port): + """ + Get the detail info from the output of pmd cmd 'show port info '. + """ + out = self.dut.send_expect("show port info %d" % port, "testpmd> ") + find_value = self.get_value_from_string(key_str, regx_str, out) + return find_value + + def get_port_mac(self, port_id): + """ + Get the specified port MAC. + """ + return self.get_detail_from_port_info("MAC address: ", "([0-9A-F]{2}:){5}[0-9A-F]{2}", port_id) + + def get_port_connect_socket(self, port_id): + """ + Get the socket id which the specified port is connectting with. + """ + return self.get_detail_from_port_info("Connect to socket: ", "\d+", port_id) + + def get_port_memory_socket(self, port_id): + """ + Get the socket id which the specified port memory is allocated on. + """ + return self.get_detail_from_port_info("memory allocation on the socket: ", "\d+", port_id) + + def get_port_link_status(self, port_id): + """ + Get the specified port link status now. + """ + return self.get_detail_from_port_info("Link status: ", "\d+", port_id) + + def get_port_link_speed(self, port_id): + """ + Get the specified port link speed now. + """ + return self.get_detail_from_port_info("Link speed: ", "\d+", port_id) + + def get_port_link_duplex(self, port_id): + """ + Get the specified port link mode, duplex or siplex. + """ + return self.get_detail_from_port_info("Link duplex: ", "\S+", port_id) + + def get_port_promiscuous_mode(self, port_id): + """ + Get the promiscuous mode of port. + """ + return self.get_detail_from_port_info("Promiscuous mode: ", "\S+", port_id) + + def get_port_allmulticast_mode(self, port_id): + """ + Get the allmulticast mode of port. + """ + return self.get_detail_from_port_info("Allmulticast mode: ", "\S+", port_id) + + def get_port_vlan_offload(self, port_id): + """ + Function: get the port vlan settting info. + return value: + 'strip':'on' + 'filter':'on' + 'qinq':'off' + """ + vlan_info = {} + vlan_info['strip'] = self.get_detail_from_port_info( + "strip ", '\S+', port_id) + vlan_info['filter'] = self.get_detail_from_port_info( + 'filter', '\S+', port_id) + vlan_info['qinq'] = self.get_detail_from_port_info( + 'qinq\(extend\) ', '\S+', port_id) + return vlan_info -- 1.9.3