执行压力测试,脚本回放没有问题,但在场景中就报错:
“Action.c(55): Error: C interpreter run time error: Action.c (55): Error -- memory violation : Exception ACCESS_VIOLATION received.”
查找parameter list中参数设置,发现总是出现一些参数文件读取方式自动改变,由之前的“same line as xxxx”变为“sequential”,一直在修改参数文件,不断替换,仍然解决不了问题,便回到脚本,回放不报错,但将迭代次数为1次(默认)改为2次,开始报错:
正常日志:
[html] view plaincopy
Action.c(37): Notify: Parameter Substitution: parameter "租户IP" = "saastestpj19.chinaedu.net:8080"
Action.c(49): Notify: Parameter Substitution: parameter "学生用户名19" = "125028032"
<strong>Action.c(49): Notify: Saving Parameter "用户名 = 125028032".</strong>
Action.c(55): Notify: Next row for parameter 学生密码19 = 22803 [table = 学生密码19].
Action.c(55): Notify: Getting new value for parameter '学生密码19': table = '学生密码19.dat' column = '0' row = '22803'.
Action.c(55): Notify: Parameter Substitution: parameter "学生密码19" = "125028032"
<strong>Action.c(55): Notify: Saving Parameter "密码 = 125028032".</strong>
Action.c(61): Notify: Next row for parameter 学生姓名19 = 22803 [table = 学生姓名19].
Action.c(61): Notify: Getting new value for parameter '学生姓名19': table = '学生姓名19.dat' column = '0' row = '22803'.
Action.c(61): Notify: Parameter Substitution: parameter "学生姓名19" = "125028032"
<strong>Action.c(61): Notify: Saving Parameter "学生姓名 = 125028032"</strong>
异常日志,即第二次开始迭代日志:
[html] view plaincopy
Action.c(37): Notify: Parameter Substitution: parameter "租户IP" = "saastestpj1.chinaedu.net:8080"
Action.c(49): Notify: Parameter Substitution: parameter "学生用户名19" = "124939121"
Action.c(49): Notify: Parameter Substitution: parameter "学生用户名1" = "124357652"
<strong>Action.c(49): Notify: Saving Parameter "用户名 = 124939121124357652".</strong>
Action.c(55): Notify: Next row for parameter 学生密码19 = 13912 [table = 学生密码19].
Action.c(55): Notify: Parameter Substitution: parameter "学生密码19" = "124939121"
Action.c(55): Notify: Next row for parameter 学生密码1 = 9764 [table = 学生密码1].
Action.c(55): Notify: Parameter Substitution: parameter "学生密码1" = "124357652"
<strong>Action.c(55): Notify: Saving Parameter "密码 = 124939121124357652".</strong>
Action.c(61): Notify: Next row for parameter 学生姓名19 = 13912 [table = 学生姓名19].
Action.c(61): Notify: Parameter Substitution: parameter "学生姓名19" = "124939121"
Action.c(61): Notify: Next row for parameter 学生姓名1 = 9764 [table = 学生姓名1].
Action.c(61): Notify: Parameter Substitution: parameter "学生姓名1" = "124357652"
<strong>Action.c(61): Notify: Saving Parameter "学生姓名 = 124939121124357652"</strong>
用户名,密码,姓名随着迭代进行累加组合,这样肯定不对。
部分脚本:
[html] view plaincopy
Action()
{
char userNameFile[200];
char passWordFile[200];
char realNameFile[200];
char numstr[10];
char *ip, *num, *fileNameStr, *passwordFileNameStr, *realNameFileNameStr;
ip = lr_eval_string("{租户IP}");
num=getDomainNum(ip);
fileNameStr = "学生用户名";
passwordFileNameStr = "学生密码";
realNameFileNameStr = "学生姓名";
//根据租户IP读取对应的用户名参数文件
strcat(userNameFile, "{");
strcat(userNameFile, fileNameStr);
strcat(userNameFile, num);
strcat(userNameFile, "}");
lr_save_string(lr_eval_string(userNameFile),"用户名");
修改后的脚本:
[html] view plaincopy
Action()
{
//修改2014-09-11;增加数组初始化,否则迭代2次以上时参数叠加,执行失败
char userNameFile[200]={'\0'};
char passWordFile[200]={'\0'};
char realNameFile[200]={'\0'};
char numstr[10];
char *ip, *num, *fileNameStr, *passwordFileNameStr, *realNameFileNameStr;
ip = lr_eval_string("{租户IP}");
num=getDomainNum(ip);
fileNameStr = "学生用户名";
passwordFileNameStr = "学生密码";
realNameFileNameStr = "学生姓名";
//根据租户IP读取对应的用户名参数文件
strcat(userNameFile, "{");
strcat(userNameFile, fileNameStr);
strcat(userNameFile, num);
strcat(userNameFile, "}");
lr_save_string(lr_eval_string(userNameFile),"用户名");
即对声明的数组进行初始化。否则在迭代中会将新取得的参数与之前的参数累加组合,而这样的参数数据库中并不存在,导致执行失败;
初始化数组后,问题解决
--转自
该贴由koei123转至本版2015-2-6 4:58:23