使用tcpcopy對采集項目進行負載測試已經接近尾聲了,由于下一個項目的采集程序只能在windows下運行,所以不得不尋找其他的測試工具。首先看了一下Jmeter,發現它好像沒有模擬TCP協議的功能,然后我就想到了LoadRunner的winSocket。折騰了一下,實驗成功?,F在把實驗的過程分享給大家。
一、實驗目標
用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; } |
原文轉自:http://www.anti-gravitydesign.com