Spirent Testcenter 自动化测试脚本 TCL(1)
pirentTestcenter综合数据测试平台

pirentTestcenter综合数据测试平台SpirentTestcenter是思博伦通信推出的全新综合测试平台。
数据通信网络经历了几个进展时期,目前正向着统一的多功能网络融合,这种趋势包括:汇聚的多功能网络,要求数据、语音、视频多种业务在同一个平台上承载;成千上万的网络流量,要求加倍精准的效劳质量操纵和策略保障;加倍丰硕的IP特性,要求更完善的网络功能及Ipv6的部署;愈来愈宽的网络带宽,要求千兆到户、万兆上联;数百万的宽带接入用户,要求更高密度的接口和更大容量的用户仿真;愈来愈复杂的技术和应用,要求统一的测试标准和加倍简单易用的测试工具。
这些都对网络和产品的测试提出了新的要求。
思博伦通信正是在如此的市场需求之下推出了全新的综合测试平台—SpirentTestcenter,它综合了二、三层测试,路由测试,宽带接入测试,triple-play测试,IPTV测试解决方案,提供了一个全新的高密度,高扩展性,集成测试方式学,通用自动化测试框架的综合测试平台。
Spirent TestCenter组件SpirentTestcenter由机架、模块、应用软件三部份组成SPT-9000A机架SPT-9000A Spirent 9U机架及操纵器:包括TCA-1000 Spirent TestCenter操作系统和TCA-1001 Spirent TestCenter治理应用程序SPT-9000A是一种超高密度机箱,并可提供选配的冗余电源、方便阅读的液晶显示屏和易于保护的硬件。
该型号适用于实验室或生产性测试环境。
SPT-9000A提供12个插槽,支持最多144个千兆以太网端口、24个万兆以太网端口,也可混合利用以上这些类型的端口。
SPT-9000A可直接支持大板型模块,也可利用转接卡(产品编号:ACC-2090A)支持小板型模块。
技术规格SPT-9000A技术规格●Spirent TestCenter 9U高度机箱,可容纳12个测试模块。
spirent自动化测试说明书

Spirent测试仪器自动化测试说明书1引言1.1背景根据部门现有的Spirent测试仪器使用状况,收集发现存在以下几点问题,主要有:1、Spirent测试仪器目前拥有三大设备仪器,测试人员学习需要花费大量的时间精力,并且需要相对扎实的网络测试基础和配合专业的指导。
2、各测试仪器之间关联性目前不大:每个仪器目前是单一的设备,没有有效地整合为一个测试系统,对测试环境构成重复构建,测试配置混乱无关联。
3、测试过程中,测试人员测试工作繁重,测试仪器的配置相对繁琐,影响测试效率。
4、测试仪用例的测试时间相对较长,需要测试人员专职守候,切换被测设备参数和仪器参数,测试周期长达一天,花费时间太长,比如加密机各种模式的性能测试。
上述问题反映出Spirent测试仪器需要专业知识多、手工测试效率低、测试周期长等一系列问题。
为降低仪器使用复杂度、提高工作效率、加快测试周期,需要对Spirent测试仪器进行二次开发,实现自动化测试,用于代替部分功能繁锁的手工回归测试。
2系统概述2.1系统目标通过对测试仪器的自动化二次开发的目标:对仪器测试接口封装,减少测试参数配置,降低测试仪器的使用复杂度;并可与自动化测试平台结合,更加方便管理、调度、控制测试执行;测试效果和测试结果同GUI模式相同;减少人工值守,加快测试周期,提高测试效率。
2.2功能需求Spirent测试仪器可以通过API支持所有的仪器工作能力。
通过对测试仪器自动化二次开发实现的功能和性能:●降低测试仪器的使用复杂度:简化测试人员的测试工作,其测试仪器简单易用,将测试的工作重心放在对产品的深入测试中。
●缩短测试时间:机器执行可在无人值守的条件下以最快的速度完成测试配置和执行,同时可以与自动化测试平台相结合,进一步减少测试人员的值守和干预。
●提高产品、服务的可靠性:实现回退测试周期的自动化。
确保产品生命周期的每一个阶段中都可以执行完全相同的测试。
●降低学习难度:简便易用的API中融入预先定义的测试逻辑,且无需对RFC2544或者RFC2889测试进行手工编码,从而使生产效率大幅提高。
Tcl脚本测试入门.doc

