码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-22 18:29:43      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

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 是为了添加串尾的‘\0‘结束符

  tmp=(char*)malloc(strlen(dest)+(strlen(newstr)-strlen(oldstr))+1);

  //把src内的前needle-dest个内存空间的数据,拷贝到arr

  strncpy(tmp, dest, needle-dest);

  //标识串结束

  tmp[needle-dest]=‘\0‘;

  //连接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\n",strreplace(dest, str, old, new,20));

  return 0;

  }

  输出的格式为:Action.c(58): Error: 20130827153554665

  经过上面的实现后,基本可以实现登录用户名不重复的现象了。OK!!!

 

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

标签:

原文地址:http://www.cnblogs.com/qmfsun/p/4522773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!