C loadrunner使用每个VUser上载唯一的文件
我想在每次运行VUser脚本时上传一个唯一的文件(如控制器场景中的#VUser),我在不同的论坛上找到了一些示例,并将它们放在一起尝试完成此任务:C loadrunner使用每个VUser上载唯一的文件,c,file-upload,loadrunner,C,File Upload,Loadrunner,我想在每次运行VUser脚本时上传一个唯一的文件(如控制器场景中的#VUser),我在不同的论坛上找到了一些示例,并将它们放在一起尝试完成此任务: Action() { char command[100]; sprintf(command, “copy C:\\source_dir\\srcFile.txt C:\\source_dir\\srcFile-%s.txt”, lr_eval_string (”{iteration_number}”)); system(
Action()
{
char command[100];
sprintf(command, “copy C:\\source_dir\\srcFile.txt C:\\source_dir\\srcFile-%s.txt”,
lr_eval_string (”{iteration_number}”));
system(command);
web_submit_data("FileUpload",
"Action={URL}",
"Method=POST",
"EncType=multipart/form-data",
"TargetFrame=",
"RecContentType=text/html",
"Mode=HTML",
ITEMDATA,
"Name=File", "Value=C:\\source_dir\\srcFile-%s.txt", "File=yes", ENDITEM,
LAST);
sprintf(command, “del C:\\source_dir\\srcFile-%s.txt”, lr_eval_string (”{iteration_number}”));
system(command);
return 0;
}
然而,这个脚本每次创建100个文件,这不是我想要的帮凶。
1.如何修改脚本以创建100个唯一文件(一次)。
2.然后在控制器中每个VUser运行一次上载(web_submit_data功能)。
3.然后最后删除文件
可能将文件生成放在VUser脚本的init中,将文件删除放在VUser脚本的结尾部分?您有两个选项
我想你的剧本就快写好了。我看到的问题是,对于正在创建的文件,您没有足够唯一的文件名。100个用户中的每一个都将以相同的迭代编号开始 您可以尝试这样做,在脚本的参数列表中创建一个名为“vuser”的新参数,并将其指定为类型“vuser ID”。当您在控制器中运行vuser时,它将填充为单个vuser的编号。这将确保用户在使用该文件时不会相互踩踏。将其添加到文件名中,如下所示:
sprintf(command, "copy C:\\source_dir\\srcFile.txt C:\\source_dir\\srcFile-%s%s.txt,
lr_eval_string ("{iteration_number}")
lr_eval_string ("{vuser}") );
只要您的所有用户都在控制器中的同一个组中,这就可以工作。如果在多个组中使用此选项,则通过在文件名中添加“组名”参数来执行相同的操作。Ok。我赞成你的第一个建议。您实际上建议我将所有预生成的文件存储在外部磁盘上,将其连接到控制器或load generator,并在我的脚本中引用此外部磁盘(在我的脚本的参数设置中),对吗?除非您使用ESATA,否则外部磁盘将更慢。本地最快的方法是使用内部SSD作为每个load generator上的第二个驱动器。将预生成的文件存储在第二个内部硬盘上,然后使用参数文件将文件名和位置信息传递给脚本。我假设您将在测试期间密切监视负载生成器,以查看测试中的任何偏差,并且您将至少有三个负载生成器(两个用于主负载,一个用于控制)。您很可能需要更多的负载generators@JamesPulley,+1关于硬盘瓶颈的好建议。另请参阅