2012-03-03 49 views
1

我的Load Runner测试项目打算初始化500个虚拟用户,然后运行50个虚拟用户。所以我在下面的“Action”函数中编写脚本让450个虚拟用户跳转到“vuser_end”。Load Runner:如何从“Action”跳转到“vuser_end”

int userID; 
lr_whoami(&userID,NULL,NULL); 
if(userID<451) 
{ 
    lr_exit(LR_EXIT_VUSER, LR_PASS); 
    return; 
} 

但“lr_exit”功能设置的虚拟用户的“通”的状态,绝不会执行“vuser_end”。

什么函数可以让虚拟用户停止运行并在运行结束后跳转到“vuser_end”?

谢谢你提前帮忙。

回答

1

返回0; \一般重复 返回1; \忽略迭代间隔并立即迭代 返回-1; \不作进一步的迭代

它真的听起来像是你在结构上需要一个不同类型的用户的第二个条件。考虑第二种用户类型,它只是在动作中有以下几种:

Action() 
{ 
int rampup, \\in seconds 
    idletime; \\in seconds 

sleep(rampup *1000); 
sleep(idletime *1000); 

return 0; 
} 

为单次迭代安排此操作,然后让用户在此时放入自然vuser_end。

+0

我试过睡在刚才的“行动”中,但是睡眠时间里包含的回复时间。所以“睡眠”会导致测试结果达不到性能指标。 – 2012-03-05 02:31:00

+1

鉴于您的后续评论,我可以添加以下内容。 (1)睡眠是为了让用户持续一次init的迭代,保持一段时间,然后缓慢下降。(2)如果你正在接收一个时间度量,那只是因为你为动作调整了自动事务。 (3)如果你想让它保持你的整个测试,然后删除rampup变量,将你的迭代时间减少到零,并简单地安排一个组与这些用户先增加,运行在测试期间,然后减速在第一组(实际工人)完成之后。 – 2012-03-05 13:29:21

+0

@SharpKid,@JamesPulley,解决这个问题不能简单地通过在调用lr_exit(LR_EXIT_VUSER,LR_PASS)之前添加'vuser_end()'这一行来解决。 – Pacerier 2015-05-18 07:28:57

0

看起来像你想lr_abort,这是直接从文档:

的lr_abort功能中止脚本的执行。它停止执行theActions部分,执行vuser_end部分并结束执行。由于特定的错误条件,您需要手动中止运行时,此功能非常有用。当使用此功能结束运行时,状态为“已停止”。

+0

我刚才在“Action”中尝试过“lr_abort”,但是虚拟用户立即停止。我想让虚拟用户在所有虚拟用户用完之后停止,就像正常场景的时间表一样。 – 2012-03-05 02:48:56

0

创建一个应该在所有其他用户运行后应该运行的脚本依赖于它们的脚本。