zoukankan      html  css  js  c++  java
  • RFC2889转发性能測试用例设计和自己主动化脚本实现

    一、203_TC_FrameRate-1.tcl


    set chassisAddr 10.132.238.190

    set islot 1
    set portList {9 10} ;#端口的排列顺序是port1, port2
    set ipList {10.0.0.3 20.0.0.3} ;#ip列表与port的排列顺序相相应
    set macList {00-00-00-00-00-01 00-00-00-00-00-02}
    set gwList {10.0.0.1 20.0.0.1}
    set iFramelen 256
    set streamLoad 100

    if { [catch {
         cd ../Source
        #载入HLAPI Lib
        source ./CSTC.tcl

        SetLogOption -Debug Enable
        
        # 開始连接机器
        TestDevice chassis1 $chassisAddr

        # 開始预留两个port
        for {set i 0} {$i <[llength $portList]} {incr i} {
            chassis1 CreateTestPort -PortLocation $islot/[lindex $portList $i] -PortName port[expr $i+1] -PortType Ethernet
        }
        port1 CreateTraffic -TrafficName traffic1
        traffic1 CreateProfile -Name profile1 -TrafficLoad 100 -TrafficLoadUnit fps
        
        traffic1 CreateStream -StreamName stream1 -FrameLen 500 -ProfileName profile1
            -L2 ethernet -L3 IPv4 -L4 Udp -IpSrcAddr 192.168.0.1 -IpDstAddr 192.168.5.7 -udpsrcport 2000 -udpdstport 3000
        
        traffic1 ConfigStream -StreamName stream1 -L2 ethernet -L3 IPv4 -EthDst 00:00:10:E1:01:08 -EthSrc 00:00:11:E1:00:09
        
        #创建统计和分析对象Statistics1,Statistics2,Analysis2
        port1 CreateStaEngine -StaEngineName Statistics1 -StaType Statistics
        port2 CreateStaEngine -StaEngineName Statistics2 -StaType Statistics
        port2 CreateStaEngine -StaEngineName Analysis2 -StaType Analysis
        #SaveConfigAsXML "c:/framerate.xml"
        puts "配置捕获模式。将数据报capture到指定文件。可用于数据包的分析"
        Analysis2 ConfigCaptureMode -CaptureMode allpkt -CaptureFile "c:/Framerate.pcap"
        
        # 開始捕获报文     
        puts "開始捕获报文"
        
        for {set i 0} {$i < 1} {incr i} {
           traffic1 ConfigProfile -Name profile1 -TrafficLoad [expr 100 + $i * 100] -TrafficLoadUnit fps
           Analysis2 StartCapture
           puts "配置捕获模式,将数据报capture到指定文件"
           Analysis2 ConfigCaptureMode -CaptureMode allpkt -CaptureFile "c:/Framerate[expr 100 + $i * 100].pcap"
           port1 StartStaEngine
           port2 StartStaEngine
           port1 StartTraffic

           # 等待5秒
           after 5000

           # 在txport停止流量发送
           port1 StopTraffic
           
           after 5000
           
           array set stats1 [Statistics1 GetPortStats ]
           parray stats1
        
           array set stats2 [Statistics2 GetPortStats ]
           parray stats2
       
           # 基于流,获取stream1,stream2,stream3,stream4的统计值。存储在stats数组并打印出来
           array set stats3 [Statistics1 GetStreamStats -StreamName stream1]
           parray  stats3
           
           #array set stats4 [Statistics1 GetStreamStats -StreamName stream2]
           #parray  stats4
        
           #array set stats5 [Statistics1 GetStreamStats -StreamName stream3]
           #parray  stats5      


           port1 StopStaEngine
           port2 StopStaEngine
           Analysis2 StopCapture
        }

        
        #清除測试过程中所作的全部配置和释放測试过程中占用的全部资源
        chassis1 CleanupTest                     
    }  err ] } {
        puts "脚本执行中出现错误: $err"

        #清除測试过程中所作的全部配置和释放測试过程中占用的全部资源
        chassis1 CleanupTest                     
    }

    二、203_TC_FrameRate-2.tcl


    set chassisAddr 10.132.238.190
    set islot 1
    set portList {9 10} ;#端口的排列顺序是port1, port2
    set ipList {10.0.0.3 20.0.0.3} ;#ip列表与port的排列顺序相相应
    set macList {00-00-00-00-00-01 00-00-00-00-00-02}
    set gwList {10.0.0.1 20.0.0.1}
    set iFramelen {64 128 256 512 1518}
    set streamLoad 100

    if { [catch {
         cd ../Source
        #载入HLAPI Lib
        source ./CSTC.tcl

        SetLogOption -Debug Enable
        
        # 開始连接机器
        TestDevice chassis1 $chassisAddr

        # 開始预留两个port
        for {set i 0} {$i <[llength $portList]} {incr i} {
            chassis1 CreateTestPort -PortLocation $islot/[lindex $portList $i] -PortName port[expr $i+1] -PortType Ethernet
        }
        port1 CreateTraffic -TrafficName traffic1
        traffic1 CreateProfile -Name profile1 -TrafficLoad 100 -TrafficLoadUnit fps
        
        traffic1 CreateStream -StreamName stream1 -FrameLen 500 -ProfileName profile1
            -L2 ethernet -L3 IPv4 -L4 Udp -IpSrcAddr 192.168.0.1 -IpDstAddr 192.168.5.7 -udpsrcport 2000 -udpdstport 3000
        
        traffic1 ConfigStream -StreamName stream1 -L2 ethernet -L3 IPv4 -EthDst 00:00:10:E1:01:08 -EthSrc 00:00:11:E1:00:09
        
        #创建统计和分析对象Statistics1,Statistics2,Analysis2
        port1 CreateStaEngine -StaEngineName TxStatistics1 -StaType Statistics
        port2 CreateStaEngine -StaEngineName RxStatistics1 -StaType Statistics
        port2 CreateStaEngine -StaEngineName Analysis2 -StaType Analysis
        #SaveConfigAsXML "c:/framerate.xml"
        puts "配置捕获模式,将数据报capture到指定文件。可用于数据包的分析"
        Analysis2 ConfigCaptureMode -CaptureMode allpkt -CaptureFile "c:/Framerate.pcap"
        
        # 開始捕获报文     
        puts "開始捕获报文"
        
        for {set i 0} {$i < 3} {incr i} {
           traffic1 ConfigProfile -Name profile1 -TrafficLoad [expr 100 + $i * 100] -TrafficLoadUnit fps
           traffic1 ConfigStream -StreamName stream1 -FrameLen [ lindex $iFramelen $i ]
           Analysis2 StartCapture
           puts "配置捕获模式,将数据报capture到指定文件"
           Analysis2 ConfigCaptureMode -CaptureMode allpkt -CaptureFile "c:/Framerate[expr 100 + $i * 100].pcap"
           port1 StartStaEngine
           port2 StartStaEngine
           port1 StartTraffic

           # 等待5秒
           after 5000

           # 在txport停止流量发送
           port1 StopTraffic
           
           after 5000
           
           
            set TxStats1 [TxStatistics1 GetPortStats ]
           puts "-------------------------------"
           puts $TxStats1
           puts "-------------------------------"
           set txFrameIndex [lsearch $TxStats1 -TxSignature ]
           set txFrameRateIndex [lsearch $TxStats1 -TxSignatureRate]
           set txFrameNum [lindex $TxStats1 [expr $txFrameIndex + 1]]
           set txFrameRate [lindex $TxStats1 [expr $txFrameRateIndex + 1]]
           
           
               
           #array set RxStats1 [RxStatistics1 GetPortStats ]
           set RxStats1 [RxStatistics1 GetPortStats ]
           puts "-------------------------------"
           puts $RxStats1
           puts "-------------------------------"
           set rxFrameIndex [lsearch $RxStats1 -RxSignature ]
           set rxFrameRateIndex [lsearch $RxStats1 -RxSignatureRate ]
           set rxFrameNum [lindex $RxStats1 [expr $rxFrameIndex + 1]]
           set rxFrameRate [lindex $RxStats1 [expr $rxFrameRateIndex + 1]]
           
           puts "TxFrame=$txFrameNum"
           puts "RxFrame=$rxFrameNum"
           
              


           port1 StopStaEngine
           port2 StopStaEngine
           Analysis2 StopCapture
        }

        
        #清除測试过程中所作的全部配置和释放測试过程中占用的全部资源
        chassis1 CleanupTest                     
    }  err ] } {
        puts "脚本执行中出现错误: $err"

        #清除測试过程中所作的全部配置和释放測试过程中占用的全部资源
        chassis1 CleanupTest                     
    }





  • 相关阅读:
    有点忙啊
    什么是协程
    HDU 1110 Equipment Box (判断一个大矩形里面能不能放小矩形)
    HDU 1155 Bungee Jumping(物理题,动能公式,弹性势能公式,重力势能公式)
    HDU 1210 Eddy's 洗牌问题(找规律,数学)
    HDU1214 圆桌会议(找规律,数学)
    HDU1215 七夕节(模拟 数学)
    HDU 1216 Assistance Required(暴力打表)
    HDU 1220 Cube(数学,找规律)
    HDU 1221 Rectangle and Circle(判断圆和矩形是不是相交)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5173318.html
Copyright © 2011-2022 走看看