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

时间:2018-01-22 15:13:29

标签: groovy jmeter jmeter-plugins

我似乎花了太长时间试图找到一种获取信息的方法,例如Zero=np.zeros(shape=(100, 100),dtype=np.uint8) count=0 count1=0 for (x, y) in labels: component = uf.find(labels[(x, y)]) labels[(x, y)] = component if labels[(x, y)]==0: Zero[y][x]=int(255) count=count+1 if count<=32: continue elif count>32: Zeroth = Image.fromarray(Zero) Zeroth.save(os.path.join(dirs, file_+'_Zero.png'), 'png') if labels[(x, y)]==1: One[y][x]=int(255) count1=count1+1 if count1<=32: continue elif count1>32: First = Image.fromarray(One) First.save(os.path.join(dirs, file_+'_First.png'),'png') 我希望在两种不同的编程语言中使用https://jmeter.apache.org/usermanual/functions.html,在Groovy代码中(而不是BeanShell等)和Java。

在groovy中,我尝试过使用machineNamectxvars无效。

同样,发现如何在Java Sampler中执行相同操作也很棒。据我所知,我可以得到一些信息,例如:使用props的线程编号,但我找不到交互/使用主要JMeter函数的方法。

一种方法可能是重新实现这些功能,特别是在它们被描述的情况下,例如: &#34; machineName函数返回本地主机名。这使用Java方法JMeterContextService.getContext().getThreadNum()并将其传递给InetAddress.getLocalHost()&#34;但我希望没有必要......

谢谢。

1 个答案:

答案 0 :(得分:4)

  1. 最好的选择是将函数调用放到&#34;参数&#34;部分并将其返回值称为脚本体中的Parametersargs[0],如

    def machineName = Parameters
    

    JMeter Function via Parameters

  2. 您可以通过MachineName class的实例执行此操作,例如:

    def machineName = new org.apache.jmeter.functions.MachineName().compute()
    
  3. 您可以使用JMeterUtils辅助类来执行此操作,如:

    def machineName = org.apache.jmeter.util.JMeterUtils.getLocalHostName()
    
  4. 最后(但不推荐这样做,因为编译脚本的缓存不可用)你可以将任何JMeter函数内联到脚本体中

    def machineName = '${__machineName()}'
    
  5. 有关JMeter中Groovy脚本的更多信息:Apache Groovy - Why and How You Should Use It