Spirent TestCenter 自動化測試-1 Tcl腳本基本功能


#!/bin/sh
# aTemplate.tcl \
exec tclsh "$0" ${1+"$@"}
#-----------------------------------------------------
#
#
#-----------------------------------------------------

#引用STC API ,SpirentTestCenter.tcl的路徑
source {C:\Program Files\Spirent Communications\Spirent TestCenter 4.20\Spirent TestCenter Application\SpirentTestCenter.tcl}

#開啟日志,-logTo :日志保存路徑 ,使用stdout為標准輸出;  -loglevel : 可選 DEBUG、 INFO 、WARN 和 ERROR 四種;
stc::config automationoptions -logTo "aTemplateLog.txt" -logLevel DEBUG

#配置機框Ip 槽位 端口號

set chassisAddress "192.168.0.100"

set slotPort1 "8/25"

set slotPort2 "8/26"

#創建一個項目

set ProjectA [stc::create project]

#在項目ProjextA 下創建一個發送端口 和一個接收端口

set TxPort [stc::create port -under $ProjectA]

set RxPort [stc::create port -under $ProjectA]

set portReturn [stc::config $TxPort -location "//$chassisAddress/$slotPort1"]

set portReturn [stc::config $RxPort -location "//$chassisAddress/$slotPort2"]

#配置端口類型,根據實際端口類型選擇參數:Ethernet10GigFiber、Ethernet100GigFiber、Ethernet40GigFiber、Ethernet10GigCopper、EthernetCopper等;

set ethernetFiber(1) [stc::create "Ethernet10GigFiber" -under $TxPort -Name "ethernetFiber 1"]

set ethernetFiber(2) [stc::create "Ethernet10GigFiber" -under $RxPort -Name "ethernetFiber 2"]

#在發送端口下創建StreamBlock(1)

set StreamBlock(1) [stc::create "StreamBlock" \
 -under $TxPort \
                  -frameConfig "" \
 -FrameLengthMode "FIXED" \
 -FixedFrameLength "222"  \
                  -name "StreamBlock_1"]

#在StreamBlock(1)中添加EthII頭

set StrEthII [stc::create ethernet:EthernetII -under $StreamBlock(1) -name eht_1 -srcMac 11:11:11:11:11:11 -dstMac 22:22:22:22:22:22 ]

#添加IPv4頭 

set strIPv4 [stc::create ipv4:IPv4 -under $StreamBlock(1) -name Ipv4_1 -sourceAddr 10.10.10.10 -destAddr 20.20.20.20]

#添加TCP頭

set strTcp [stc::create tcp:Tcp -under $StreamBlock(1) -name tcp1 -sourcePort 10 -destPort 20 ]

#創建Streamblock2

set StreamBlock(2) [stc::create "StreamBlock" \
 -under $TxPort \
 -frameConfig "" \
 -FrameLengthMode "FIXED" \
 -FixedFrameLength "222"  \
 -name "StreamBlock_2"]

set StrEthII [stc::create ethernet:EthernetII -under $StreamBlock(2) -name eht_2 -srcMac 31:11:11:11:11:11 -dstMac 42:22:22:22:22:22 ]
#添加IPv4頭 

set strIPv4 [stc::create ipv4:IPv4 -under $StreamBlock(2) -name Ipv4_2 -sourceAddr 40.40.40.40 -destAddr 50.50.50.50]

#添加TCP頭

set strTcp [stc::create udp:Udp -under $StreamBlock(2) -name tcp_2 -sourcePort 40 -destPort 50 ]

#配置StreamBlock(1)的modifier 可以選擇 RangeModifer 、RandomModifier 、TableModifier

#StreamBlock1 源Ip 隨機

set RandomModifier1 [stc::create RandomModifier -under $StreamBlock(1) -Mask {0.0.0.255}  -RecycleCount 10 -Offset 0 -EnableStream FALSE -OffsetReference {Ipv4_1.sourceAddr} ]

#StreamBlock2 目的Ip 遞增

set RangeModifier2 [stc::create RangeModifier -under $StreamBlock(2) -ModifierMode INCR -Mask {0.0.255.0} -StepValue {0.0.1.0} -RecycleCount 10 -RepeatCount 0 -Data {0.0.50.0} -EnableStream FALSE -Offset 0 -OffsetReference {Ipv4_2.destAddr} -Active true]

#在發送端口創建 generator

set generator1 [stc::get $TxPort -children-Generator ] 

stc::config $generator1 -Name "Generator_1"

#配置 generator1 ,

set generatorConfig1 [stc::get $generator1 -children-GeneratorConfig ]

