我们如何在 Groovy 中使用内置的 jmeter 函数?

Jul*_*rty 2 groovy jmeter jmeter-plugins

我似乎花了很长时间试图找到一种获取信息的方法,例如machineName我想在两种不同的编程语言中使用https://jmeter.apache.org/usermanual/functions.html,在 Groovy 代码中(而不是 BeanShell 等),并且在 Java 中。

在 groovy 中,我尝试使用ctx, varsprops但无济于事。

同样,如果能在 Java Sampler 中发现如何做同样的事情也会很棒。据我所知,我可以获得一些信息,例如使用的线程编号,JMeterContextService.getContext().getThreadNum()但我还没有找到交互/使用主要 JMeter 函数的方法。

一种方法可能是重新实现这些函数,尤其是在它们被描述的地方,例如“machineName 函数返回本地主机名。这使用 Java 方法InetAddress.getLocalHost()并将其传递给getHostName()“但我希望这不是必需的......

谢谢你。

Dmi*_*i T 5

  1. 最好的选择是将函数调用放在“参数”部分,并将其返回值作为Parametersargs[0]在脚本主体中引用

    def machineName = Parameters
    
    Run Code Online (Sandbox Code Playgroud)

    通过参数的 JMeter 函数

  2. 您可以通过MachineName 类的实例来完成,例如:

    def machineName = new org.apache.jmeter.functions.MachineName().compute()
    
    Run Code Online (Sandbox Code Playgroud)
  3. 您可以使用JMeterUtils辅助类来完成,例如:

    def machineName = org.apache.jmeter.util.JMeterUtils.getLocalHostName()
    
    Run Code Online (Sandbox Code Playgroud)
  4. 最后(但不建议这样做,因为编译脚本的缓存将不可用)您可以将任何 JMeter 函数内联到脚本主体中

    def machineName = '${__machineName()}'
    
    Run Code Online (Sandbox Code Playgroud)

有关 JMeter 中 Groovy 脚本的更多信息:Apache Groovy - 为什么以及如何使用它