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...