Loadrunner中socket腳本分析

在很多系統之間交互時,都是直接使用socket接口,分享下lR對socket腳本開發


Socket是一套建立在TCP/IP協議上的接口不是一個協議,只要底層實現TCP IP協議,都可以用socket進行通信。


init文件:

#include "lrs.h"

vuser_init()
{
    lrs_startup(257); // 初始化 WinSock DLL


    return 0;
}


action文件

#include "lrs.h"

Action()
{   
int rc;//保存創建socket,返回值
char *ActualBuffer; //保存返回報文

 int NumberOfBytes; //保存返回報文長度
         int rend_status,resp_start=0;//保存發送和接收,返回值

//創建返回socket
rc=lrs_create_socket("socket0", "TCP", "RemoteHost=96.0.49.180:12016",LrsLastArg);

//判斷是否創建socket成功
if(rc!=0){
lr_output_message("Create socket 96.0.45.67:12015 Error, Error Code:%d", rc); 
lr_fail_trans_with_error("Not Create Socket!!!\n");
goto END_TRANSACTION;
}

//保存開始事務
lr_start_transaction("test");

//發送報文,報文保存buf0中,buf0在data.ws中定義
rc=lrs_send("socket0", "buf0", LrsLastArg);

lrs_set_recv_timeout(80, 0); //設置接收超時
lrs_set_recv_timeout2(10,0);//接收數據包長度比對超時

//接收報文,保存到buf1,buf1是data.ws文件中定義
       rc=lrs_receive("socket0", "buf1", LrsLastArg);


if(rc!=0 && rc!=LRS_RECV_MISMATCH) {    
lr_fail_trans_with_error("Not Receive Response_Packet!!!\n");
goto END_TRANSACTION;
}

//socket0返回報文,搜索匹配值

lrs_save_searched_string("socket0",LRS_LAST_RECEIVED,"result","LB=<ret_code>","RB=</ret_code>\n",1,0,-1);

lrs_save_searched_string("socket0",LRS_LAST_RECEIVED,"error_msg","LB=<ret_explain>","RB=</ret_explain>\n",1,0,-1);

//判斷返回報文內容,

if (strcmp(lr_eval_string("<result>"),"00000")!=0) {
//設置事務fail
lr_fail_trans_with_error("Response_Packet retcode:%s ",lr_eval_string("<error_msg>"));
}
END_TRANSACTION: //設置goto點
lr_end_transaction("test", LR_AUTO);//記錄結束事務
lrs_free_buffer(ActualBuffer);//釋放內存
        lrs_close_socket("socket0");// 關閉socket
    return 0;
}

end文件中

#include "lrs.h"
vuser_end()
{
    lrs_cleanup(); //
    return 0;
}


data.ws文件:

;WSRData 2 1

send  buf0 *   //發送報文
"0000096799PAY1661009   <?xml version=\"1.0\" encoding=\"GB2312\"?><ebank>"

recv buf1 1   //接收報文
"1"
-1


注意:

1、本腳本爲短鏈接腳本,固創建socket中保存中action中,如果是長鏈接,則將創建socket部分代碼移到init中,將關閉socket部分代碼移到end中。

2、data.ws文件不要//“”註釋,這種方式註釋內容會在保存到報文中






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章