性能测试工具 IxChariot:Tcl脚本调用方法介绍

ixChariot是一款功能强大的性能测试软件,可用来测试有线和无线性能,可以模拟真实应用程序流量,并提供关键性能指标,包括吞吐量、丢包、抖动、延迟、MOS等。本文简单介绍如何使用IxChariot Tcl API来实现自动化跑流。

IxChariot测试网络

一个基本的IxChariot测试网络主要包括三个部分:

  • IxChariot控制端:可以安装IxChariot软件的Windows PC
  • Endpoint 1:接收IxChariot控制端的测试脚本和数据,与Endpoint 2 进行跑流测试,并将所有测试结果返回到IxChariot控制端。
  • Endpoint 2:与Endpoint 1通信,接收Endpoint 1的测试脚本和数据,并将测试结果返回给Endpoint 1

通常在IxChariot控制端电脑的IxChariot软件配置跑流脚本,在Endpoint 1Endpoint 2 两个电脑上安装并启动Endpoint。然后就可以在IxChariot控制端运行跑流脚本,测试结果会返回到控制端。

IxChariot软件页面的手动配置这里就不介绍了,下面主要介绍如何使用Chariot API来实现自动化跑流。

IxChariot API简介

IxChariot API支持使用C语言和Tcl脚本来驱动IxChariot跑流,我们可以通过IxChariot API来创建、执行、保存和提取测试结果。

下图是IxChariot包与IxChariot API、endpoint之间的工作流程。

IxChariot API中的对象是分层的,其包含的分层结构如下图:

以下对象在测试对象中单独实例化,然后添加到测试对象示例中:

pair

hardware pair

VoIP pair

VoIP hardware pair

application group

video pair

multicast group

video multicast group

multicast pair

channel

receiver

IxChariot测试必须至少包含一个 pair 对象:pair,hardware pair, VoIP pair, video pair, multicast group, 或者 video multicast group对象实例。当测试开始执行时,会自动创建时间记录(timing record)对象实例。

IxChariot Tcl包提供的方法可在帮助文档中查看。

IxChariot环境安装

本文主要介绍IxChariot Tcl API的简单使用,这里介绍Tcl跑流的环境安装步骤。

1. 安装IxChariot

在IxChariot控制端电脑(Windows系统)上安装,我使用的是默认安装路径:C:\Program Files (x86)\Ixia\IxChariot

2. 安装endpoint

安装系统平台对应的endpoint,支持Windows、Linux和macOS系统。

1、Windows系统安装

Windows系统双击安装即可。

启动endpoint的cmd命令:

$ net start IxiaEndpoint

停止endpoint进程的cmd命令:

$ net stop IxiaEndpoint

2、Linux系统安装

Linux rpm包安装方法:

$ rpm -ivh pelinux_amd64_95.rpm

Linux 源码包安装方法:

$ cd endpoint
$ tar -xvzf pelinux_amd64_730.tar.gz
$ ./endpoint.install accept_license

启动endpoint:

$ setsid  /usr/local/Ixia/endpoint

停止endpoint进程:

$ /usr/local/Ixia/endpoint –k

3. 安装Tcl

使用IxChariot Tcl API时,建议在命令行执行Tcl脚本来运行IxChariot:

$ tclsh myTest.tcl

因此需要安装一下Tcl环境,Tcl下载地址:https://www.tcl.tk/software/tcltk/download.html

安装完成后,需要将tcl安装bin目录添加到环境变量。

IxChariot Tcl API

下面列举一些 IxChariot Tcl 包创建普通 pair 的一些常用方法。

chrRunOpts

用于定义和获取测试运行选项,比如设置跑流时间:

set test [chrTest new]
#设置测试时间值
set runOpts [chrTest getRunOpts $test]
chrRunOpts set $runOpts TEST_END FIXED_DURATION
chrRunOpts set $runOpts TEST_DURATION 30

必须将 TEST_END 设置为 FIXED_DURATION时,TEST_DURATION 值才会生效。

chrPair set

设置pair属性

chrPair set pair1 PROTOCOL $pro; # 设置协议
chrPair set pair1 E1_ADDR IP地址; # 设置Endpoint 1 address
chrPair set pair1 E2_ADDR IP地址; # 设置Endpoint 2 address

chrPair useScript

给pair设置测试脚本

chrPair useScript pair1 Throughput.scr;

chrPair setScriptVar

设置脚本变量,比如

