python之testcenter操作

本文介绍如何在Spirent TestCenter环境中搭建Python开发环境,包括配置Python环境、加载STC Python包及使用Python API进行测试案例开发的过程。此外,还详细解释了如何将TCL API转换为Python API,并通过实例展示了IGMP V3 API的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、设置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++编写

有四个静态方法:

  1. _unpackArgs
  2. _packKeyVal
  3. _unpackGetResponseAndReturnKeyVal
  4. _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转义语句涉及为公司写的代码,不再描述。

  

  

  

 

  

转载于:https://www.cnblogs.com/hester/p/5956834.html

### 使用 TestCenter 构造 DHCP 报文 TestCenter 是一种功能强大的网络测试工具,支持多种协议的流量生成和分析。要构造 DHCP 报文,可以通过其脚本接口(通常是基于 Python 的 API)来实现自定义报文。 以下是关于如何使用 TestCenter 构建 DHCP 请求或响应报文的具体方法: #### 1. 配置基本环境 在开始之前,需确保已安装并配置好 TestCenter 软件及其开发库。通常情况下,API 文档会提供详细的初始化说明[^2]。 ```python from ixnetwork_restpy import ApiHelper, SessionAssistant session_assistant = SessionAssistant(IpAddress='testcenter_ip', RestPort=80) api_helper = session_assistant.ApiHelper ``` 上述代码用于连接到 TestCenter 设备,并创建一个会话实例以便后续操作[^3]。 #### 2. 创建流组 为了发送 DHCP 流量,需要先定义一个新的流组。此过程涉及指定源 MAC 地址、目标 IP 和其他必要字段。 ```python streamblock = api_helper.Streams.Create( PortName="port_1", Name="DHCP Stream" ) # 设置基础属性 streamblock.FrameSize.Fixed = 256 streamblock.Rate.PercentLineRate = 10 ``` 以上片段展示了如何设置帧大小以及速率百分比等基本信息[^4]。 #### 3. 定义 DHCP 协议层 接下来,在流中嵌入具体的 DHCP 数据包结构。这一步骤可能较为复杂,因为需要手动填充多个选项字段。 ```python dhcp_layer = streamblock.ProtocolStack.Ethernet().Ipv4().Dhcp() # 填充典型参数 dhcp_layer.TransactionId.Increment(start_value=1, step_value=1) dhcp_layer.ClientHardwareAddress.Fix(hex_string="00:1A:C5:FF:FE:A9") # 添加特定选项 option_list = dhcp_layer.Options.Add() option_list.Type.Set(value=53) # Message Type Option option_list.Length.Set(value=1) option_list.Value.Set(byte_array=[1]) # Discover message type code ``` 通过这些命令可以精确控制所发出的数据包内容,包括事务 ID、客户端硬件地址以及其他可选参数[^5]。 #### 4. 启动传输 最后一步就是启动实际的数据传送动作。 ```python traffic_item = api_helper.Traffic.TrafficItem.find(Name="DHCP Traffic") traffic_item.Generate() traffic_item.StartStatelessTrafficBlocking() ``` 执行该序列后即可观察由设备产生的相应 DHCP 流量行为[^6]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值