Tcl简介Tcl是一种非常简单的编程语言,如果你以前曾经学过编程,那么你只要学习几个小时就可以编写出一些有趣的Tcl程序。
本文将对Tcl的功能做一个大概的介绍。
一般来说,读完本文之后,你就可以开始独立的编写一些简单的Tcl脚本了;不过,要想获得更全面的认识,我们建议你还是去参考几本目前已经出版的Tcl书籍。
基本语法Tcl脚本由一些被换行符或是分号分开的命令所组成。
命令都有相同的基本格式,如下面的例子所示:expr 20 + 10 该命令计算20加10的和,并返回结果30。
你可以把这个例子以及本文中的所有其它的例子键入到tclsh这样的Tcl应用程序中来验证它们;在一个命令结束后,tclsh将打印出它的结果。
每个Tcl命令都含有一个或多个被空格分开的单词,在这个例子中有4个单词:expr,20,+,和10。
第一个单词是一个命令名,其余的单词是这个命令的参数。
所有的Tcl命令都含有一些单词,但不同的命令对他们的参数有不同的处理方式。
expr命令把它的所有参数看作是一个算术表达式,计算表达式的结果,并以字符串的形式返回结果。
在expr命令中,单词之间的分隔不是很重要:同样的命令你可以写成这种形式:expr 20+10 不过,对大部分的命令来说,单词的结构是很重要的。
每个单词都会用于不同的目的。
所有的Tcl命令都返回结果。
如果一个命令产生了没有意义的结果,那么它将返回一个空字符串作为它的结果。
变量Tcl允许你在变量中保存数值,并且可以在后续的命令中使用这些数值。
set命令用于对变量进行读写操作。
比如,下面的命令对变量x赋值为32。
set x 32 这个命令返回变量的新值。
你可以让set只带一个参数来读出变量的数值:set x 你不需要在Tcl中声明变量:变量在第一次set的时候被自动创建。
Tcl变量没有类型:任何值可以赋给任何变量。
要想在一个命令中使用变量的值,可以采用变量替代,如下例所示:expr $x*3 当一个字符$出现在一个命令中的时候,Tcl把跟在它后面的字母和数字看作是一个变量名并且将其替换成变量的值。
Spirent_Testcenter基本配置使用说明_1022

同维电子测试部拟制人时间佰艳2010年10月22日Testcenter基本配置使用说明一、基本单播流配置1、连接testenter1)、双击如下图标:2)、对于挑出的该对话框可以点选“close”,测试中如果需要随时可以添加后续需要添加,可以点选工具栏里面的“Technologies”,具体如下图:3)、点选工具栏里面的“Actions”“Chassis”“Port Reservation”4)、在如上操作弹出的对话框中点选“Add Chassis”5)、在如上操作弹出的对话框中输入IP地址后,点选ok。
6)、选中测试使用的端口,点选“ok”,具体如下:备注:testcenter 2个端口为一板卡,所以即使不使用12口,使用11口,则12口也不能再次被其他人使用。
2、基本编辑流量1)、testcenter的端口默认下是copper,如使用的是光口,需要进行切换,具体如下:点选完“Fiber”后,点选“Apply”将配置应用。
2)、依次操作如下:3)、按照如上操作后,会弹出如下对话框,依次进行如下配置A、进行“stream name”,“Frame size”设置。
B、点选上图的“Frame”进行,mac地址配置,具体如下(此时为untag包):C、如为tag包,需要依次进行如下操作:添加测试所要使用的Vlan IDD、设置接收端口:将接收端口添加到“Receive ports”列,点选“ok”,具体如下:E、进行流量配置:点选“Load per stream block”,针对每条流进行速率配置。
F、不同端口的流量编辑ok后,可以进行打包可以点选1的方式进行“针对所有端口,或者选中某个端口的“Traffic generator”,右键点选2进行操作,暂停则按照相反操作。
3、抓包A、第一次使用testcener的抓包功能需要进行如下配置选中某个端口的“captuer”“setting”“browers”后,点选电脑中“wireshark”的安装文件路径。
Spirent TestCenter简易操作手册详解