chrPair setScriptVar pair1 file_size $filesize};#发送字节数
chrPair setScriptVar pair1 send_buffer_size $buffersize; # buffer大小
chrPair setScriptVar pair1 send_data_rate $datarate};#发送速率

读取结果

可以使用 chrCommonResults getchrPairResults get 方法来读取测试结果。

set runingtime [chrCommonResults get pair1 MEAS_TIME; # 运行时间
set throughput [chrPairResults get pair1 THROUGHPUT; # THROUGHPUT结果

更多API用法可参考接口文档,下面列举创建pair和VoIPPair的示例。

Tcl脚本示例

pair创建实例

set e1 "localhost"
set e2 "localhost"
set script "c:/Program Files/Ixia/IxChariot/Scripts/Throughput.scr"
set testFile "c:/Program Files/Ixia/IxChariot/tests/lbtest.tst"
set timeout 60

# (1)加载Chariot包
load ChariotExt
package require ChariotExt

# (2)创建测试对象
set test [chrTest new]
set runOpts [chrTest getRunOpts $test]
chrRunOpts set $runOpts TEST_END FIXED_DURATION
chrRunOpts set $runOpts TEST_DURATION $timeout; #设置测试运行时间
    
# (3)创建pair对象
set pair [chrPair new]

# (4)设置pair属性
chrPair set $pair E1_ADDR $e1 E2_ADDR $e2
chrPair set $pair PROTOCOL TCP; #设置协议

# (5)设置测试脚本
chrPair useScript $pair $script
chrPair setScriptVar $pair file_size 1000000;#发送字节数
chrPair setScriptVar $pair send_buffer_size 1500;#buffer大小
chrPair setScriptVar $pair send_data_rate "20 Mb";#发送速率

# (6)添加pair到测试对象中
chrTest addPair $test $pair

# (7)运行测试
chrTest start $test

# (8)等待测试结束
set $timeout [expr 10 + $timeout]
if {![chrTest isStopped $test $timeout]} {
 puts "ERROR: Test didn’t stop"
 chrTest delete $test force
 return
}

# (9)打印

puts "==========="
puts "Test setup:\n----------"
puts "Number of pairs = [chrTest getPairCount $test]"
puts "E1 address : [chrPair get $pair E1_ADDR]"
puts "E2 address : [chrPair get $pair E2_ADDR]"
# We didn’t set the protocol, but let’s show it anyway.
puts "Protocol : [chrPair get $pair PROTOCOL]"
# We’ll show both the script filename and
# the application script name.
puts "Script filename : [chrPair get $pair SCRIPT_FILENAME]"
puts "Appl script name: [chrPair get $pair APPL_SCRIPT_NAME]"

# (10)读取测试结果: 吞吐量
puts ""
puts "Test results:\n------------"
puts "Number of timing records = \
[chrPair getTimingRecordCount $pair]"

set throughput [chrPairResults get $pair THROUGHPUT]
set avg [format "%.3f" [lindex $throughput 0]]
set min [format "%.3f" [lindex $throughput 1]]
set max [format "%.3f" [lindex $throughput 2]]
puts "Throughput:"
puts " avg $avg min $min max $max"

# (11)保存测试结果
puts "Save the test..."
chrTest save $test $testFile

# (12)清理
chrTest delete $test force

return

VoIPPair创建实例

set e1 "localhost"
set e2 "localhost"
set timeout 60

# (1)加载Chariot包
load ChariotExt
package require ChariotExt

# (2)创建测试对象
set test [chrTest new]
set runOpts [chrTest getRunOpts $test]
chrRunOpts set $runOpts TEST_END FIXED_DURATION
chrRunOpts set $runOpts TEST_DURATION $timeout; #设置测试运行时间

# (2)创建voippair对象
set voippair1 [chrVoIPPair new]; # VoIP Pair创建

# (3)设置pair属性
chrPair set $voippair1 E1_ADDR $e1 E2_ADDR $e2
chrPair set $voippair1 QOS_NAME "VoIPQoS";
chrVoIPPair set $voippair1 CODEC "G711u";    

# (4)添加voippair1到测试对象中
chrTest addPair $test $voippair1

# (5)运行测试
chrTest start $test

# (6)等待测试结束
if {![chrTest isStopped $test $timeout]} {
 puts "ERROR: Test didn’t stop in 2 minutes!"
 chrTest delete $test force
 return
}

# (7)读取测试结果
# MOS
set mos [chrPairResults get $voippair1 MOS_ESTIMATE]
set mos_avg [format "%.3f" [lindex $mos 0]]
puts "MOS_avg $mos_avg"        

# 时延
set delay [chrPairResults get $voippair1 END_TO_END_DELAY]
set delay_avg [lindex $delay 0]
set delay_avg [format "%.1f" $delay_avg]
puts "END_TO_END_DELAY $delay_avg"

# 丢包率
set bytes_recv_e2 [chrCommonResults get $voippair1 BYTES_RECV_E2]
# puts ""
# puts "BYTES_RECV_E2: $bytes_recv_e2"
set bytes_sent_e1 [chrCommonResults get $voippair1 BYTES_SENT_E1]
# puts "BYTES_SENT_E1: $bytes_sent_e1"
set bytes_lost_rate [format "%.4f" [expr ($bytes_sent_e1 - $bytes_recv_e2)/$bytes_sent_e1]]
set bytes_lost_rate [expr $bytes_lost_rate*100]
puts "BYTES_LOST_RATE $bytes_lost_rate"

# (11)保存测试结果
puts "Save the test..."
chrTest save $test $testFile

# (12)清理
chrTest delete $test force

return

其它

执行tst文件

可以使用runtst工具来执行创建的tst文件:

$ cd C:\Program Files (x86)\Ixia\IxChariot
$ runtst.exe -t20 C:\\Users\DELL\\Documents\\IxChariot\\TESTS\\demo.tst d:\\test\\demo.tst

Python执行TCL脚本

除了使用Python的 os.popen 或者 subprocess.Popen 调用编写好的Tcl脚本执行测试外,也可以使用Python的Tcl库来执行Tcl命令:

from Tkinter import Tcl

tcl = Tcl()
# 加载ChariotExt库
tcl.eval("load ChariotExt")
tcl.eval("package require ChariotExt")

注意:

  1. 执行此Python脚本的电脑必须安装好IXChariot控制端软件,否则无法加载ChariotExt.dll动态链接库。
  2. 如果ChariotExt.dll为32位VC++环境编译,Python也需要32位。
--THE END--
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
测试QoS功能时,到处找这个软件都没有找到,现在找到了跟大家分享一下 这个软件功能很强大,目前手机上也可以作为endpoint,有安卓、iphone、windows mobile的。   美国IXIA公司的应用层性能测试软件IxChariot是一个独特的测试工具,也是在应用层性能测试领域得到业界认可的测试系统。对于企业网而言,IxChariot可应用于设备选型、网络建设及验收、日常维护等3个阶段,提供设备网络性能评估、故障定位和SLA基准等服务。    IxChariot由两部分组成:控制端(Console)和远端(Endpoint),两者都可安装在普通PC或者服务器上,控制端安装在Windows操作系统上,远端支持各种主流的操作系统。 IxChariot的主要功能   IxChariot可以模拟多节点之间的多种应用流:   IxChariot支持多种网络业务,内置超过160个业务脚本,如FTP,HTTP,IPTV,Netmeeting,RealAudio,BitTorrent等。   IxChariot支持IP TOS,Generic QoS,DiffServ等优先级应用。   IxChariot能实现模拟超过10000对终端节点间的应用流。   IxChariot支持组播业务流。   IxChariot在VoIP网络测试与业务质量评估:   目前支持多种VOIP Codec(G.711a,G.711a ,G.723.1-ACELP,G.723.1-MPMLQ,G.726,G.729等)。   支持MOS评分,便于对VOIP网络进行实时分析。   IxChariot在6.10版本中实现对Video的模拟:   可以测量 MDI ,即媒体流丢失率和延迟的组合评价指标。支持MPEG2流和用户自定义的video流格式。   IxChariot全面支持IPv6测试应用:   支持协议:TCP-IPv6、UDP-IPv6、RTP-IPv6等   支持应用:包括FTP、HTTP、WEB、SAP、Exchange、IPTV、Real、VoIP、Multicasting等在内的160余种主流网络应用。在流媒体和VoIP中都可以使用Ipv6进行测试,得出相应得测试结果,包括吞吐量、响应时间、单路延迟、丢包、抖动等测试参数。 IxChariot能够对电信终端进行性能测试和评估:   IxChariot能够测试网卡(10/100/1G/无线/蓝牙),xDSL调制解调器,Cable Modem, ISDN。终端,普通调制解调器,GPRS手机,CDMA手机。   IxChariot还可以用于测试防火墙及应用网关。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值