1

我尝试测试我们的 api 的性能,它有一个请求限制器(100 秒内 100 个请求,否则 ip 被阻止)。您可以使用自定义标题来避免这种情况。此标头的值由 java 类生成。

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

我怎样才能为 JMeter 做到这一点?

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

4

3 回答 3

2

这是如何进行的:

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

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

  • 使用 JSR223 预处理器 + Groovy

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

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

vars.put("标题", HttpPwd.genPwd());

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

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

于 2013-10-19T19:30:36.603 回答
0

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

于 2013-10-19T12:08:29.967 回答
0

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

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

package custom.header;

public class HttpPwd {

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

可以从一些名为“customheader.jar”的 jar 中访问它

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

  1. 将 customheader.jat 放到 jmeter 安装的 lib/ext 文件夹中。(或者如果您在 user.properties 文件中覆盖了这些属性,则位于 search_paths 或 user.classpath 下的位置)
  2. 创建线程组
  3. 将ie HTTP请求添加到线程组
  4. 在 HTTP 请求中,将服务器名称或 IP 设置为“google.com”,路径 - /,并添加参数“q”,其值为“test”。其实没关系。
  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 的存在和价值

于 2013-10-21T13:15:42.847 回答