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 89B8CA00C4; Thu, 13 Jan 2022 07:15:12 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 65B8342711; Thu, 13 Jan 2022 07:15:12 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id C1A2340150 for ; Thu, 13 Jan 2022 07:15:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1642054511; x=1673590511; h=from:to:cc:subject:date:message-id; bh=WGUwZgJKwcvfpA0mEJ1tgL/cxBtyWRw8pwzTrmQtBJA=; b=k4hKBO7MlJ6F9hweDNLMjHLvJ+ECFRxzl0BPFJmhKZIkW64Dv3gcZ3g/ HmBmqew4Rk0ffZgXHHCjOzBmuBPSldjp8VekXW/GTfUI0P5mAe/kZpI3N FDRyPquWFDEoHDta4i5QGjZ36wgwNSFwBB9u1YkqDp7t/TAP8bDnSt0Ty aPJia5ONIRsGz1wcjjM7iDPb75vS+fZorUMs9VF5LeNe+0TY+Vg0S7Tlv dbCqoy/FrSpfAy2q9yLcRckHCCG3ZrokiEdEWcX1FCf2ZYPBapi7qProI Vkeg/yPmY3RFOuxwNHOL5TiHT1LX7dJHD1NNp3MzcQ7F5xUApoVTKX6Vn Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10225"; a="330289248" X-IronPort-AV: E=Sophos;i="5.88,284,1635231600"; d="scan'208";a="330289248" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2022 22:15:04 -0800 X-IronPort-AV: E=Sophos;i="5.88,284,1635231600"; d="scan'208";a="529533808" Received: from unknown (HELO localhost.localdomain) ([10.239.251.93]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2022 22:15:02 -0800 From: Zhimin Huang To: dts@dpdk.org Cc: Zhimin Huang Subject: [dts] [PATCH V2] framework/crb:add check link status public method Date: Thu, 13 Jan 2022 22:44:17 +0800 Message-Id: <20220113144417.26180-1-zhiminx.huang@intel.com> X-Mailer: git-send-email 2.17.1 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 when we meet testpmd or app start but link is not up. we can loop up the interface to ensure link. v2: - add support interface list Signed-off-by: Zhimin Huang --- framework/crb.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/framework/crb.py b/framework/crb.py index bd4f565d..72d0d2f5 100755 --- a/framework/crb.py +++ b/framework/crb.py @@ -907,3 +907,33 @@ class Crb(object): else: self.logger.info("NIC %s may be not find %s" % (intf, flag)) return False + + def check_interfaces_link(self, intf: (list, str), timeout=15): + """ + loop to check port link status + """ + if isinstance(intf, list): + for interface in intf: + for i in range(timeout): + out = self.send_expect("ethtool {} | tail -1 ".format(interface), "# ") + if 'Link detected: yes' not in out: + self.send_expect("ifconfig {} up".format(interface), "# ") + time.sleep(1) + else: + break + else: + self.logger.error("{} link is down".format(interface)) + else: + return True + elif isinstance(intf, str): + for i in range(timeout): + out = self.send_expect("ethtool {} | tail -1 ".format(intf), "# ") + if 'Link detected: yes' not in out: + self.send_expect("ifconfig {} up".format(intf), "# ") + time.sleep(1) + else: + return True + self.logger.error("{} link is down".format(intf)) + else: + raise Exception("unsupported param type, only accept list or str") + return False -- 2.17.1