zoukankan      html  css  js  c++  java
  • loadrunner生成随机uuid的方法

    在globals.h中定义方法:

    方法:
      1、将生成GUID方法放在新建的GUID.h文件中;
      2、把这个文件放入脚本保存处;
      3、在globals.h中增加函数头“#include "GUID.h"”;
      4、直接引用(备注:如果要将生成的GUID
      作为请求参数,必须先用lr_save_string函数转换成LoadRunner能识别的参数,否则无法使用)


    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,"");
     }
    
    调用方法:
    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语言实现:替换字符串中指定字符 。
    
    
  • 相关阅读:
    洛谷p1056
    __int64
    杭电2057
    4.4清北学堂Day1 主要内容:数论,数学
    递推的一点理解
    高精度减法
    高精度加法
    p1184高手之在一起
    对于rqy今天讲座的一些理解和看法吧
    PHP.21-商品信息管理
  • 原文地址:https://www.cnblogs.com/qmfsun/p/4575377.html
Copyright © 2011-2022 走看看