Use in milliseconds the following constructions:
pacing
or
pacing_min pacing_max
The pacing start will even do the pacing if the previous thread did end with an error (to handle not too much load in case of an error)
/** | |
* PACING END | |
* Calculate the pacing and apply // return! | |
* | |
*/ | |
Random rnd = new Random() | |
def d = new Date() | |
try { | |
def pacing = Long.parseLong(vars.get("pacing")) // get the required pacing value from jmeter variable. | |
def pacing_min = Long.parseLong(vars.get("pacing_min")) // get the required pacing value from jmeter variable. | |
def pacing_max = Long.parseLong(vars.get("pacing_max")) // get the required pacing value from jmeter variable. | |
String startTime = vars.get("pacingStartTime") // get the start time which was set in the beginning of the loop | |
def diff = d.getTime() - Long.parseLong(startTime) // current time minus start time | |
def sleepvalue = 0 | |
if (pacing_min > 0 && pacing_max > 0) | |
{ | |
pacing = Math.abs(new Random().nextInt() % (pacing_max - pacing_min) ) + pacing_min | |
sleepvalue = pacing > diff ? pacing - diff : 0 // logic for sleep time | |
log.info("[ Pacing random: " + pacing + "ms, Remaining time: ${sleepvalue}ms ]") | |
} | |
else | |
{ | |
sleepvalue = pacing > diff ? pacing - diff : 0 // logic for sleep time | |
log.info("[ Pacing: ${pacing}ms, Remaining time: ${sleepvalue}ms ]") | |
} | |
sleep(sleepvalue) | |
return sleepvalue | |
} | |
catch (Exception e) { | |
return 1000 | |
log.warn("[ Pacing: Failed to calculate pacing ]", e) | |
throw e; | |
} |
Use in milliseconds the following constructions:
pacing
or
pacing_min pacing_max
The pacing start will even do the pacing if the previous thread did end with an error (to handle not too much load in case of an error)
/** | |
* PACING START | |
* Set the start time for pacing calculation | |
* | |
*/ | |
def d = new Date() | |
try { | |
String startTime = vars.get("pacingStartTime") | |
def pacing = Long.parseLong(vars.get("pacing")) // get the required pacing value from jmeter variable. | |
def pacing_min = Long.parseLong(vars.get("pacing_min")) // get the required pacing value from jmeter variable. | |
def pacing_max = Long.parseLong(vars.get("pacing_max")) // get the required pacing value from jmeter variable. | |
def diff = d.getTime() - Long.parseLong(startTime) | |
if (pacing_min > 0 && pacing_max > 0) | |
{ | |
sleepvalue = pacing_min > diff ? pacing_min - diff : 0 // logic for sleep time, calculate with pacing_min to check if previous stop was alright | |
if (sleepvalue != 0) | |
{ | |
pacing = Math.abs(new Random().nextInt() % (pacing_max - pacing_min) ) + pacing_min // but recalculate to a random number if really occurred | |
sleepvalue = pacing > diff ? pacing - diff : 0 // logic for sleep time | |
log.info("[ Previous pacing not happened, now pacing for: " + pacing + "ms, Remaining time: ${sleepvalue}ms ]") | |
} | |
} | |
else | |
{ | |
sleepvalue = pacing > diff ? pacing - diff : 0 // logic for sleep time | |
log.info("[ Previous pacing not happened, now pacing for: " + pacing + "ms, Remaining time: ${sleepvalue}ms ]") | |
} | |
sleep(sleepvalue) | |
} | |
catch (NumberFormatException e) { | |
log.warn("[ First iteration ]") | |
} | |
try { | |
vars.put("pacingStartTime", "${d.getTime()}") | |
log.info("pacingStartTime: ${d.getTime() / 1000}") | |
return 1 | |
} | |
catch (Exception e) { | |
log.warn("[ Pacing: Failed to set the start time ]", e) | |
throw e; | |
} |