如何用LoadRunner模拟PDA向服务器发送数据(2)-构造数据

上一篇 / 下一篇  2009-06-12 12:41:22 / 个人分类:LoadRunner学习

2.1 SQL脚本

下面是一个示例。(与LoadRunner脚本示例对应)

方法如下:

1.      13SQL服务器的数据库TEST2009”中,创建了表encodebase64

该表有三列uuid_sourceuuid_targetmsguuid,分别对应:

uuid_source uuid,未经过base64编码。

uuid_targetuuid,经过了base64编码。

Msguuid,消息的UUID

2.      13SQL服务器的数据库“TEST2009”中,创建函数Base64_encode

该函数是在网上找的,实现了Base64编码功能。脚本在下面。

3. 运行批量脚本。如下。

 

--批量生成数据(最终脚本)

declare @i int,@num int

set @i=0

set @num=100

while @i<@num

begin

 

      declare @id varchar(50),@dt varchar(50),@msgid varchar(50)

      set @id=newid()   --生成UUID

      set @id = replace(@id, '-', '') --uuid中的短横线删除

      set @msgid=newid()    --生成msgUUID

      set @msgid = replace(@msgid, '-', '') --msguuid中的短横线删除

      set @dt=[TEST2009].[dbo].[base64_encode](@id)

      insert into encodebase64(uuid_source,uuid_target,msguuid)values(@id,@dt,@msgid);

 

set @i=@i+1

end

 

 

函数Base64_encode脚本如下:

--创建base64编码的函数

CREATE   FUNCTION   base64_encode  

  (  

      @plain_text   varchar(6000)  

  )  

  RETURNS    

                      varchar(8000)  

  AS   BEGIN  

  --local   variables  

  DECLARE  

      @output                 varchar(8000),  

      @input_length           integer,  

      @block_start            integer,  

      @partial_block_start    integer,   -- position of last 0,   1   or   2   characters  

      @partial_block_length   integer,  

      @block_val              integer,  

      @map                    char(64)  

  SET @map='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'  

  --initialise   variables  

  SET   @output= ''  

  --set length and count  

  SET   @input_length =LEN(@plain_text+'#')- 1  

  SET   @partial_block_length   =   @input_length   %   3  

  SET   @partial_block_start   =   @input_length   -   @partial_block_length  

  SET   @block_start               =   1  

  --for each block  

  WHILE   @block_start < @partial_block_start     BEGIN  

      SET @block_val = CAST(SUBSTRING(@plain_text,   @block_start,   3)   AS   BINARY(3))  

      --encode   the   3   character   block   and   add   to   the   output  

      SET @output = @output   +   SUBSTRING(@map,   @block_val   /   262144   +   1,   1)  

                                                  +   SUBSTRING(@map,   (@block_val   /   4096   &   63)   +   1,   1)  

                                                  +   SUBSTRING(@map,   (@block_val   /   64   &   63     )   +   1,   1)  

                                                  +   SUBSTRING(@map,   (@block_val   &   63)   +   1,   1)  

      --increment   the   counter  

      SET   @block_start   =   @block_start   +   3  

  END  

  IF   @partial_block_length   >   0  

  BEGIN  

      SET   @block_val   =   CAST(SUBSTRING(@plain_text,   @block_start,   @partial_block_length)  

                                              +   REPLICATE(CHAR(0),   3   -   @partial_block_length)   AS   BINARY(3))  

      SET   @output   =   @output  

    +   SUBSTRING(@map,   @block_val   /   262144   +   1,   1)  

    +   SUBSTRING(@map,   (@block_val   /   4096   &   63)   +   1,   1)  

    +   CASE   WHEN   @partial_block_length   <   2  

          THEN   REPLACE(SUBSTRING(@map,   (@block_val   /   64   &   63     )   +   1,   1),   'A',   '=')  

          ELSE   SUBSTRING(@map,   (@block_val   /   64   &   63     )   +   1,   1)   END  

    +   CASE   WHEN   @partial_block_length   <   3  

          THEN   REPLACE(SUBSTRING(@map,   (@block_val   &   63)   +   1,   1),   'A',   '=')  

          ELSE   SUBSTRING(@map,   (@block_val   &   63)   +   1,   1)   END  

  END  

  --return   the   result  

  RETURN   @output  

  END  

  GO  


TAG:

 

评分:0

我来说两句

Open Toolbar