LR作成Socketスクリプトメソッド2(ファイルからメッセージを読み込む)
3388 ワード
前に、LoadRunnerがsocketプロトコルスクリプトを作成する基本的な方法とルールを共有しました.今日は、ローカルファイルからコンテンツを読み取り、メッセージとしてサービス側に送信する方法を共有します.この方法も私が仕事の中で出会った難点で、この方法を通じて、いくつかの取引のメッセージをパラメータ化し、異なるファイルを反復的に読み取ることで、異なる取引メッセージを送信することができると思っています.
1.intとendはデフォルトと一致し、説明しない.
2.Actionスクリプト作成
#include "lrs.h"
Action()
{
int rc,rv;//
char *recvBuf;//
int recvLen;//
int count, total = 0;
char buffer[1000];
long file_stream;
char * filename = "E:/LR_date/ZHQZ/LR_scripts/baowen.txt";
if ((file_stream = fopen(filename, "rb")) == NULL ) {
lr_error_message ("Cannot open %s", filename);
return -1;
}
// Read until end of file
while (!feof(file_stream)) {
// Read 1000 bytes while maintaining a running count
count = fread(buffer,sizeof(char), 1000, file_stream);
lr_output_message ("%d bytes read", count);
// lr_output_message (" buffer :
%s", buffer);
if (ferror(file_stream)) { /* Check for file I/O errors */
lr_output_message ("Error reading file %s", filename);
break;
}
total += count; // Add up actual bytes read
}
// Display final total
lr_output_message ("Total number of bytes read = %d", total );
// Close the file stream
if (fclose(file_stream))
lr_error_message ("Error closing file %s", filename);
// memcpy(buffer+271,lr_eval_string(""),8);
lrs_save_param_ex("socket0", "user", buffer, 0, strlen(buffer),NULL, "paraBuf");
rc=lrs_create_socket("socket0","TCP","RemoteHost=188.123.123.233:1234", LrsLastArg);
lr_start_transaction(" ");//
// socket ( data.ws )
lrs_send("socket0", "buf1", LrsLastArg); // buf0
rv = lrs_receive("socket0", "buf2", LrsLastArg);//
// buffer
lrs_get_last_received_buffer("socket0",&recvBuf,&recvLen);
/* , , ,*/
if(recvLen>3)
{
lr_end_transaction(" ",PASS);
}
else
{
lr_end_transaction(" ",FAIL);
lr_error_message(" ! :[%s]",recvBuf);
}
lrs_free_buffer(recvBuf);// recvBuf ,
lrs_close_socket("socket0");
return 0;
}
スクリプトの上半分は、あるパスの下からファイルの内容を読み込むことを指定します.ファイル内のフィールドをパラメータ化したい場合はどうすればいいかと言う人がいます.そこでmemcpyという関数を用いてパラメータ化することができ、例えばmemcpy(buffer+271,lr_eval_string(""),8);//これは、読み出しメッセージの272ビットから279ビットに対してパラメトリックプールcustIDを呼び出す値であり、合計8ビットバイトをパラメトリック化するものである.3.data.ws作成
;WSRData 2 1
send buf1 683
""
recv buf2 350
""
-1
ここで、メッセージはActionで取得され、lrs_save_param_ex関数関連付けはparaBufパラメータに格納される.この場合、上記のようにパラメータ名で直接呼び出すことができます.ENDing...