使用Groovy使用JMeter中的标准Java类

时间:2017-11-08 15:15:29

标签: java ssl groovy jmeter

在JMeter中,我想使用没有转换证书的所有overhead的客户端证书,并且在JMeter重启后不要忘记单击SSL Manger菜单。

我希望能够灵活地在需要时使用不同的证书。

Java解决方案here看起来非常有前景。我尝试使用带有Groovy的JSR223 PreProcessor。这与第一行失败。它无法导入标准Java类。

2017-11-08 16:02:39,139 ERROR o.a.j.m.JSR223PreProcessor: Problem in JSR223 script, JSR223 PreProcessor
javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script37.groovy: 1: unable to resolve class java.security.Keystore
 @ line 1, column 1.
   import java.security.Keystore;

使用标准Java类需要做什么?

整个想法基于SoapUI中使用的解决方案。

import com.eviware.soapui.settings.SSLSettings
import com.eviware.soapui.model.settings.Settings
import com.eviware.soapui.SoapUI
Settings settings = SoapUI.getSettings()
settings.setString(SSLSettings.KEYSTORE, "../certificates/foo.p12")
settings.setString(SSLSettings.KEYSTORE_PASSWORD , "bar")
settings.reloadSettings()

这样的事情会在JMeter中发挥作用吗?使用哪个客户端发送HTTP采样器?

1 个答案:

答案 0 :(得分:0)

这些不是标准的Java类",它看起来像SoapUI

您需要在JMeter Classpath下设置这些com.eviware.soapui.*类才能使其正常运行。一旦添加了必要的.jars,JMeter将需要重新启动它们。但是我怀疑你能否在JMeter测试中使用这个com.eviware.soapui.model.settings.Settings类实例。

有一种更简单的方法可以配置JMeter以使用客户端证书:只需将下一行添加到 system.properties 文件中:

javax.net.ssl.keyStoreType=pkcs12    
javax.net.ssl.keyStore=../certificates/foo.p12
javax.net.ssl.keyStorePassword=bar

或通过-D command-line argument将它们传递给JMeter启动脚本,如:

jmeter -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStore=../certificates/foo.p12 -Djavax.net.ssl.keyStorePassword=bar -n -t test.jmx -l result.jtl

有关该方法的详细信息,请参阅How to Set Your JMeter Load Test to Use Client Side Certificates文章。