mac
frame
vlan smartbits
用TESTCENTER测Байду номын сангаас组播
先在上联口建立 一条组播流,可 以在general下修 改名称,字节长 度,速率,然后 在frame下修改目 的IP和目的mac, 如图中标记,vlan 值也可修改。
在需要加入组播组的端口配置host,在选择host type时 注意选择Access/Multicast,勾选IGMP/MLD
这里的vlan为仪表发出的组播报文vlan,接下来点击 next修改vlanid,然后再点击next,修改源IP和源MAC
在Configure IGMP/MLD下,选择IGMPv2,我们设备采用 的是IGMPv2,图中标记的地方可修改组播组数量和地址。
完成组播流和host建立后,将组播流start,然后点击已建立 的host选项IGMP/MLD,右键host在IGMP/MLD下可发送加 入和离开报文。
在查看Detailed Stream Results下,选择Advanced Sequencing可以查看实时丢包率Dropped Count
修改vlanid,如果要添加双层vlan,再insert vlan一次, 这里的优先级为二进制,修改时注意
选中建立的流,右键start开始发包,stop停止
基于RAW STEAM建立单播流
点击12/1端口下的traffic generator 选择add下拉菜单中的 add raw stream block,增加一条流。
点击两次next,此界面中修改流的速率,左框中选择是基于端口或 基于流,右边选择速率单位和数值,关于基于端口或流的区别:一 个端口3条流,基于端口30M,则每条流10M,基于流30M,则每条 流30M。配置完成后选择finish,按同样方法配置下行流。
TCL自动化测试脚本语言编程试题(附答案) - 副本

