jmeter 에서 vars. putObject 의 사용: int 변 수 를 전달 할 수 있 습 니 다.

5621 단어 jmeter
본문http://stackoverflow.com/questions/20866023/jmeter-var-putobject-variable-use-in-other-jdbc-request-but-it-is-ignored
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

좋은 웹페이지 즐겨찾기