我正在尝试运行websocket负载测试,并发现我需要访问在线程范围内定义的变量。
具体来说,我需要随机生成一个UUID作为伪用户ID。我们的API要求将其作为每个请求的参数传递:
使用UUID发送auth请求 - 这将创建一个键入系统信息的用户帐户 等待回应 循环使用UUID发送同步/初始化
UUID是应用ID。我可以通过UUID函数使用用户自定义变量轻松随机化,但是,用户定义的变量显然在测试开始时计算一次,而我需要在线程组范围生成它们。有没有办法做到这一点?如果现在,我怎么能实现这个目标?
换句话说,我需要为每个线程(充当用户)随机生成UUID,线程组中的每个采样器都可以访问它。
提前致谢!
答案 0 :(得分:0)
您可以使用Beanshell preprocessor
作为第一个需要此UUID的采样器,如下所示。
vars.put("uuid", "${__UUID}");
用户/线程的线程组中的所有其他采样器将具有相同的UUID,并且可以使用${uuid}
访问它。
答案 1 :(得分:0)
我在负载测试期间遇到过这个问题,解决方案是
使用纪元时间(ms)并附加UUI值。这是解决方案,因为纪元时间永远不会相同,如果同时发出两个事务,UUI每次都会更改。因此,无论何时运行测试,这些值都应该是唯一的。下面是参考代码
epoch Time:${__javaScript(Math.round(new Date().getTime()))}
UUID: ${__BeanShell(UUID.randomUUID().toString())}
Combination is :${__javaScript(Math.round(new Date().getTime()))}_${__BeanShell(UUID.randomUUID().toString())}