• loadrunner获取毫秒及字符串替换实现


    loadrunner获取毫秒及字符串替换实现
    
    
      今天做一个性能测试,参数化要求创建用户名不可以重复,想来想不没有什么好的办法来避免用户名字的重复。所以就想用时间+随机数来实现,但是实现中遇到一个问题。
      名字中不可以包含.这个特殊的字符的。所以要处理一下.字符串,于是就想一个C语言实现的字符串替换函数。loadrunner默认没有字符串替换函数,不知道为什么不做呢?
    
      (1)毫秒实现方法
    
         通过创建date/time参数,设置格式为:%Y%m%d%H%M%S.000
    
      (2)替换字符串函数
    
    char *strreplace(char *dest, char *src, const char *oldstr, const char *newstr, size_t len)
    
    {
    
    
    
    
    /* @param char* dest 目标串,也就是替换后的新串
    
    * @param const char* src 源字符串,被替换的字符串
    
    * @param const char* oldstr 旧的子串,将被替换的子串
    
    * @param const char* newstr 新的子串
    
    * @param int len 将要被替换的前len个字符*/
    
    
    
    
    
    
    
    //子串位置指针
    
    char *needle;
    
    //临时内存区
    
    char *tmp;
    
    
    
    
    //如果串相等,则直接返回
    
    if(strcmp(oldstr, newstr)==0){
    
    return src;
    
    }
    
    
    
    
    //把源串地址赋给指针dest,即让dest和src都指向src的内存区域
    
    dest = src;
    
    //如果找到子串, 并且子串位置在前len个子串范围内, 则进行替换, 否则直接返回
    
    while((needle = (char *) strstr(dest, oldstr)) && (needle -dest <= len)){
    
    //分配新的空间: +1 是为了添加串尾的''结束符
    
    tmp=(char*)malloc(strlen(dest)+(strlen(newstr)-strlen(oldstr))+1);
    
    
    
    //把src内的前needle-dest个内存空间的数据,拷贝到arr
    
    strncpy(tmp, dest, needle-dest);
    
    
    
    //标识串结束
    
    tmp[needle-dest]='';
    
    
    
    //连接arr和newstr, 即把newstr附在arr尾部, 从而组成新串(或说字符数组)arr
    
    strcat(tmp, newstr);
    
    
    
    //把src中 从oldstr子串位置后的部分和arr连接在一起,组成新串arr
    
    strcat(tmp, needle+strlen(oldstr));
    
    
    
    //把用malloc分配的内存,复制给指针retv
    
    dest = (char *)strdup(tmp);
    
    
    
    //释放malloc分配的内存空间
    
    free(tmp);
    
    }
    
    
    
    
       (3)验证函数可用性
    
    
    
    
    
    Action()
    
    {
    
          char *str=lr_eval_string("{Hm}");
    
    char *old=".";
    
    char *new="";
    
    char *dest;
    
    lr_error_message("%s
    ",strreplace(dest, str, old, new,20));
    
    return 0;
    
    } 
    
    
    
    
      输出的格式为:Action.c(58): Error: 20130827153554665
    
    
    
    
     经过上面的实现后,基本可以实现登录用户名不重复的现象了。OK!!!
    
  • 相关阅读:
    委托和异步方法
    线程池_ThreadPool
    委托_deleget
    一步一步实现视频播放器client(二)
    mysql忘记password
    POJ 2456 Aggressive cows (二分 基础)
    Fragment小结
    Cocos2d-x粒子系统
    淘宝数据库OceanBase SQL编译器部分 源代码阅读--解析SQL语法树
    C与C++在形參的一点小差别
  • 原文地址:https://www.cnblogs.com/qmfsun/p/4575461.html
Copyright © 2020-2023  润新知