vlatko606
vlatko606

Reputation: 1149

Jmeter - Break down huge JDBC query into multiple JDBC queries

I want to perform jdbc query which returns 700K+ rows, then build my logic based on that, but when try to execute response time is too long, so i need to break down on multiple queries, each returning ex:1000 results.

My architecture is like:

enter image description here

  1. 001_1 JDBC max_value - Defines the maximum value, of that 700K, which is increasing all the time.

  2. 001_1 JDBC MAIN - This JDBC i want to break down into multiple JDBC requests.

  3. InIt counter = vars.put("counter","1");

  4. offset_value - counter element

enter image description here

  1. While controller - ${__javaScript(parseInt(vars.get("counter"))<=700)}

If i put hard-code value into the While controller, everything works fine, and my script is working; But when data-base increase the records size, then i need manually to amend the number of the while controller 700, so can cover the next records.

Based on my understanding here i have 3 variables:

max_value = 714K
counter = 1
offset_value = 0

If i try: ${__javaScript(parseInt(vars.get("offset_value")<=parseInt(vars.get("max_value")))== true)}

as a while controller statement, offset_value is still not evaluated, and while controller is not working properly.

How can i compare offset_value vs. max_value, so i can drive my While controller?

Any help is appreciated!

Upvotes: 0

Views: 141

Answers (2)

vlatko606
vlatko606

Reputation: 1149

Thanks for the help @Dmitri T; However solution for me was:

1. Initialize the compare value as: JRS233 sample -> vars.put("offset_value","0");
2. ${__javaScript(parseInt(vars.get("offset_value"))<=parseInt(vars.get("max_value_1")),)}   -> inside while controller.
3. Counter: Track counter & Reset counter: must me checked both

Upvotes: 0

Dmitri T
Dmitri T

Reputation: 167992

If your parseInt(vars.get("offset_value")) expression is being executed against not-initialised variable it will return NaN so comparing it with a number doesn't make a lot of sense, you need to amend it to something like parseInt(vars.get("offset_value")) || 0 so it would return zero on first iteration.

Also be aware that starting from JMeter 3.1 you should be using JSR223 Test Elements for scripting and correspondingly __groovy() function in the While Controller. More information: Apache Groovy - Why and How You Should Use It

Upvotes: 1

Related Questions