LR-ip欺骗
1、本地的IP不能设置为“自动获取”,必须指定一个静态IP
原因:如果设置为“自动获取”,在运行IP Wizard时会弹出错误提示
提示信息为:IP向导不支持启用DHCP的网卡。您的卡启用了DHCP或者配置了无效设置。请与系统管理员联系
如果是Win7系统,要以系统管理员的身份运行
2、添加IP欺骗使用的IP后,会有提示框提示保存IP列表,确定,取消等按钮;建议保存IP列表后再确定完成
原因:保存IP列表后,下次使用时,可以直接导入IP列表;也可以直接修改保存的IP列表文件,再导入
3、添加IP欺骗,和释放IP,都要重启机器后才会生效
原因:重启后,网络配置才会生效
4、在controller中使用ip欺骗的注意事项
(1)勾选“场景”->“启用IP欺骗器”
(2)勾选“工具”->“专家模式”
(3)“场景”->“选项”->“常规”->“多个IP地址模式”
这个选项一定要与当前场景的模式相匹配,也就是说使用本地虚拟IP测试时需要选中线程方式,使用负载生成器使用虚拟IP测试时需
要选中进程方式
5、设置IP欺骗后,验证其是否生效
有两种方法查看:
(1)可用如下代码段来查看:
char *ip = lr_get_vuser_ip();
if (ip)
lr_output_message("The IP address is %s", ip);
else
lr_output_message("IP spoofing disabled");
注意:如果把上面这一段加入代码中间,第一句要修改下:
char *ip;(这句放在函数起始部位,对变量ip进行声明)
ip=lr_get_vuser_ip();(这个和后面的if-else语句一起放在要输出的地方)
另:这个在generator中是不生效的,所以在回放代码时看到的都是"IP spoofing disabled"。在contorller中设置了启用IP欺骗,
日志中就可以看到;
(2)controller的运行页,运行完场景后,在通过、失败的虚拟用户处,右键可显示VUser日志;
弹出的提示框头几行就有显示当前使用的IP
6、使用IP欺骗过程中,会有出现下述问题
启用IP欺骗后,运行1个虚拟用户的场景都失败;不启用IP欺骗后,运行场景通过;
原因:查看失败的虚拟用户,使用的IP地址(查看方法可使用第5点中的方法),在服务器端通过ping等命令查看网络是否互通;
如果服务器ping不通虚拟IP,说明网络设置有问题,检查网络设置。
遇到的错误
在运行脚本的过程中发现有不少的错误请求,于是,找开查看发现以下错误提示:“Error: Socket descriptor not found. Hint: the problem might be solved applying the following: (1) Update Run-Time Settings to Run Vuser as a process. (2) Add the following line into mdrv.dat, [lr_socks] section: 'ExtCmdLineConc=-UsingWinInet Yes'.”
解决方法:
1、根据错误提示,在run-time setting中的Miscellaneous项中设置“run vuser as a process”;(前面已将教怎么设置)
2、...\Program Files (x86)\HP\LoadRunner\dat\mdrv.dat
查找[lr_socks] 在后面添加“ ExtCmdLineConc=-UsingWinInet Yes ”,如下:
.............. [lr_socks] ExtPriorityType=hook WINNT_EXT_LIBS=lr_socks.dll WIN95_EXT_LIBS=lr_socks.dll LINUX_EXT_LIBS=liblr_socks.so SOLARIS_EXT_LIBS=liblr_socks.so HPUX_EXT_LIBS=liblr_socks.sl AIX_EXT_LIBS=liblr_socks.so LibCfgFunc=lr_socks_configure ExtMessageQueue=0 SecurityMode=OnExtCmdLineConc=-UsingWinInet Yes........
3、如果仍然报错,在菜单栏中点击Diagnostics->configuration项,将web page diagnostics项改为:Enable (这一招只能说眼不见心不烦),我觉得还有更好的解决办法。
理解误区:
1、和Generator搞混。以为添加多个IP后,需要添加多个IP对应的Generator才可以使用。(同一个Generator只需要以其某一个IP添加到Generator列表中即可以使用其它的IP。)
2、在上一个错误基础上,对于同一个脚本,创建多个Vuser执行组,然后以不同IP选择同一个物理Generator来执行。( 实际上,在场景中除非需要在这个Generator上运行多个不同脚本,否则没有必要多次以不同IP选择。)
其实只要记住两个要素即可使用这个功能:
1、 用IP wizard 添加多个IP;
2、在Controller中通过Enable IP Spoofing。
而在使用IP欺骗功能上应该注意三点:
1、虚拟IP是同一个Generator上的多个IP,这种分配过程由Controller自动来进行;
2、对于同一个Generator,你模拟的用户数量多于IP数量时,将会发生IP重复的现象,否则将随机分配不同的IP。
3、对于同一个Generator,以其某一个IP添加到Generator中即可,不需要用不同的IP添加多次。