From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id CE01A1BB2B for ; Wed, 4 Apr 2018 05:28:20 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Apr 2018 20:28:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,404,1517904000"; d="scan'208";a="34082707" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga002.fm.intel.com with ESMTP; 03 Apr 2018 20:28:19 -0700 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 3 Apr 2018 20:28:19 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX119.amr.corp.intel.com (10.18.124.207) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 3 Apr 2018 20:28:18 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.241]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.43]) with mapi id 14.03.0319.002; Wed, 4 Apr 2018 11:28:16 +0800 From: "Liu, Yong" To: Phil Yang , "dts@dpdk.org" CC: "nd@arm.com" Thread-Topic: [PATCH v3 01/17] framwork/packet: sniff_packet specify running target support Thread-Index: AQHTyjU/g+dc41M4vUGzsGD/VddspqPv85mQ Date: Wed, 4 Apr 2018 03:28:16 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E62FE1D1E@SHSMSX103.ccr.corp.intel.com> References: <1522406469-9251-1-git-send-email-phil.yang@arm.com> <1522640786-26646-1-git-send-email-phil.yang@arm.com> In-Reply-To: <1522640786-26646-1-git-send-email-phil.yang@arm.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOTBhOTdhZGUtYWFhOC00OGU4LTkxZDUtNDgzZjNlMzM3MGYyIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJ5R2oza3Uxdk9KWjlBc3psSGlLOVk4Y0RiQXhSZ2RGT1czUUlOWHBSbEQ3dERFdDQ0MWlwb0FnK1wvZjdwUGZ5byJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dts] [PATCH v3 01/17] framwork/packet: sniff_packet specify running target support 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: Wed, 04 Apr 2018 03:28:21 -0000 Phil, Some comments are inline. Thanks, Marvin > -----Original Message----- > From: Phil Yang [mailto:phil.yang@arm.com] > Sent: Monday, April 02, 2018 11:46 AM > To: dts@dpdk.org > Cc: nd@arm.com; Liu, Yong ; phil.yang@arm.com > Subject: [PATCH v3 01/17] framwork/packet: sniff_packet specify running > target support >=20 > If tester in crb file was not the machine which running dts, > the sniff_packet process will not running on tester. >=20 > Create a ssh connection to the tester and run tcpdump to make sure > sniff_packet process running on the machine we expected. >=20 > Signed-off-by: Phil Yang > --- > framework/packet.py | 34 ++++++++++++++++++++++++++++------ > framework/tester.py | 38 ++++++++++++++++++++++++++++++++++++++ > 2 files changed, 66 insertions(+), 6 deletions(-) >=20 > diff --git a/framework/packet.py b/framework/packet.py > index 976b82b..484e511 100755 > --- a/framework/packet.py > +++ b/framework/packet.py > @@ -812,15 +812,30 @@ def get_filter_cmd(filters=3D[]): > return "" >=20 >=20 > -def sniff_packets(intf, count=3D0, timeout=3D5, filters=3D[]): > +def sniff_packets(intf, count=3D0, timeout=3D5, filters=3D[], target=3D[= ]): > """ > sniff all packets for certain port in certain seconds > """ > param =3D "" > direct_param =3D r"(\s+)\[ (\S+) in\|out\|inout \]" > - tcpdump_help =3D subprocess.check_output("tcpdump -h; echo 0", > - stderr=3Dsubprocess.STDOUT, > - shell=3DTrue) > + > + # target[] contain the remote machine info for ssh connection > + # target[0]: username > + # target[1]: ip address > + # target[2]: pass word > + if target: > + tcpdump_help_pipe =3D subprocess.Popen(["ssh", > + "%s@%s" % (target[0], target[1]), > + "tcpdump -h"], > + stderr=3Dsubprocess.PIPE, > + stdout=3Dsubprocess.PIPE, > + shell=3DFalse) > + tcpdump_help =3D "".join(tuple(tcpdump_help_pipe.communicate())) > + tcpdump_help_pipe.wait() > + else: > + tcpdump_help =3D subprocess.check_output("tcpdump -h; echo 0", > + stderr=3Dsubprocess.STDOUT, shell=3D= True) > + > for line in tcpdump_help.split('\n'): > m =3D re.match(direct_param, line) > if m: > @@ -850,9 +865,16 @@ def sniff_packets(intf, count=3D0, timeout=3D5, > filters=3D[]): > else: > cmd =3D sniff_cmd % options >=20 > - args =3D shlex.split(cmd) > + if target: > + pipe =3D subprocess.Popen(["ssh", > + "%s@%s" % (target[0], target[1]), > + cmd], > + stdin=3Dsubprocess.PIPE, > + shell=3DFalse) > + else: > + args =3D shlex.split(cmd) > + pipe =3D subprocess.Popen(args) >=20 > - pipe =3D subprocess.Popen(args) > index =3D str(time.time()) > SNIFF_PIDS[index] =3D (pipe, intf, timeout) > time.sleep(1) > diff --git a/framework/tester.py b/framework/tester.py > index a775f68..10761a8 100755 > --- a/framework/tester.py > +++ b/framework/tester.py > @@ -70,6 +70,7 @@ class Tester(Crb): > self.bgCmds =3D [] > self.bgItf =3D '' > self.re_run_time =3D 0 > + self.sniff_intf =3D '' >=20 > def init_ext_gen(self): > """ > @@ -704,6 +705,43 @@ class Tester(Crb): > self.proc.kill() > self.proc =3D None >=20 > + def tcpdump_sniff_packets(self, intf, count=3D0, timeout=3D5, filter= s=3D[]): > + """ > + Wrapper for packet module sniff_packets > + """ > + # load functions in packet module > + module =3D __import__("packet") > + sniff_f =3D getattr(module, "sniff_packets") > + > + target=3D[] > + target.append(self.get_username()) > + target.append(self.get_ip_address()) > + target.append(self.get_password()) > + self.sniff_intf =3D intf Indent not align here, and I think there's no need to save sniffer interfac= e in this module. > + return sniff_f(intf, count, timeout, filters, target) > + > + def load_tcpdump_sniff_pcap(self, index=3D''): > + """ > + Wrapper for packet module load_sniff_pcap > + """ > + # load functions in packet module > + module =3D __import__("packet") > + load_pcap_f =3D getattr(module, "load_sniff_pcap") > + self.session.copy_file_from("/tmp/sniff_%s.pcap" % self.sniff_intf, > "/tmp/") > + Filename will be return after running load_pcap_f function, please use that= name. It can be multiple sniffer functions work in the same time.=20 > + return load_pcap_f(index) > + > + def load_tcpdump_sniff_packets(self, index=3D''): > + """ > + Wrapper for packet module load_sniff_packets > + """ > + # load functions in packet module > + module =3D __import__("packet") > + load_f =3D getattr(module, "load_sniff_packets") > + self.session.copy_file_from("/tmp/sniff_%s.pcap" % self.sniff_intf, > "/tmp/") > + > + return load_f(index) > + > def kill_all(self, killall=3DFalse): > """ > Kill all scapy process or DPDK application on tester. > -- > 2.7.4