Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 Beanshell整数错误_Java_Loops_Integer_Jmeter_Beanshell - Fatal编程技术网

Java JMeter Beanshell整数错误

Java JMeter Beanshell整数错误,java,loops,integer,jmeter,beanshell,Java,Loops,Integer,Jmeter,Beanshell,我在JMeter Beanshell采样器/前置/后置处理器中遇到整数问题。我有一些值数组,我想使用这个数组的每个值来设置JMeterProperty,以便下次使用 目标>从查询中获得一些N行。例如,上游列有diff值,我需要它保存它们以供下次使用。因为我将使用它们作为“OS进程采样器”的参数调用CMD.exe 从SQL中我得到了一个值数组 COUNT=31 UPSTREAM_#=31 UPSTREAM_1=XXX UPSTREAM_2=AAA .... 在后处理器中,我设置: ${__se

我在JMeter Beanshell采样器/前置/后置处理器中遇到整数问题。我有一些值数组,我想使用这个数组的每个值来设置JMeterProperty,以便下次使用

目标>从查询中获得一些N行。例如,上游列有diff值,我需要它保存它们以供下次使用。因为我将使用它们作为“OS进程采样器”的参数调用CMD.exe


从SQL中我得到了一个值数组

COUNT=31
UPSTREAM_#=31
UPSTREAM_1=XXX
UPSTREAM_2=AAA
....
在后处理器中,我设置:

${__setProperty(COUNT, ${COUNT_1})};
我正在尝试这个scrpit:

import java.util.*;
import java.text.*; 
import java.io.*;

int max = Integer.parseInt(vars.get(${COUNT_1})); //--COUNT=31, Integer doesnt work
int n = vars.get(${COUNT_1}); //--COUNT=31, this also doesnt work

for (int i=1;i<=n;i++)
{
   ${__setProperty(UPSTREAM_i, ${UPSTREAM_i})};
}
有人能帮我吗?也许我错过了一些LIB什么的。我有JRE/JDK


更新1

用户变量所有:

COUNT   ${__property(COUNT)}    Count of Rows from SQL Query
测试计划:

后处理器日志:

SamplerProperties:
variableNames=DATE,DOWNSTREAM,UPSTREAM,COUNT,etc.

JMeterVariables:
COUNT=31
COUNT_#=31
COUNT_1=31
COUNT_2=31
.....
DATE_#=31
DATE_1=04.10.2016
DATE_2=04.10.2016
.....
DOWNSTREAM_#=31
DOWNSTREAM_1=DDD11
DOWNSTREAM_2=DDD11
.....
UPSTREAM_#=31
UPSTREAM_1=XXX
UPSTREAM_2=AAA
....
JMeterProperties:
COUNT= 31
DATE= 04.10.2016
DOWNSTREAM= DDD11
TEST= 1
调试循环日志:

SamplerProperties:
BeanShellSampler.query=import java.util.*;
 import java.text.*; 
 import java.io.*;
 int n = Integer.parseInt(vars.get("COUNT")); 
 for (int i=1;i<=n;i++)
 {
      props.setProperty("UPSTREAM_"+i, vars.get("UPSTREAM_i"));
 }
    JMeterVariables:
    COUNT=31
    COUNT_#=31
    COUNT_1=31
    COUNT_2=31
    .....
    DATE_#=31
    DATE_1=04.10.2016
    DATE_2=04.10.2016
    .....
    DOWNSTREAM_#=31
    DOWNSTREAM_1=DDD11
    DOWNSTREAM_2=DDD11
    .....
    UPSTREAM_#=31
    UPSTREAM_1=XXX
    UPSTREAM_2=AAA
    ....
    JMeterProperties:
    COUNT= 31
    DATE= 04.10.2016
    DOWNSTREAM= DDD11
    TEST= 1

更新2


UBIK LOAD PACK的解决方案有效:),目标已更新。

您的Beanshell脚本有许多错误:

 import java.util.*;
 import java.text.*; 
 import java.io.*;
 int n = Integer.parseInt(vars.get("COUNT")); 
 for (int i=1;i<=n;i++)
 {
      props.setProperty("UPSTREAM_"+i, vars.get("UPSTREAM_"+i));
 }
import java.util.*;
导入java.text.*;
导入java.io.*;
int n=Integer.parseInt(vars.get(“COUNT”);

对于(int i=1;i我不知道您想要实现什么,您的方法存在多个问题

  • ${\uuuSetProperty(COUNT,${COUNT\u1})};

    另外,要完全清楚,
    vars
    props
    是不同的野兽,它们没有任何共同点。如果通过函数设置属性,则无法通过
    vars.get()
    访问它,而必须使用
    props.get()

  • vars.get(${COUNT_1})
    不起作用,您应该将其更改为以下选项之一:

    • `变量获取(“计数1”)
    • `${COUNT_1}
    通常,不建议将JMeter函数和变量内联到Beanshell(和其他)脚本中,因为它们可能会根据其值进行不同的解释

  • 关于

    在类“org.apache.jmeter.threads.JMeterVariables”中找不到方法get(int)

    我不知道您是如何将整数放入JMeter变量的,但如果您这样做了,您应该通过类似

    int n = vars.getObject("COUNT");
    
  • 疑难解答提示:在代码中加入以下内容,您将能够在jmeter.log文件中获得更多信息性错误消息,如:

    try {
        //your code here
    }
    catch (Throwable ex) {
        log.error("something wrong", ex);
        throw ex;
    }
    

  • 我还建议您熟悉一下指南

    Beanshell示例仍然存在一些问题。
    Response code:500响应消息:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:eval源文件:内联求值:`import java.util.*;import java.text.*;import java.io.*;int n=Integer.pa。'':类型化变量声明:Method Invocation Integer.parseInt
    是否确实将COUNT定义为变量?能否显示您的测试计划?在Beanshell后处理器之前添加一个DebugPostProcessor并显示输出?thxno COUNT也来自SQL。但当我在用户定义变量中设置全局变量时,
    COUNT=${\uu属性(COUNT)}
    它返回另一个错误
    int n=Integer.pa…'':Method Invocation props.setProperty
    我修复了上面脚本中的一个小错误。你能重试看看第二个问题是否已修复。第一个问题(缺少计数)来自不可用的var Count我将尝试它..并且经常对原始版本进行更新,我只是在问题的开头更新了目标
     import java.util.*;
     import java.text.*; 
     import java.io.*;
     int n = Integer.parseInt(vars.get("COUNT")); 
     for (int i=1;i<=n;i++)
     {
          props.setProperty("UPSTREAM_"+i, vars.get("UPSTREAM_"+i));
     }
    
                          ^ here you set an extra space before the value
    
    int n = vars.getObject("COUNT");
    
    try {
        //your code here
    }
    catch (Throwable ex) {
        log.error("something wrong", ex);
        throw ex;
    }