Loadrunner C/S关联函数(LSP)and(LSSS) 使用-案例

Loadrunner C/S关联函数(LSPAND(LSSS) 使用-案例(1

LSP就是lrs_save_param()函数
LSSS
就是lrs_save_searched_string()函数
一下我们用一个例子去说明他们的使用.
C/S
机制和 B/S不一样,特别是有一个data.ws
里面的数据就是一些向服务端发的数据包和服务端返回的数据包
以下就是我录制完以后的data.ws内容

;WSRData 2 1

send  buf0 55
 "4##SELECT agent_name FROM AGENTS ORDER BY agent_name###"

recv  buf1 55
 "0##Alex#Amanda#Debby#Julia#Mary#Robert#Sharon#Suzan###"
 "\x00"

send  buf2 68
 "2##1## SELECT DISTINCT departure FROM Flights ORDER BY departure ###"

recv  buf3 56
 "0##Denver#Los Angeles#Portland#San Francisco#Seattle###"
 "\x00"

send  buf4 298
 "2##0##SELECT departure, flight_number, departure_initials, day_of_week, ar"
 "rival_initials, arrival, departure_time, arrival_time, airlines, seats_ava"
 "ilable, ticket_price, mileage   FROM  Flights WHERE arrival = 'Portland' A"
 "ND departure = 'Denver' AND day_of_week = 'Friday'ORDER BY flight_number #"
 "##"

recv  buf5 128
 "0##5787;250;5587;03:11 PM;DEN;Friday;POR;04:52 PM;NW;164;Denver#6242;250;6"
 "042;08:00 AM;DEN;Friday;POR;11:00 AM;AA;177;Denver###"
 "\x00"

send  buf6 82
 "11##UPDATE Counters SET counter_value=counter_value+1 WHERE table_name='OR"
 "DERS'###"

recv  buf7 8
 "0##1###"
 "\x00"

send  buf8 67
 "12##SELECT counter_value FROM Counters WHERE table_name='ORDERS'###"

recv  buf9 10
 "0##101###"
 "\x00"

send  buf10 72
 "12##SELECT customer_no FROM Customers WHERE customer_name=''###"

recv  buf11 9
 "0##-1###"
 "\x00"

send  buf12 85
 "11##UPDATE Counters SET counter_value=counter_value+1 WHERE table_name='CU"
 "STOMERS'###"

recv  buf13 8
 "0##1###"
 "\x00"

send  buf14 70
 "12##SELECT counter_value FROM Counters WHERE table_name='CUSTOMERS'###"

recv  buf15 9
 "0##31###"
 "\x00"

send  buf16 81
 "11##INSERT INTO Customers (customer_name,customer_no) VALUES ('',"
 " )###"

recv  buf17 8
 "0##1###"
 "\x00"

send  buf18 58
 "12##SELECT agent_no FROM Agents WHERE agent_name=''###"

recv  buf19 8
 "0##4###"
 "\x00"

send  buf20 195
 "11##INSERT INTO Orders (order_number,agent_no,customer_no,flight_number,de"
 "parture_date,tickets_ordered,class,send_signature_with_order) VALUES (,"
 " , , 6242, {d '2011-11-11'}, 1, '3', 'N')###"

recv  buf21 8
 "0##1###"
 "\x00"

send  buf22 13
 "11##COMMIT###"

recv  buf23 8
 "0##0###"
 "\x00"


-1

下面就是我们的ACTION 里面的脚本了


#include "lrs.h"


Action()
{
 int random;
 lrs_create_socket("socket0", "TCP", "RemoteHost=172.16.2.9:3456",  LrsLastArg);

    lrs_send("socket0", "buf0", LrsLastArg); //返回agent name

    lrs_receive("socket0", "buf1", LrsLastArg); 
 srand(time(NULL));
 random=rand() % 8 + 2;
 lrs_save_searched_string("socket0", NULL, "agent", "LB=#", "RB=#", random,0,-1);

    lr_think_time(12);

    lrs_send("socket0", "buf2", LrsLastArg); //返回航班起始地和目的地

    lrs_receive("socket0", "buf3", LrsLastArg);
    lr_think_time(13);

    lrs_send("socket0", "buf4", LrsLastArg);  //查询航班信息

    lrs_receive("socket0", "buf5", LrsLastArg);

    lr_think_time(18);

    lrs_send("socket0", "buf6", LrsLastArg);  //生成订单号

    lrs_receive("socket0", "buf7", LrsLastArg);

    lrs_send("socket0", "buf8", LrsLastArg); //返回订单号码

    lrs_receive("socket0", "buf9", LrsLastArg);
 
 lrs_save_param("socket0", NULL, "orderno", 3, 3); //
利用关联返回订单号

    lrs_send("socket0", "buf10", LrsLastArg);  //查找是否是新用户,新用户返回-1,否则返回客户编号

    lrs_receive("socket0", "buf11", LrsLastArg);
 lrs_save_param("socket0", NULL, "userid", 3, 2);
 if (strcmp(lr_eval_string(""),"-1")==0)
 {
    lrs_send("socket0", "buf12", LrsLastArg);//
生成客户编号

    lrs_receive("socket0", "buf13", LrsLastArg);

    lrs_send("socket0", "buf14", LrsLastArg);//返回客户编号

    lrs_receive("socket0", "buf15", LrsLastArg);
 lrs_save_param("socket0", NULL, "userid", 3, 2);
    lrs_send("socket0", "buf16", LrsLastArg);//
插入客户记录

    lrs_receive("socket0", "buf17", LrsLastArg);
 };
    lrs_send("socket0", "buf18", LrsLastArg); //
返回agent id

    lrs_receive("socket0", "buf19", LrsLastArg);
    lrs_save_param("socket0", NULL, "agentid", 3, 1);
    lrs_send("socket0", "buf20", LrsLastArg); //
插入订单记录

    lrs_receive("socket0", "buf21", LrsLastArg);

    lrs_send("socket0", "buf22", LrsLastArg);  //提交

    lrs_receive("socket0", "buf23", LrsLastArg);

    lr_think_time(7);  

    return 0;
}

srand(time(NULL));
 random=rand() % 8 + 2;
 lrs_save_searched_string("socket0", NULL, "agent", "LB=#", "RB=#", random,0,-1);

我们从这段代码开始分析。

srand(time(NULL));
 random=rand() % 9 + 2;

这个随机数的作用是为了

lrs_save_searched_string("socket0", NULL, "agent", "LB=#", "RB=#", random,0,-1);

函数从

recv  buf1 55
 "0##Alex#Amanda#Debby#Julia#Mary#Robert#Sharon#Suzan###"
 "\x00"

中随机获得一个关联数据,为什么是数据说的范围是2-9呢,细看一下

##Alex#Amanda#Debby#Julia#Mary#Robert#Sharon#Suzan###

就知道以左边界和右边界为#的是有11D,不过只有第二开始到第九个才是对我们有用的。

所以我们这样取值。从上面我们也可以看出WINSOCKET协议里面使用的关联和HTTP/HTML协议里面的关联函数是有区别的,区别是http的协议里面关联函数的位置一定要在打开的页面的前面,在Winsocket里面是在后面。

所以执行完以下脚本

srand(time(NULL));
 random=rand() % 8 + 2;
 lrs_save_searched_string("socket0", NULL, "agent", "LB=#", "RB=#", random,0,-1);

agent就会随机得到 AlexAmandaDebbyJuliaMaryRobertSharonSuzan 其中的一个。

 

我再来分析

lrs_save_param("socket0", NULL, "orderno", 3, 3);

这段代码 data.ws包里面提取所以要的数据

recv  buf9 10
 "0##101###"
 "\x00"

从以下的范例

lrs_save_param ( char *s_desc,char *buf_desc, char *param_name, int offset, int param_len);

可以看出

lrs_save_param("socket0", NULL, "orderno", 3, 3);

是从"0##101###"的第3位开始取值,取3位,所以

Orderon=101

再来说一说这两个函数的一个大家不太了解的地方,然后就结束本章。

lrs_save_searched_string("socket0", NULL, "agent", "LB=#", "RB=#", random,0,-1);

lrs_save_param("socket0", NULL, "orderno", 3, 3);

其中我们都发现 有一个NULLNULL的作用就是在刚从服务端里面的数据中取值,

lrs_send("socket0", "buf8", LrsLastArg); //返回订单号码
lrs_receive("socket0", "buf9", LrsLastArg);
lrs_save_param("socket0", NULL, "orderno", 3, 3);

如果写NULL,我们要从buf9中取值的话,关联函数就得在

lrs_receive("socket0", "buf9", LrsLastArg);
的后面

如果

lrs_receive("socket0", "buf10", LrsLastArg);

lrs_save_param("socket0", NULL, "orderno", 3, 3);

就是在duf10中取值。

还有一种情况如果在

lrs_receive("socket0", "buf10", LrsLastArg);

后面取duf9的值就必须这么写

lrs_save_param("socket0","buf9", "orderno", 3, 3);

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14401924/viewspace-628554/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14401924/viewspace-628554/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值