一、设置python环境

1. 从以下路径中将StcPython.py文件拷贝出来

Linux:

/Installdir/Spirent_TestCenter_4.xx/Spirent_TestCenter_Application_Linux/API/Python

Windows:

C:\Program Files (x86)\Spirent Communications\Spirent TestCenter 4.xx\SpirentTestCenter Application\API\python

2. 将StcPython.py文件放到您的工作文件夹中

3. 编辑StcPython.py文件,修改STC_PRIVATE_INSTALL_DIR变量,将路径指向STC的安装文件夹

Linux:

os.environ['STC_PRIVATE_INSTALL_DIR'] = "/opt/Spirent_TestCenter_4.xx/Spirent_TestCenter_Application_Linux/"

Windows:

os.environ['STC_PRIVATE_INSTALL_DIR'] = "C:\Program Files (x86)\SpirentCommunications\Spirent TestCenter 4.xx\Spirent TestCenter Application"

4. 加载STC的python包

from StcPython import StcPython

stc = StcPython()

print stc.get('system1','version')

运行结果:

'4.66.8916.0000'

二、testcenter代码阅读

1. StcPython.py

self.stcInt = __import__('StcIntPython27')  #根据python版本,导入StcIntPython,相对于给StcIntPython27取了一个别名,取名为stcInt,后续的connect、create、delete、disconnect均使用此别名

python2.7导入StcIntPython27.py

其他的导入StcIntPython.py

2.StcIntPython27.py

import _StcIntPython27    #这个文件的后缀为pyd文件,pyd为python扩展文件,一般用C、C++编写

有四个静态方法:

_unpackArgs

_packKeyVal

_unpackGetResponseAndReturnKeyVal

_unpackPerformResponseAndReturnKeyVal

三、python API的添加

STC已经提供了tcl API,打算按照测试需要将其转换为python格式的API,具体分为以下几步:

1.先手动在STC GUI界面中确认需要组什么包,完成什么的操作,需要哪些参数,确认手动操作是OK的。

2.查看STC API官方手册Spirent_TestCenter_Automation_Obj_Ref.pdf,找到相应的命令接口。

3.使用tcl手动发下命令,确认找到的命令是否合适,参数输入是否正确。

4.转义为python格式的API。

比如说有如下需求,要求提供python接口的IGMPV3 API,按照如上步骤:

1.略

2.pdf文档中IGMPV3在Page1540、Page1391、Page1392

3.STC的本地安装路径中已经有tcl可执行程序,无法单独下载,个人电脑路径如下:

c:\Program Files (x86)\Spirent Communications\Spirent TestCenter 4.66\Spirent TestCenter Application\Tcl\bin\tclsh85.exe

如下是tcl中输入的代码,请参考:

#引用STC API ,SpirentTestCenter.tcl的路径

source {c:/Program Files (x86)/Spirent Communications/Spirent TestCenter 4.66/Spirent TestCenter Application/SpirentTestCenter.tcl}

#配置机框Ip 槽位 端口号

set classisAddress "10.27.130.21"

set slotPort1 "11/5"

set slotPort2 "11/6"

#创建一个项目

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 "//$classisAddress/$slotPort1"]

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

#在发送端口下创建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]

#####################################################################################

#添加igmpv3 join report

set strigmp_report [stc::create igmp:Igmpv3Report -under $StreamBlock(1) -name igmp_1 -type 22]

#添加igmpv3 join report全部参数list

set strigmp_report [stc::create igmp:Igmpv3Report -under $StreamBlock(1) -name igmp_1 -numGrpRecords 0 -type 22]

#igmp3头上添加Group Records

set grerecords [stc::create grpRecords -under $strigmp_report]

stc::create GroupRecord -under $grerecords -recordType CHANGE_TO_EXCLUDE_MODE

#igmp3头上添加Group Records全部参数list

stc::create GroupRecord -under $grerecords -auxDataLen 0 -mcastAddr 225.0.0.1

-Name

my_mygrouprecord -numSource 0 -recordType 4

#####################################################################################

#如果添加igmpv2 join报文,改写如下

stc::create igmp:Igmpv2Report -under $StreamBlock(1) -name igmp_1 -type 16 -maxRespTime 0 -groupAddress 225.0.0.1

#如果添加igmpv2 leave报文,改写如下

stc::create igmp:Igmpv2Report -under $StreamBlock(1) -name igmp_1 -type 17 -maxRespTime 0 -'groupAddress 225.0.0.1

#####################################################################################

#如果添加igmpv1 join报文,改写如下

stc::create igmp:Igmpv1 -under $StreamBlock(1) -name igmp_1 -type 2 -groupAddress 225.0.0.1 -unused 0

#如果添加igmpv1 leave报文,改写如下

stc::create igmp:Igmpv1 -under $StreamBlock(1) -name igmp_1 -type 1 -groupAddress 225.0.0.1 -unused 0

#保存xml文件

stc::perform SaveAsXml -config $ProjectA -filename d:/igmp.xml

Spirent_TestCenter_Automation_Obj_Ref.pdf中给出的均是参数列表,编程时如何拼接使用,请参考Spirent-TestCenter-Automation-Conf-Prog-Guide.pdf

以IGMPV3为例,PDF中作如下描述:

Igmpv3Report的父节点是StreamBlock,所以tcl代码如下:

