LoadRunner实现:模拟生成UUID/GUID

LoadRunner_GUID,关联长度问题,中文乱码,用Eclipse编写脚本,执行Linux命令,Memcached

以下均转自:http://hi.baidu.com/higkoo/blog/category/Loadrunner/index/0

LoadRunner实现:模拟生成UUID/GUID

GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。

LUID就是指locally unique identifier,GUID/UUID大家是比较熟悉的,和GUID/UUID的要求保证全局唯一不同,LUID只要保证局部唯一,就是指在系统的每一次运行期间保证是唯一的就可以了。

在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如如注册表项、类及接口标识、数据库、系统目录等对象。

灵感来自: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[i]=inStr[i-1];
strcat(outStr,"-");
for (i=14;i<18;i++)
outStr[i]=inStr[i-2];
strcat(outStr,"-");
for (i=19;i<23;i++)
outStr[i]=inStr[i-3];
strcat(outStr,"-");
for (i=24;i<37;i++)
outStr[i]=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语言实现:替换字符串中指定字符。

LoadRunner/C语言 实现:生成GUID

在LoadRunner里使用GUID有以下三种方法:

1、使用LoadRunner自带的函数:已实现。

2、使用C++封装DLL供LoadRunner调用。

3、直接调用Windows系统API,方式和第2种类似。

下面是使用第3种方式的实现示例:

vuser_init(){
lr_load_dll(“ole32.dll”);
}

char* lr_guid_gen(char* paramName){
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-%0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值