1、Spirent Testcenter 自动化测试脚本 TCL -1 基本功能2015-06-18 浏览(69)#!/bin/sh# aTemplate.tcl exec tclsh “$0“ $1+“$“#-#-#引用 STC API ,SpirentTestCenter.tcl 的路径source C:Program FilesSpirent CommunicationsSpirent TestCenter 4.20Spirent TestCenter ApplicationSpirentTestCenter.tcl#开启日志,-logTo :日志保存路径 ,使用 stdout 为标准输出;
2、 -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
3、-under $ProjectAset RxPort stc:create port -under $ProjectAset portReturn stc:config $TxPort -location “/$chassisAddress/$slotPort1“set portReturn stc:config $RxPort -location “/$chassisAddress/$slotPort2“#配置端口类型,根据实际端口类型选择参数:Ethernet10GigFiber、Ethernet100GigFiber、Ethernet40GigFiber、Ethernet10GigCop
4、per、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 “
5、 -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) -na
6、me 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 #创建 Streamblock2set StreamBlock(2) stc:create “StreamBlock“ -under $TxPort -frameConfig “ -FrameLengthMode “FIXED“ -FixedFrameLength “222“ -name
7、 “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:crea
8、te 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 FA
9、LSE -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
10、true#在发送端口创建 generatorset 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 属性,
11、可选参数: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 an
12、alyzer1 stc:get $RxPort -children-Analyzer#配置 analyzerstc: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“ -JumboFrameThr
13、eshold “1500“ -OversizeFrameThreshold “2000“ -UndersizeFrameThreshold “64“ -AdvSeqCheckerLateThreshold “1000“ -Name “AnalyzerConfig_1“#配置实时结果获取#结果保存在 与脚本相同路径下,结果文件名为 resultset generatorResult stc:subscribe -Parent $ProjectA -ResultParent $TxPort -ConfigType Generator -resulttype GeneratorPortResults
14、 -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 resultRe
15、turn stc:reserve “/$chassisAddress/$slotPort2“#配置抓包端口set captureRx stc:get $RxPort -children-captureset captureTx stc:get $TxPort -children-capture#-配置说明 -#mode 属性,可选参数:REGULAR_MODE,抓所有报文; SIG_MODE:抓有 signature 的报文。#Buffermode 属性, 可选参数:WRAP 当缓冲区写满时,回滚,继续抓包, STOP_ON_FULL :当缓冲区写满时,停止#srcMode 属性,可选参数:
16、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#执行 applys
17、et resultReturn stc:apply#-# 配置完成#-#开始 analyzerset 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 generatorSta
18、rt -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:eclipseworkspaceResult“#停止 analyzerstc:perform analyzerStop -analyzerList $analyzerCurrent#释放端口stc:release stc:get $TxPort -location stc:release stc:get $RxPort -location #与机框断开连接stc:disconnect $chassisAddress#删除 projectstc:delete $ProjectAstc:perform ResetConfig -config system1puts “ok“