[dts] [[patch v1]] framework/etgen.py: add in a function for ixia to send fixed number of packets

Liu, Yong yong.liu at intel.com
Mon Sep 11 03:21:19 CEST 2017


Fei, some comments below.

Thanks,
Marvin

> -----Original Message-----
> From: dts [mailto:dts-bounces at dpdk.org] On Behalf Of wang fei
> Sent: Friday, September 08, 2017 8:07 PM
> To: dts at dpdk.org
> Cc: Wang, FeiX Y <feix.y.wang at intel.com>
> Subject: [dts] [[patch v1]] framework/etgen.py: add in a function for ixia
> to send fixed number of packets
> 
> Signed-off-by: wang fei <feix.y.wang at intel.com>
> ---
>  framework/etgen.py | 33 ++++++++++++++++++++++++++++++++-
>  1 file changed, 32 insertions(+), 1 deletion(-)
> 
> diff --git a/framework/etgen.py b/framework/etgen.py
> index f45a96e..7ee24ac 100644
> --- a/framework/etgen.py
> +++ b/framework/etgen.py
> @@ -141,7 +141,6 @@ class IxiaPacketGenerator(SSHConnection):
>          self.logger = getLogger(self.NAME)
>          super(IxiaPacketGenerator, self).__init__(self.get_ip_address(),
>                                                    self.NAME,
> -                                                  self.get_username(),
>                                                    self.get_password())
>          super(IxiaPacketGenerator, self).init_log(self.logger)
> 
> @@ -869,3 +868,35 @@ class IxiaPacketGenerator(SSHConnection):
>          retrieved capture buffer. Call packetGroupStats get before.
>          """
>          return self._packetgroup_cget_value('averageLatency')
> +
> +    def
> send_packets(self,portList,ratePercent,packetNum,delay=5,runTime=60):

Please add space after each parameter for PEP alignment.

> +        """
> +        configure ixia to send fixed number of packets for each tx port
> +        and returns the throughput for rx ports
> +        """
> +        rxPortlist, txPortlist = self._configure_everything(portList,
> ratePercent)
> +        time.sleep(delay)
> +        self.send_expect("ixStopTransmit portList","%",5)
> +
> +        self.send_expect("stream config -numFrames %s" % packetNum,"%",5)
> +        self.send_expect("stream config -dma stopStream","%",5)

Look like it will not work for multiple streams, is this function support that? If not, please add check or rename the function.

> +        for txPort in txPortlist:
> +            port = self.pci_to_port(self.tester.get_pci(txPort))
> +            self.send_expect("stream set %d %d %d 1" % (self.chasId,
> port['card'], port['port']),"%",5)
> +
> +        self.send_expect("ixWritePortsToHardware portList","%",5)
> +        self.send_expect("ixClearStats portList","%",5)
> +        self.send_expect("ixStartTransmit portList","%",5)
> +        time.sleep(runTime)
> +        time.sleep(3)

Sleep 60 seconds cannot assure that all packets transmitted. And most of cases will waste time for waiting.
You can add one while loop here and break the loop when transmitted packets equal to "packetNum". 


> +
> +        txPackets = 0
> +        rxPackets = 0
> +        for port in txPortlist:
> +            self.stat_get_stat_all_stats(port)
> +            txPackets += self.get_frames_sent()
> +            rxPackets += self.get_frames_received()
> +        self.logger.info("Transmitted packets :%s" % txPackets)
> +        self.logger.info("Received packets :%s" % rxPackets)
> +
> +        return txPackets,rxPackets
> --
> 2.7.4



More information about the dts mailing list