#-------------------------------配置說明--------------------------------------------
#SchedulingModes屬性,可選參數:PORT_BASED 、RATE_BASED 、PRIORITY_BASED 、MANUAL_BASED
#DurationMode屬性,可選參數:CONTINUOUS 、BURSTS 、SECONDS 等,
#LoadUnit屬性,可選參數:PERCENT_LINE_RATE 、FRAMES_PER_SECOND 、BITS_PER_SECOND 、
#                  KILOBITS_PER_SECOND 、MEGABITS_PER_SECOND 、INTER_BURST_GAP
#---------------------------------------------------------------------------------

stc::config $generatorConfig1 -SchedulingMode "PORT_BASED" \
                              -DurationMode "BURSTS" \
                              -BurstSize 1 \
   -Duration 20 \

#在接收端口創建analyzer   

set analyzer1 [stc::get $RxPort -children-Analyzer]

#配置analyzer

stc::config $analyzer1 -Name "Analyzer 1"

set analyzerConfig1 [stc::get $analyzer1 -children-AnalyzerConfig]


#-------------------------------配置說明--------------------------------------------
#TimestampLatchMode 屬性 ,可選參數:START_OF_FRAME 、END_OF_FRAME
#
#---------------------------------------------------------------------------------

stc::config $analyzerConfig1 -TimestampLatchMode "END_OF_FRAME" -JumboFrameThreshold "1500" -OversizeFrameThreshold "2000" -UndersizeFrameThreshold "64" -AdvSeqCheckerLateThreshold "1000" -Name "AnalyzerConfig_1"

#配置實時結果獲取
#結果保存在 與腳本相同路徑下,結果文件名為 result

set generatorResult [ stc::subscribe -Parent $ProjectA \
-ResultParent $TxPort \
-ConfigType Generator \
-resulttype GeneratorPortResults \
-filenameprefix "result"]

set analyzerResult [ stc::subscribe -Parent $ProjectA \
 -ResultParent $RxPort \
 -ConfigType Analyzer \
 -resulttype AnalyzerPortResults \
 -filenameprefix "result" ] 

#連接機框

set resultReturn [ stc::connect $chassisAddress]

#占用端口

set resultReturn [ stc::reserve "//$chassisAddress/$slotPort1"]

set resultReturn [ stc::reserve "//$chassisAddress/$slotPort2"]

#配置抓包端口

set captureRx [stc::get $RxPort -children-capture]

set captureTx [stc::get $TxPort -children-capture]

#-----------------------------------配置說明-------------------------------------
#
#mode 屬性,可選參數:REGULAR_MODE,抓所有報文; SIG_MODE:抓有signature的報文。
#Buffermode 屬性, 可選參數:WRAP 當緩沖區寫滿時,回滾,繼續抓包,   STOP_ON_FULL :當緩沖區寫滿時,停止
#srcMode 屬性,可選參數: TX_MODE 、 RX_MODE 、 TX_RX_MODE
#
#-----------------------------------------------------------------------------

stc::config  $captureRx -mode REGULAR_MODE -BufferMode WRAP -srcMode RX_MODE 

#stc::perform StreamBlockUpdate -streamBlock "$StreamBlock(1)"

#stc::perform StreamBlockUpdate -streamBlock "$StreamBlock(2)"

#建立邏輯端口與物理端口的映射

set resultReturn [stc::perform setupPortMappings]

#執行apply

set resultReturn [stc::apply]

#-------------------------------------------------------------------------------
#                                     配置完成
#-------------------------------------------------------------------------------

#開始analyzer

set analyzerCurrent [stc::get $RxPort -children-analyzer ]

stc::perform analyzerStart -analyzerList $analyzerCurrent

#開啟抓包

stc::perform CaptureStart -captureProxyId $captureRx

#開始發包

set generatorCurrent [stc::get $TxPort -children-generator ]

stc::perform generatorStart -generatorList $generatorCurrent

#等待執行結束
stc::sleep 20

# 停止發包

stc::perform generatorStop -generatorList $generatorCurrent

#停止抓包

stc::perform CaptureStop -captureProxyId $captureRx
#保存抓包結果

stc::perform CaptureDataSave -captureProxyId $captureRx -FileName "template.R.pcap" -FileNamePath "D:\\eclipse\\workspace\\Result\\"

#停止analyzer

stc::perform analyzerStop -analyzerList $analyzerCurrent

#釋放端口

stc::release [stc::get $TxPort -location]

stc::release [stc::get $RxPort -location]

#與機框斷開連接

stc::disconnect $chassisAddress

#刪除 project

stc::delete $ProjectA

stc::perform ResetConfig -config system1

puts "ok"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM