user1169236
user1169236

Reputation: 159

How to stop Jmeter test after specified number of threads failed

I have one Transaction controller which has one http request in my Jmeter test plan. Transaction name and url comes from CSV file. At the end total execution is divided into 5 different transactions.

Testplan:

Testplan -Thread Group - User defined variable

Total sample execution will be 8000-10000. Now what i want, if total sample failures reached to 100, my JMeter test should stop test execution.

I have added User defined variable name "thread" and with value "0". I have added below code in Beanshell Post-Processor

int count= Integer.parseInt(vars.get("thread"));
if (prev.getErrorCount()==1){
count++;
System.out.println(count);
vars.put("thread",Integer.toString(count));
}

if (count==100){

System.out.println("Reached to max number of errors in load test, stopping test");
log.info ("Reached to max number of errors in load test, stopping test");
prev.setStopTestNow(true);

}

Somehow code is not working as expected. When error count reach to 100, Jmeter test is not getting stopped. Test is stopped when error count reached to 130. I am not sure who to fix above code.

Can someone please let me know what is issue in above code?

Upvotes: 3

Views: 3492

Answers (1)

UBIK LOAD PACK
UBIK LOAD PACK

Reputation: 34526

Variables are specific to 1 thread while Properties are shared by all threads.

See:

Ensure you synchronize access

Another option is to use a custom java class as a Singleton and increment its value.

Here an example implementation using Beanshell (Prefer JSR223 + Groovy for performances):

  • setupThreadGroup that resets the counter on test start:enter image description here

  • BeanshellPostProcessor that updates counter:enter image description here

Note that as you call setStopTestNow, test threads are interrupted but do not stop exactly at this time unless you have some timer (which is usually the case)

prev.setStopTestNow(true);

Upvotes: 3

Related Questions