使用tcpcopy对采集项目进行负载测试已经接近尾声了,由于下一个项目的采集程序只能在windows下运行,所以不得不寻找其他的测试工具。首先看了一下Jmeter,发现它好像没有模拟TCP协议的功能,然后我就想到了LoadRunner的winSocket。折腾了一下,实验成功。现在把实验的过程分享给大家。
一、实验目标
用LoadRunner Windows Sockets发送数据给TCP服务,查看数据是否发送成功。
二、实验工具和实验方法
1.实验工具及下载
LoadRunner 11 下载地址 传送门
SocketsEcho.java(由博主simon友情提供) 下载地址 传送门
wireshark 下载地址 传送门
2.实验方法
启动SocketsEcho这个java程序,对TCP某一个端口进行监听,然后使用LoadRunner Windows Sockets编写脚本向TCP服务发送数据,期间使用wireshark对数据包进行抓包分析。
本次实验需要两台机器,因为如果TCP服务跟LoadRunner在一台机器上的话,发送的TCP数据包会直接走协议栈,不走网卡,这样就会导致wireshark就抓不到数据 (by GodLaughing)
三、实验步骤
1.编译并运行SocketsEcho
1
2
3
|
javac SocketsEcho.java #编译 java SocketsEcho #运行 |
该程序默认监听6000端口,如果需要修改请修改类的PORT属性。接收到TCP数据包会将内容打印出来,但不要输入中文,打印会乱码。
2.编写VuGen测试脚本
1) 初始化用户:创建WinSocket,连接TCP服务器端
1
2
3
4
5
6
7
8
|
vuser_init() { lrs_create_socket( "socket0" , "TCP" , "LocalHost=192.168.10.208:4001" , "RemoteHost=192.168.10.165:6000" ,LrsLastArg); return 0; } |
LocalHost中输入LoadRunner所在机器IP和端口,RemoteHost中输入SocketsEcho所在IP和端口。
2)发送数据buf1,插入事物可对其进行监控
1
2
3
4
5
6
7
8
9
|
Action() { lr_start_transaction( "Socket_Send" ); lrs_send( "socket0" , "buf1" , LrsLastArg); lr_end_transaction( "Socket_Send" , LR_AUTO); return 0; } |