一填空题(每题2分,共10分)1.以下对自动化测试描述不正确的是?A.自动化测试可替代手工测试B.自动化测试发现的故障数不及手工测试C.自动化测试对测试质量的依赖性大D.自动化测试应在周期长的项目中引入2.自动化测试分析时,不该做的分析是下面哪一个?A.可行性分析B.测试需求分析C.抽样demo分析D.软件成本分析3.下列对自动化测试用例设计原则描述中,不正确的是?A.自动化测试用例的选择一般以“反向”为主B.自动化测试用例的范围往往是核心业务流程C.不是所有的手工测试用例都可以使用自动化测试来实现D.自动化测试用例不需要每个步骤都输出预期结果4.自动化测试工具QTP支持的语言是下面哪一种?A.JavaB.RubyC.PythonD.VBScript5.QTP工具中用于实现QTP说明书功能的是哪个键?A.F1B.F2C.F3D.F5二简答题(每题5分,共50分)注:为区分特殊符号,本次考试需要打印输出的内容在卷面中以粗斜体显示!1.自动化测试中,测试脚本可分为哪5种?1)线性脚本2)结构化脚本3)可共享脚本4)数据驱动脚本5)关键字驱动脚本2.自动化测试优势1)回归测试更方便、可靠;2)可运行更多、繁琐的测试,且高校、快速;3)可执行一些对于手工测试来说相当困难或根本做不到的测试;4)更好的利用资源,使资源的使用更有价值;5)具有一致性和可重复性;6)自动化测试脚本完全具有服用性;7)使软件更有信任度;8)多环境下测试;3.画出自动化测试流程图:4.打印输出“Hello Tcl!”;% puts "Hello Tcl!"5.定义变量a=10、b=20、c=a*b,输出变量c;% set a 10% set b 20% set c [expr $a * $b]6.计算字符串“My name is TCL”的长度;% puts stdout "The length of \"$a\" is: [string length $a]"7.已知本地E:\TCL\TCL_setup目录下存在脚本文件exec.tcl,请给出调用该脚本的方法;% cd E:\\TCL\\TCL_setup% source exec.tcl8.对数字5进行左移2位运算,并将计算结果赋值给变量n;% set n [expr 5<<2]9.计算2^16,并将结果取整显示;% expr int(pow(2,16))10.取5-10之间的随机数;% set min 5% set max 10% expr int(rand()*($max-$min+1)+$min)11.将字符串“again”追加至变量a尾部,输出追加后的字符串“see u again”;% set a "see u"% set b again% append a \ $bsee u again12.重新排列字符串"love" "game" "i" "this" "!";% set var1 [format "%3\$s %1\$s %4\$s %2\$s %5\$s" "love" "game" "i" "this" "!"]13.提取数字1-20中的质数,并按照升序排列输出;% set res [format "%1\$s %3\$s %5\$s %7\$s %11\$s %13\$s %17\$s %19\$s" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]14.用科学计数法表示数字80000,并记录在由ascii码转换后的符号()内;% set c [format %c%e%c 40 80000 41](8.000000e+004)15.获得字符串“hello”中字符e的整数值;% binary scan "hello" "cc" var1 var2% puts $var216.将字符串“sorry”中的字符o替换为字符@;% string replace sorry 1 1 @17.已知列表a [my name is tom],输出列表中的tom字符串;% set a "my name is tom"% puts [lindex $a 3]18.使用列表遍历指令输出下面内容:我喜欢吃: 苹果我喜欢吃: 梨子我喜欢吃: 香蕉我喜欢吃: 西瓜set fruit {苹果梨子香蕉西瓜}foreach f $fruit {puts "我喜欢吃: $f"}19.遍历列表输出下面内容:学号=1 姓名=tom 年龄=23 班级=C1学号=2 姓名=jack 年龄=22 班级=C2学号=3 姓名=nacy 年龄=21 班级=C3学号=4 姓名=peter 年龄=22 班级=C4set id {1 2 3 4}set name {tom jack nacy peter}set age {23 22 21 22}set classes {C1 C2 C3 C4}foreach a $id b $name c $age d $classes {puts [format "学号=%-s 姓名=%-s 年龄=%-s 班级=%-s" $a $b $c $d] }20.已知整数123,分别取出个位数,十位数和百位数;% set i 123% set a [expr $i/100]% set b [expr $i%100/10]% set c [expr $i%10]% puts $a,$b,$c21.将下列代码未完成的地方补充完整;set ids(a) 192set ids(b) 168set ids(c) 5set ids(d) 100set lst [ array get ids ]puts $lstforeach { x y } $lst {puts "x:$x y:$y"}提示:以上代码输出结果为:x:4 y:100x:2 y:168x:3 y:522.使用if语句实现功能:变量a为10,变量b为20,若a+b>20,输出结果,反之给出错误提示信息“Error”;set i 10set j 20if {[expr $j+$i]>20} {set x [expr $i+$j]puts $x} else {puts "Error"}三代码编程题(每题10分,共40分)1.求水仙花数(水仙花数是个三位数,比如153,这个数具有个特点,153=1^3+5^3+3^3) set i 100while {$i<1000} {set a [expr $i/100]set b [expr $i%100/10]set c [expr $i%10]set d [expr int(pow($a,3)+pow($b,3)+pow($c,3))]if {$i==$d} {puts $i}incr i}2.青蛙在一口77米深的井底往上爬,白天爬7米,夜里下落5米,问第几天能爬出井口?set cn 7set day 1while {$cn<=77} {incr cn -5incr day 1incr cn +7}puts $day3.求出1-100之间所有正整数之和,包含1和100;set i 1set sum 0while {$i<=100} {set sum [expr $i+$sum]#set i [expr $i+1]}puts $sum4.输出1-100之间能被5整除的数;set i 1while {$i<=100} {set result [expr $i%5]if {$result==0} {puts $i}incr i}5.打印9行9列左上直角三角形;proc leftup {b} {for {set y 0} {$y<$b} {incr y} {set line ""for {set x 0} {$x+$y<9} {incr x} { append line *}puts $line}}puts [leftup 9]6.编写代码输出十进制转二进制的函数;proc d2b {d} {set bs ""while {$d!=0} {set y [expr $d%2]set d [expr $d/2]set bs $y$bs}return $bs}puts [d2b 77]7.编写代码判断某个1993年是否为闰年;set i 1993set a [expr $i%4]set b [expr $i%100]set c [expr $i%400]if { $a==0 | $b==0 & $c==0 } {puts "\"$i\"年是闰年"} else {puts "\"$i\"年不是闰年"}8.打印9行9列右下直角三角形。
Spirent Testcenter 自动化测试脚本 TCL(1)

Spirent Testcenter自动化测试脚本TCL -1基本功能2015-06-18 浏览(69) #!/bin/sh# aTemplate.tclexec tclsh "$0" ${1+"$@"}#-----------------------------------------------------###-----------------------------------------------------#引用STC API ,SpirentTestCenter.tcl的路径source {C:ProgramFilesSpirentCommunicationsSpirentTestCenter4.20Spirent TestCenterApplicationSpirentTestCenter.tcl}#开启日志,-logTo:日志保存路径,使用stdout为标准输出; -loglevel:可选DEBUG、INFO 、WARN 和ERROR 四种;stc::configautomationoptions -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 ]#创建Streamblock2set 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]#在发送端口创建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属性,可选参数: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#在接收端口创建analyzerset analyzer1 [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" -JumboFrameThreshold "1500" -OversizeFrameThreshold "2000"-UndersizeFrameThreshold "64" -AdvSeqCheckerLateThreshold "1000" -Name "AnalyzerConfig_1"#配置实时结果获取#结果保存在与脚本相同路径下,结果文件名为resultset generatorResult [ stc::subscribe -Parent $ProjectA-ResultParent $TxPort-ConfigType Generator-resulttypeGeneratorPortResults-filenameprefix "result"]set analyzerResult [ stc::subscribe -Parent $ProjectA-ResultParent $RxPort-ConfigType Analyzer-resulttypeAnalyzerPortResults-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的报文。
Spirent TestCenter与Ixia功能对比表

支持
软件切断网线链接
不支持
支持
端口有线序自协商
支持
不支持,端口间打环需要交叉线
快捷键
支持
不支持
协议测试模型付费
IxAutomate提供很多协议的测试
所有测试协议模型均需要付费
报文编辑的协议模板付费
提供RIP、OSPF、ICMP、IGMP、ARP、DHCP、UDP、TCP常用报文协议的模板
需要购买单独软件
流过滤器数量
每端口2条MAC,2条1定义过滤器
每端口有4个16bit和1个32bit的过滤器
流过滤器组合
SMAC、DMAC和一个自定义字段组合
任意组合
流过滤器设置
自定义字段需要计算偏移量
可直接在类似报文解析中勾选即可。直观,方便。
流过滤器范围
不可设置
可设置掩码和最大、最小范围
报文统计
端口实时统计
收发包数量、实时速率、CRC错误等
除IXIA支持的外,还提供丢包率、时延、时延抖动、错序、数据包完整性等
流统计
Stream Groups基于创建的流对应流量统计
可以基于端口、基于流、基于flow,或者基于任意字段进行单独页面的统计
自定义流统计
不支持
用户可以建立一个组,然后把一些流量放到一个组中,可以针对这个组统计,方便查看
用户可以建立一些规则,或者是定义一些关心的统计参数,方便查看
4个4字节的可变区域或6个4字节的可变区域
自定义报文编辑
计算偏移量
可在类似的报文解析界面,直观的添加或更改字段。
自定义报文轮询
数据段可以递增或循环
提供递增、递减、范围内随机、列表等
Flow的建立
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Spirent Testcenter自动化测试脚本TCL -1基本功能2015-06-18 浏览(69) #!/bin/sh# aTemplate.tclexec tclsh "$0" ${1+"$@"}#-----------------------------------------------------###-----------------------------------------------------#引用STC API ,SpirentTestCenter.tcl的路径source {C:ProgramFilesSpirentCommunicationsSpirentTestCenter4.20Spirent TestCenterApplicationSpirentTestCenter.tcl}#开启日志,-logTo:日志保存路径,使用stdout为标准输出; -loglevel:可选DEBUG、INFO 、WARN 和ERROR 四种;stc::configautomationoptions -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 ]#创建Streamblock2set 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]#在发送端口创建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属性,可选参数: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#在接收端口创建analyzerset analyzer1 [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" -JumboFrameThreshold "1500" -OversizeFrameThreshold "2000"-UndersizeFrameThreshold "64" -AdvSeqCheckerLateThreshold "1000" -Name "AnalyzerConfig_1"#配置实时结果获取#结果保存在与脚本相同路径下,结果文件名为resultset generatorResult [ stc::subscribe -Parent $ProjectA-ResultParent $TxPort-ConfigType Generator-resulttypeGeneratorPortResults-filenameprefix "result"]set analyzerResult [ stc::subscribe -Parent $ProjectA-ResultParent $RxPort-ConfigType Analyzer-resulttypeAnalyzerPortResults-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的报文。