Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jmeter:如果在响应cookie中找不到分词字符串,则调用HTTP采样器请求_Java_While Loop_Jmeter - Fatal编程技术网

Java Jmeter:如果在响应cookie中找不到分词字符串,则调用HTTP采样器请求

Java Jmeter:如果在响应cookie中找不到分词字符串,则调用HTTP采样器请求,java,while-loop,jmeter,Java,While Loop,Jmeter,我必须实现一个场景,在这个场景中,如果同一个请求失败,我必须最多调用5次,并且基于响应,我正在文件中写入一些内容。 当从cookie中找不到字符串时,就会发生失败,我将其捕获为常规exp 为了解决这个问题,我添加了带有计数器的while循环,但脚本一直工作到50000次迭代,然后出现内存不足错误。 如果我不让while循环调用同一个请求5次,那么同一个脚本可以在同一个JVM上运行100万次,没有任何问题 看起来Jmeter中的控制器以某种方式消耗了更多内存并抛出了内存 是否可以通过Beanshe

我必须实现一个场景,在这个场景中,如果同一个请求失败,我必须最多调用5次,并且基于响应,我正在文件中写入一些内容。 当从cookie中找不到字符串时,就会发生失败,我将其捕获为常规exp

为了解决这个问题,我添加了带有计数器的while循环,但脚本一直工作到50000次迭代,然后出现内存不足错误。 如果我不让while循环调用同一个请求5次,那么同一个脚本可以在同一个JVM上运行100万次,没有任何问题

看起来Jmeter中的控制器以某种方式消耗了更多内存并抛出了内存

是否可以通过Beanshell后处理器调用相同的HTTP请求

  • 方法使用和组合:

    • whilecontroller:condition
      ${uuuu javaScript(${counter}<5&&“${foo}”!=“bar”,)}
      • 计数器:开始
        1
        ,递增
        1
        ,参考名称
        计数器
      • 你的取样器
    假设上述设置
    您的采样器将被执行5次,或者直到
    ${foo}
    变量值不等于
    ,无论最先出现的是什么。有关全面的解释和更多示例,请参见

  • 如果您仍在寻找Beanshell,您可以使用以下方法:

    if (!prev.getResponseDataAsString().contains("foo")) {
        ctx.getCurrentSampler().sample(null);
    }
    
    如果响应中没有
    foo
    子字符串,则放入的上述代码将再次执行父采样器,但这样您将无法在侦听器中看到执行结果,并且不会将其存储到.jtl文件中,基本上只有一次执行


  • 谢谢你的快速回答。事实上,我已经添加了第一个解决方案,在从csv文件读取50000条记录后,内存不足。如果我不将while循环设置为这种情况,它将从csv读取所有100万条记录,并在没有任何错误的情况下完成事务,但在这种情况下,如果失败,我将无法重试5次。因此,我想检查任何替代解决方案,以便在没有While循环的情况下执行相同的操作。对于方法2,我有一个问题,如果我在beashell后处理器中添加这个,它会捕获正则表达式吗?它会再次返回后处理器以获取失败的采样器吗?有没有办法把计数器这样的逻辑放在这里?