如何在HTTP请求中使用来自Jmeter JDBC请求的响应

时间:2014-06-03 15:53:00

标签: mysql jdbc jmeter export-to-csv jmeter-plugins

以下是我的情况:

我想这样做:

我有一个MySQL数据库中的URL列表,我希望使用HTTP请求来查看该响应是否为HTTP状态代码为404.

我这样做了:

  1. 添加并配置了JDBC配置元素。
  2. 添加并配置了JDBC请求采样器。基本上是一个返回一个包含8列的表的select语句。我为'变量名称'提供了8个逗号分隔的变量。字段,以便可以使用这些变量名称识别JDBC请求的结果。
  3. 创建了一个HTTP请求采样器,它使用“服务器名称”或“IP”中的其中一个变量$ {url}。字段。
  4. 虽然JDBC请求完美无缺并返回一个包含一堆行的表,但问题是HTTP Request Sampler永远不会从JDBC Request结果中获取变量。 HTTP请求在'查看结果树':

    中看起来像这样
    GET http://${url}/
    

    我尝试过这些解决方案:

    1. 添加'保存对文件的响应'侦听JDBC请求。这会创建一个类型为' .plain'的文件。而不是CSV。如果它是CSV,我可以通过创建CSV数据集配置来利用该CSV文件。所以这次尝试失败了。
    2. 我尝试在上述尝试中强制使用文件名,以便始终使用' C:\ JMETERTest \ data.csv'。但它最终会创建一个名为' C:\ JMETERTest \ data.csv1.plain'的新文件。这种尝试也失败了。
    3. 我尝试在HTTP请求的服务器名称字段中将URL列引用为$ {url_1}。有效。但现在的问题是,在结果树中,所有请求仅从结果集的第一行开始。我看到这是因为行号' _1'在上面的$ {url_1}中指定。我可以使用这个,如果有人可以建议一种方法来参数化' _1'到我可以循环的变量(可能使用' Counter'元素)。我通过参考名称' loopCounter'创建了一个计数器配置元素。并在HTTP请求的服务器名称字段中使用它:

      $ {URL _(" $ {循环计数器}")}

    4. 但现在我的HTTP请求看起来很简单:

      GET http://${url_("${loopCounter}")}/
      

      这也不起作用。

      解决方案3看起来更可行,只有我可以解决行号的参数化。 我也对JMeter插件建议持开放态度。 我将继续更新我尝试的任何其他内容。

      P.S。如果我的问题不清楚,请告诉我。

2 个答案:

答案 0 :(得分:1)

您是否尝试将HTTP采样器包装在ForEach控制器(父级)中,其中控制器的变量是从JDBC采样器获取的URL变量?

此外,ForEach中的输出变量将是您现在在HTTP采样器中使用的变量。

这样它会遍历每个变量,从索引的开头到结尾,每次运行一次采样器。

答案 1 :(得分:0)

在“保存对文件的响应”监听器中,选择“复选框”“不添加后缀和前缀”。检查这两个选项将确保您获得准确的日志文件名。