jmeter 에서 vars. putObject 의 사용: int 변 수 를 전달 할 수 있 습 니 다.
5621 단어 jmeter
jmeter var.putobject variable use in other jdbc request, but it is ignored
up vote
0 down vote favorite
Test Plan Thread Group JDBC Connection JSR223 Sampler JDBC Request Result Tree
Put codes in the JSR223 Sampler:
int id = Integer.parseInt( vars.get("party_id") ); vars.putObject("id", new Integer(id));
Then use id in JDBC Request:
select * from table where column = ?
Parameter Value: ${id}
parameter Type: NUMBER
It seems the JDBC request is ignored and no output shown in the result tree.
Please help to look into the issue...
Thanks in advance
jmeter
share
improve this question
edited
Jan 1 '14 at 6:07
Jay
668
2
11
asked
Jan 1 '14 at 6:05
ming
15
6
add a comment
2 Answers
active oldest votes
up vote
0 down vote
User Defined Variable stores value of
String
but not Integer
. I wonder if there is any error/warning in JMeter console (log). Cast you integer to String to put it into UDV.
Just specify ${UDV} if you wanted it to be an integer. Add quotes ('$UDV') if you want it as varchar in SQL query
share
improve this answer
edited
Jan 2 '14 at 10:56
answered
Jan 1 '14 at 14:09
olyv
1,524
1
11
25
I also add debug sampler into the test plan, variable "id" has the value shown in the result tree. Observe the issue from the log file "jmeter.threads.JMeterThread: Error while processing sampler 'try integer' : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String". Do you have any idea how to get the integer variable used in the other sampler? – ming
Jan 2 '14 at 5:23
When you use
putObject
method just cast your integer into String using toString()
method. vars.putObject("id", id.toString());
– olyv Jan 2 '14 at 6:58
If i use string it works fine for my select statement where i can change the type to varchar. I have one insert statement for one jdbc request required number parameter. When i pass "${id}" not working if cast it to String.– ming
Jan 2 '14 at 7:51
I'm not sure I've got your option. If you have select query you write it as
select * from table where condition = ${id}
. Supposing your variable has value 5 (it is string, because user defined variable stores only string) next query will be executed select * from table where condition = 5
. If you need varchar in the SQL query you write select * from table where condition = '${id}'
and next will be executed select * from table where condition = '5'
. JMeter HTTP or JDBC sampler treat ${variable} the next way: just get the text from variable and put it into sampler body. Is it the answer? – olyv Jan 2 '14 at 8:34
Thanks for the details. Method vars.putObject can store any type of object for user defined variable, for example integer. I wonder if there is some way to get the variable whose type is not string. I have one insert query [insert into table (id number) values (${id})] required integer in one jdbc request using the variable storing integer defined in JSR223 sampler. As you have mentioned, ${id} type is string, any way to convert to integer? – ming
Jan 2 '14 at 10:30
add a comment
up vote
0 down vote
Have reproduced your problem, it looks like that JDBC Sampler doesn't accept integers, only Strings.
I'm getting following error in jmeter.log, guess you too:
2014/01/04 11:30:14 ERROR - jmeter.threads.JMeterThread: Error while processing sampler 'JDBC Request' : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
So your cast to integer is absolutely not required. Try changing your JSR223 code to following:
vars.put("id", vars.get("party_id"));
It should work fine.
The bit, which tells MySQL which datatype bind the variable to is
ParameterType
stanza. You need to specify paratemer type there, not in JSR223 share
improve this answer
answered
Jan 4 '14 at 8:39
Dmitri T
10.8k
1
5
12