loadrunner中的windows socket协议如果通过录制方式还是比较简单的,可以在data.ws中参数化一些值就可以了。但有些接口类的内容是没有办法进行录制的,只能通过手写函数实现。下面大概的说一下过程
vuser_init 部分:建立一个socket连接,要写到init里,这样在压力过程就相当于只建立一次。
#include
"lrs.h"
vuser_init()
{
lrs_create_socket("socket1","TCP","RemoteHost=111.111.111.218:12000",LrsLastArg);
}
action 部分:send是发送信息的函数,同时也具有取值的功能,这要看data.ws中的tcp/ip令命是什么。 //是调试时留下的一些代码,无具体用处
#include "lrs.h"
Action()
{
//char *ActualBuffer;
//int NumberOfBytes;
lrs_send("socket1","buf0",LrsLastArg);
lrs_send("socket1", "buf1", LrsLastArg);
//lrs_set_receive_option(Mismatch,
MISMATCH_CONTENT);
//lrs_set_recv_timeout(0,0);
//lrs_set_recv_timeout2(0,0);
//lrs_receive("socket1", "buf2", LrsLastArg);
//lrs_get_last_received_buffer("socket1", &ActualBuffer, &NumberOfBytes);
//lrs_save_param_ex("socket1", "user", ActualBuffer, 25,5, "ascii", "new_parameter");
//lrs_free_buffer(ActualBuffer);
//lr_output_message("%s", lr_eval_string("<new_parameter>"));
}
vuser_end 部分:关闭socket连接,要放到end里,这样在压力过程就相当于所有压力完成后关闭,而不是循环一次关一次
#include "lrs.h"
vuser_end()
{
lrs_close_socket("socket1");
}
data.ws 部分 send是对应action中的send请求。set queue的意思是:向queue这个key里面写入51211这个值/ get queue的意思是取了刚写入到queue这个key里面的值。
;WSRData 2 1
send buf0 40
"set queue 0 0
5\r\n"
"51211\r\n"
send
buf1 8
"get queue\r\n"
-1