繁体   English   中英

JMeter:使用Java类为自定义标头生成值

[英]JMeter: Generate value for custom Header with a java class

我尝试测试我们的具有请求限制器的api的性能(100秒内发生100次重击,否则IP被阻止)。 您可以使用自定义标题避免这种情况。 此标头的值由Java类生成。

使用jruby,我也可以使用“ require”和“ import”使用类。

我如何为JMeter做到这一点?

其他信息:标头值是动态的->对于必须生成的每个请求。 要调用HttpPwd.genPwd(),需要两个* .jar文件

这是如何进行:

  • 将2个罐子放在jmeter / lib文件夹中

  • 将groovy-all.jar放入jmeter / lib

  • 使用JSR223预处理器+ Groovy

  • 将以下代码放入预处理器中:

进口xxxxxx; //其中xxxx是HttpPwd类的全名

vars.put(“ header”,HttpPwd.genPwd());

  • 根据您的请求添加HeaderManager作为子项,并在其内容中添加:

HeaderName(我不知道它是什么):$ {header}

在您的JMeter项目中,导航到Thread Group > HTTP Request 您可以在那里设置请求参数。

这是通过JMeter __Beanshell函数实现此方法的方法

假设您具有以下用于生成自定义标头的逻辑:

package custom.header;

public class HttpPwd {

public static String getPwd() {
    return String.valueOf(System.currentTimeMillis());
}
}

可从一个名为“ customheader.jar”的罐子中进行访问

并且您想在请求中添加一个名为“ MyHeader”的标头

  1. 将customheader.jat放入jmeter安装的lib / ext文件夹中。 (如果您在user.properties文件中覆盖了这些属性,则返回到search_paths或user.classpath下的位置)
  2. 创建一个线程组
  3. 将HTTP请求添加到线程组
  4. 在HTTP请求中,将服务器名称或IP输入为“ google.com”,路径-/,并添加一个值为“ test”的参数“ q”。 其实没关系。
  5. 将HTTP标头管理器添加为HTTP请求的形式
  6. 将名称添加为MyHeader和值-“ $ {__ BeanShell(import custom.header。*; HttpPwd.getPwd();)}”
  7. 在HTTP请求之后添加视图结果树侦听器
  8. 保存并运行

您应该看到类似以下内容:

GET http://www.google.com/?q=test

[no cookies]

Request Headers:
Connection: keep-alive
MyHeader: 1382360571781
Host: www.google.com
User-Agent: Apache-HttpClient/4.2.3 (java 1.5)

提及MyHeader的存在和价值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM