loadrunner生成随机uuid的方法

在globals.h中定义方法:

char* lr_guid_gen(char* paramName){                         //生成GUID方法

typedef struct _GUID    {

unsigned long Data1;

unsigned short Data2;

unsigned short Data3;

unsigned char Data4[8];

} GUID;

GUID m_guid;

char buf[50];

char pNameStr[50];

CoCreateGuid(&m_guid);

// 定义输出格式

//sprintf (buf, "{%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", // 大写

sprintf (buf, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",// 小写

//sprintf (buf, "%08lX%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X",// 小写

m_guid.Data1, m_guid.Data2, m_guid.Data3,

m_guid.Data4[0], m_guid.Data4[1], m_guid.Data4[2], m_guid.Data4[3],

m_guid.Data4[4], m_guid.Data4[5], m_guid.Data4[6], m_guid.Data4[7]);

lr_save_string(buf, paramName);

sprintf(pNameStr,"{%s}",paramName);

return lr_eval_string(pNameStr);

}

在Action中调用该方法:

char *test;

lr_load_dll("ole32.dll");      //引用windows生成GUID的API

test=lr_guid_gen("GUID");      //调用上面lr_guid_gen()方法

lr_save_string(test,"GUID");

lr_output_message(test);

lr_output_message("xxxxxxxxxxxxx:%s",lr_eval_string("{GUID}"));

另外一种方法:

LUID就是指locally unique identifier,GUID/UUID大家是比较熟悉的,和GUID/UUID的要求保证全局唯一不同,LUID只要保证局部唯一,就是指在系统的每一次运行期间保证是唯一的就可以了。    灵感来自:LoadRunner生成唯一数 + LoadRunner实现:计算字符串Md5 。
   原理非常简单,先生成唯一字符串,然后算Md5。以下代码就是在Md5的基础上稍稍加工一下:
void Md5toLUID(char* inStr,char *outStr)
 {
     int i;
     strncpy(outStr,inStr,8);
     strcat(outStr,"-");
     for (i=9;i<13;i++)
         outStr=inStr[i-1];
     strcat(outStr,"-");
     for (i=14;i<18;i++)
         outStr=inStr[i-2];
     strcat(outStr,"-");
     for (i=19;i<23;i++)
         outStr=inStr[i-3];
     strcat(outStr,"-");
     for (i=24;i<37;i++)
         outStr=inStr[i-4];
     strcat(outStr,"\0");
 }

调用方法:
void main()
 {
     char uStr[33],lStr[37];
     int i;

     for (i=0;i<10;i++) {
         lr_save_int(i,"iValue");
         GetUniqueString(lr_eval_string("{iValue}"),uStr);
         GetMd5FromString(uStr,uStr);
         Md5toLUID(uStr,lStr);
         lr_output_message(lStr);
     }
 } 

输出:
main.c(18): b7f163a8-f89c-59e3-6705-a3823a358c0d
 main.c(18): 20fcb7ab-0879-9572-fb5b-5c9848b37930
 main.c(18): 869b718d-126c-eaeb-b099-b1ec15d3c9db
 main.c(18): fd12c050-0975-3641-1de9-3685431d4a01
 main.c(18): 604bbc51-e787-1955-d721-ee5032640629
 main.c(18): 4fffdc48-0c44-66c9-34d7-697e473d20da
 main.c(18): a5d0d30c-5053-03e8-6e1a-1f112ef49007
 main.c(18): 4babb152-de2f-1136-d4a6-8aa78a90f2c7
 main.c(18): 833f6f33-da3d-efeb-7ec8-95f5491bf1a1
 main.c(18): 89148aad-8040-e70c-b406-69d56f570293
    测试的时候这个LUID,就可以当成GUID/UUID使用了。除非同时使用了多个Contorller而且脚本组名也相同,而且即使是如此,取到重复值的机率也非常小!
 函数就是在拼接“-”到指定位置,平常用得更多的是字符串替换:C语言实现:替换字符串中指定字符 。
时间: 2024-12-28 02:27:36

loadrunner生成随机uuid的方法的相关文章

[三卷天书]记一个asp.net生成两个日期范围内生成随机时间的方法

想网上找个生成随机天数的方法找不到,后面只得自己写了,贴给大家方便使用 思路:算两个日期的相差天数,然后在0到相差天数的范围内生成随机数,再用结束时间的天数部分减去这个随机数,代码: /// <summary> /// (在两个时间范围内)生成随机日期 /// </summary> /// <param name="startime">开始时间</param> /// <param name="endtime"&

生成随机验证码的方法

1.借助列表 import random def random_code(): random_list = [] for i in range(4): ra = random.randrange(4) if ra == i: random_list.append(chr(random.randrange(97,122))) else: random_list.append(str(random.randrange(0,9))) code = "".join(random_list) r

Java中生成随机字符的方法总结

package learnExercise; public class RandomCharacter { public static char getRandomCharacter(char ch1,char ch2){ return (char)(ch1+Math.random()*(ch2-ch1+1));//因为random<1.0,所以需要+1,才能取到ch2 } public static char getRandomLowerCaseLetter(){ return getRand

loadrunner 生成随机参数 Radom相关

我也是刚开始进入测试行业,不过比较幸运的我之前做过开发,所以对代码比较熟悉,对loadrunner没有进行过系统的学习,也是通过自己的摸索慢慢的积累知识. 今天遇到项目中要我做一个压力测试,其中一些参数不是固定的,需要每次传参都不一致,比如参数顺序号码,20位的数字. 那在loadrunner中要怎么设置这个参数呢? 1.首先在脚本中选择这个参数如图 右键单击“替换参数”,弹出下面页面 参数名称可以随意填写,最好和参数名称一致,参数类型选择随机数,然后单击属性设置按钮,弹出如下面: 这个就是设置

PostgreSQL: 一种用于生成随机字符串的方法

create or replace function random_string(integer) returns text as $body$ select array_to_string(array(select substring('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' FROM (ceil(random()*62))::int FOR 1) FROM generate_series(1, $1)),

loadrunner生成随机数

loadrunner生成随机数 对网站注册进行压力测试时,需要对注册的用户名进行参数化,因为可以会用到大量的测试数据,所以选择通过生成随机数来进行参数化.最开始用loadrunner自带的参数随机功能,代码如下: "Name=RegForm[name]", "Value={NewParam}", ENDITEM, 参数化选择为:random number 因系统对用户名的位数做了限制,同时为了方便统计,将代码修改为: "Name=RegForm[name]

生成随机验证码,上传图片文件,解析HTML

1.生成随机图片验证码 1.1 页面调用createvalidatecode 生成随机图片验证码方法: <div class="inputLine"><label>验证码</label> <input type="text" maxlength="4" autocomplete="off" name="verifycode" style="ime-mode

Oracle中生成uuid的方法

Oracle中生成uuid的方法 下载LOFTER客户端 在Oracle SQL 提供了一个生成uuid的函数sys_guid: http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/functions187.htm#i79194 http://en.wikipedia.org/wiki/Universally_unique_identifier SQL> select sys_guid() from dual ; SYS_

javascript 生成UUID(方法1)

可以先直接在线生成一个uuid,预览一下, 这个网站不错,可以选择uuid version,还可以直接去掉中划线,好用的不得了啊,哈哈http://www.uuid.online/ /*! Math.uuid.js (v1.4) http://www.broofa.com mailto:[email protected] Copyright (c) 2010 Robert Kieffer Dual licensed under the MIT and GPL licenses. */ /* *