SpirentTestcenter自动化测试脚本TCL.docx
《SpirentTestcenter自动化测试脚本TCL.docx》由会员分享,可在线阅读,更多相关《SpirentTestcenter自动化测试脚本TCL.docx(11页珍藏版)》请在冰点文库上搜索。
SpirentTestcenter自动化测试脚本TCL
SpirentTestcenter自动化测试脚本TCL-1基本功能
2015-06-18 浏览(69)
#!
/bin/sh
#
exectclsh"$0"${1+"$@"}
#-----------------------------------------------------
#
#
#-----------------------------------------------------
#引用STCAPI,的路径
source{C:
ProgramFilesSpirentCommunicationsSpirentTestCenterTestCenter}
#开启日志,-logTo:
日志保存路径,使用stdout为标准输出; -loglevel:
可选DEBUG、INFO、WARN和ERROR四种;
stc:
:
configautomationoptions-logTo""-logLevelDEBUG
#配置机框Ip槽位端口号
setchassisAddress""
setslotPort1"8/25"
setslotPort2"8/26"
#创建一个项目
setProjectA[stc:
:
createproject]
#在项目ProjextA下创建一个发送端口和一个接收端口
setTxPort[stc:
:
createport-under$ProjectA]
setRxPort[stc:
:
createport-under$ProjectA]
setportReturn[stc:
:
config$TxPort-location"//$chassisAddress/$slotPort1"]
setportReturn[stc:
:
config$RxPort-location"//$chassisAddress/$slotPort2"]
#配置端口类型,根据实际端口类型选择参数:
Ethernet10GigFiber、Ethernet100GigFiber、Ethernet40GigFiber、Ethernet10GigCopper、EthernetCopper等;
setethernetFiber
(1)[stc:
:
create"Ethernet10GigFiber"-under$TxPort-Name"ethernetFiber1"]
setethernetFiber
(2)[stc:
:
create"Ethernet10GigFiber"-under$RxPort-Name"ethernetFiber2"]
#在发送端口下创建StreamBlock
(1)
setStreamBlock
(1)[stc:
:
create"StreamBlock"
-under$TxPort
-frameConfig""
-FrameLengthMode"FIXED"
-FixedFrameLength"222"
-name"StreamBlock_1"]
#在StreamBlock
(1)中添加EthII头
setStrEthII[stc:
:
createethernet:
EthernetII-under$StreamBlock
(1)-nameeht_1-srcMac11:
11:
11:
11:
11:
11-dstMac22:
22:
22:
22:
22:
22]
#添加IPv4头
setstrIPv4[stc:
:
createipv4:
IPv4-under$StreamBlock
(1)-nameIpv4_1-sourceAddr-destAddr
#添加TCP头
setstrTcp[stc:
:
createtcp:
Tcp-under$StreamBlock
(1)-nametcp1-sourcePort10-destPort20]
#创建Streamblock2
setStreamBlock
(2)[stc:
:
create"StreamBlock"
-under$TxPort
-frameConfig""
-FrameLengthMode"FIXED"
-FixedFrameLength"222"
-name"StreamBlock_2"]
setStrEthII[stc:
:
createethernet:
EthernetII-under$StreamBlock
(2)-nameeht_2-srcMac31:
11:
11:
11:
11:
11-dstMac42:
22:
22:
22:
22:
22]
#添加IPv4头
setstrIPv4[stc:
:
createipv4:
IPv4-under$StreamBlock
(2)-nameIpv4_2-sourceAddr-destAddr
#添加TCP头
setstrTcp[stc:
:
createudp:
Udp-under$StreamBlock
(2)-nametcp_2-sourcePort40-destPort50]
#配置StreamBlock
(1)的modifier可以选择RangeModifer、RandomModifier、TableModifier
#StreamBlock1源Ip随机
setRandomModifier1[stc:
:
createRandomModifier-under$StreamBlock
(1)-Mask{ -RecycleCount10-Offset0-EnableStreamFALSE-OffsetReference{}]
#StreamBlock2目的Ip递增
setRangeModifier2[stc:
:
createRangeModifier-under$StreamBlock
(2)-ModifierModeINCR-Mask{-StepValue{-RecycleCount10-RepeatCount0-Data{-EnableStreamFALSE-Offset0-OffsetReference{}-Activetrue]
#在发送端口创建generator
setgenerator1[stc:
:
get$TxPort-children-Generator]
stc:
:
config$generator1-Name"Generator_1"
#配置generator1,
setgeneratorConfig1[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"
-BurstSize1
-Duration20
#在接收端口创建analyzer
setanalyzer1[stc:
:
get$RxPort-children-Analyzer]
#配置analyzer
stc:
:
config$analyzer1-Name"Analyzer1"
setanalyzerConfig1[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
setgeneratorResult[stc:
:
subscribe-Parent$ProjectA
-ResultParent$TxPort
-ConfigTypeGenerator
-resulttypeGeneratorPortResults
-filenameprefix"result"]
setanalyzerResult[stc:
:
subscribe-Parent$ProjectA
-ResultParent$RxPort
-ConfigTypeAnalyzer
-resulttypeAnalyzerPortResults
-filenameprefix"result"]
#连接机框
setresultReturn[stc:
:
connect$chassisAddress]
#占用端口
setresultReturn[stc:
:
reserve"//$chassisAddress/$slotPort1"]
setresultReturn[stc:
:
reserve"//$chassisAddress/$slotPort2"]
#配置抓包端口
setcaptureRx[stc:
:
get$RxPort-children-capture]
setcaptureTx[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-modeREGULAR_MODE-BufferModeWRAP-srcModeRX_MODE
#stc:
:
performStreamBlockUpdate-streamBlock"$StreamBlock
(1)"
#stc:
:
performStreamBlockUpdate-streamBlock"$StreamBlock
(2)"
#建立逻辑端口与物理端口的映射
setresultReturn[stc:
:
performsetupPortMappings]
#执行apply
setresultReturn[stc:
:
apply]
#-------------------------------------------------------------------------------
# 配置完成
#-------------------------------------------------------------------------------
#开始analyzer
setanalyzerCurrent[stc:
:
get$RxPort-children-analyzer]
stc:
:
performanalyzerStart-analyzerList$analyzerCurrent
#开启抓包
stc:
:
performCaptureStart-captureProxyId$captureRx
#开始发包
setgeneratorCurrent[stc:
:
get$TxPort-children-generator]
stc:
:
performgeneratorStart-generatorList$generatorCurrent
#等待执行结束
stc:
:
sleep20
#停止发包
stc:
:
performgeneratorStop-generatorList$generatorCurrent
#停止抓包
stc:
:
performCaptureStop-captureProxyId$captureRx
#保存抓包结果
stc:
:
performCaptureDataSave-captureProxyId$captureRx-FileName""-FileNamePath"D:
\eclipse\workspace\Result\"
#停止analyzer
stc:
:
performanalyzerStop-analyzerList$analyzerCurrent
#释放端口
stc:
:
release[stc:
:
get$TxPort-location]
stc:
:
release[stc:
:
get$RxPort-location]
#与机框断开连接
stc:
:
disconnect$chassisAddress
#删除project
stc:
:
delete$ProjectA
stc:
:
performResetConfig-configsystem1
puts"ok"