Websocket ApacheJMeter-需要线程范围变量
我正在尝试运行websocket负载测试,并发现我需要访问线程范围中定义的变量 具体地说,我需要随机生成一个UUID,用作伪用户ID。我们的API要求在每个请求中将其作为参数传递: 使用UUID发送身份验证请求 -这将创建一个输入系统信息的用户帐户 等待回应 使用UUID发送同步/初始化循环 UUID是应用程序id。我可以通过UUID函数使用用户定义的变量轻松地随机化,但是,用户定义的变量显然在测试开始时计算一次,而我需要在线程组范围内生成它们。有办法吗?如果现在,我如何才能做到这一点 换句话说,我需要为每个线程(作为用户)随机生成UUID,线程组中的每个采样器都可以访问该UUIDWebsocket ApacheJMeter-需要线程范围变量,websocket,jmeter,load-testing,Websocket,Jmeter,Load Testing,我正在尝试运行websocket负载测试,并发现我需要访问线程范围中定义的变量 具体地说,我需要随机生成一个UUID,用作伪用户ID。我们的API要求在每个请求中将其作为参数传递: 使用UUID发送身份验证请求 -这将创建一个输入系统信息的用户帐户 等待回应 使用UUID发送同步/初始化循环 UUID是应用程序id。我可以通过UUID函数使用用户定义的变量轻松地随机化,但是,用户定义的变量显然在测试开始时计算一次,而我需要在线程组范围内生成它们。有办法吗?如果现在,我如何才能做到这一点 换句话说
提前谢谢 您可以使用
Beanshell预处理器
作为第一个需要UUID的采样器,如下所示
vars.put(“uuid”,“${uuid}”)代码>
用户/线程的线程组中的所有其他采样器都将具有相同的UUID,可以使用${UUID}
访问它。我在负载测试期间确实遇到了这个问题,解决方案是
使用历元时间(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())}