Java JMeter Beanshell整数错误
我在JMeter Beanshell采样器/前置/后置处理器中遇到整数问题。我有一些值数组,我想使用这个数组的每个值来设置JMeterProperty,以便下次使用 目标>从查询中获得一些N行。例如,上游列有diff值,我需要它保存它们以供下次使用。因为我将使用它们作为“OS进程采样器”的参数调用CMD.exeJava 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
从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;
}