set strigmp_report [stc::create igmp:Igmpv3Report -under $StreamBlock(1) -name igmp_1 -numGrpRecords 0 -type 22]

grpRecords是Igmpv3Report的子节点,参数为空,tcl代码如下:

set grerecords [stc::create grpRecords -under $strigmp_report]

GroupRecord的父节点是grpRecords,所以tcl代码如下:

stc::create GroupRecord -under $grerecords -auxDataLen 0 -mcastAddr 225.0.0.1 -Name my_mygrouprecord -numSource 0 -recordType 4

4.python转义语句涉及为公司写的代码,不再描述。

python .center用法_python之testcenter操作相关推荐

  1. python .center用法_Python Pandas Series.str.center()用法及代码示例

    Series.str可用于以字符串形式访问系列的值并对其应用几种方法. Pandas Series.str.center()函数用于在系列/索引中的字符串的左侧和右侧填充其他字符.该功能等效于Pyth ...

  2. python 数据字典用法_python数据字典的操作

    一.什么是字典? 字典是Python语言中唯一的映射类型. 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表. 字典对象是可变的,它是一个容器 ...

  3. python staticsmodels用法_python自动化之models 进阶操作二

    ################################################################## # PUBLIC METHODS THAT ALTER ATTRI ...

  4. python基本用法_Python基本用法总结

    Python 的设计具有很强的可读性,易于使用.这里对python基本用法做一个总结介绍. 一. 变量类型 1. 变量赋值 Python中的变量赋值不需要类型声明,每个变量在使用前都必须赋值,变量赋值 ...

  5. python del用法_python del()函数用法 -电脑资料

    示例程序如下: >>> a = [-1, 3, 'aa', 85] # 定义一个list >>> a [-1, 3, 'aa', 85] >>> ...

  6. python try用法_python中的try的用法

    展开全部 try语句32313133353236313431303231363533e78988e69d8331333431366238是python里面的控制语句,与except,finally配合 ...

  7. python glob用法_python glob的安装和使用

    原博文 2018-12-28 10:53 − 基本概念 glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,类似于Windows下的文件搜索,支持通配符操作.*,?,[ ...

  8. python end用法_python中end的使用方法

    python中end的使用方法 发布时间:2020-06-17 09:47:13 来源:亿速云 阅读:178 这篇文章给大家分享的是有关python中end的使用方法,小编觉得挺实用的,因此分享给大家 ...

  9. python center函数_python pandas移动窗口函数rolling的用法

    超级好用的移动窗口函数 最近经常使用移动窗口函数,觉得很方便,功能强大,代码简单,故将pandas中的移动窗口函数都做介绍.它都是以rolling打头的函数,后接具体的函数,来显示该移动窗口函数的功能 ...

  10. python elseif用法_python学习笔记(一)

    0.前言 本文是根据廖雪峰python教程学习总结而来. 参考<python学习手册>,<流畅的python>以及python官方手册等网络资料 略过了与C和C++ 语言相同的 ...

最新文章

  1. 【翻译】在Sencha应用程序中使用插件和混入
  2. WCF传递强类型DataSet【源码】
  3. Eclipse如何从SVN更新和上传修改部分项目
  4. 海康摄像头 海思AI芯片(Hi35XX): 图像jpg转.bgr
  5. Android 监听home键(android:launchMode=singleTask 与 onNewIntent(Intent intent) 的用法
  6. Spring MVC DispatcherServlet介绍(2)
  7. C++泛型编程实现哈希表(开散列法)
  8. 自定义控件省市区:仿苹果级联菜单
  9. 高通平台Bring-up
  10. PHP调用微信发放现金红包接口
  11. html embed高度自适应,腾讯优酷视频分享iframe,embed高度多种比例控制
  12. 使用ADSL拨号服务器搭建自己的代理IP
  13. 人脸识别客户端应用程序_如何在应用程序中使用功能识别设置人脸检测
  14. 翻译:如何成功How to be successful OpenAI CEO山姆奥特曼
  15. Java多线程 信号量和屏障实现控制并发线程数量,主线程等待所有线程执行完毕2
  16. 下载b站外挂字幕,用 potplayer 播放视频也能看字幕了
  17. 放弃蚂蚁offer,选择农行软开!
  18. 如何使用灰灰美国专利下载软件一键下载美国专利
  19. require与import的区别和使用
  20. GPRS核心网信息元素—P-TMSI

热门文章

  1. 【SAP-CO】成本中心会计报表
  2. 如何设置计算机桌面待办事项,Windows电脑桌面云便签怎么设置每天提醒待办事项?...
  3. APS计划排程系统和生产排产系统,需要哪些基础资料(一)
  4. 的it生活_双子IT男性格随和、爱美食懂生活,会给女朋友准备小惊喜 | 企鹅来电VOL.03...
  5. 人生苦短_人生苦短的说说、句子及图片
  6. 圆角矩形大小怎么调整html,html圆角矩形
  7. python计算机器人运动学分析_orocos_kdl学习(二):KDL Tree与机器人运动学
  8. ma5671怎么设置_电信/联通/移动,更换华为MA5671光猫详细教程
  9. 微信网页投诉php,【分享】买的thinkphp微信无投诉按钮源码
  10. GCC --verbose选项, -lpthread 和-pthread的区别