use of org.apache.jmeter.threads.JMeterContext in project jmeter by apache.
the class JavaScript method execute.
/** {@inheritDoc} */
@Override
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
JMeterContext jmctx = JMeterContextService.getContext();
JMeterVariables vars = jmctx.getVariables();
String script = ((CompoundVariable) values[0]).execute();
// Allow variable to be omitted
String varName = values.length < 2 ? null : ((CompoundVariable) values[1]).execute().trim();
String resultStr = "";
if (useRhinoEngine) {
resultStr = executeWithRhino(previousResult, currentSampler, jmctx, vars, script, varName);
} else {
resultStr = executeWithNashorn(previousResult, currentSampler, jmctx, vars, script, varName);
}
return resultStr;
}
use of org.apache.jmeter.threads.JMeterContext in project jmeter by apache.
the class BeanShell method execute.
/** {@inheritDoc} */
@Override
public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
if (// did we find BeanShell?
bshInterpreter == null) {
throw new InvalidVariableException("BeanShell not found");
}
JMeterContext jmctx = JMeterContextService.getContext();
JMeterVariables vars = jmctx.getVariables();
String script = ((CompoundVariable) values[0]).execute();
//$NON-NLS-1$
String varName = "";
if (values.length > 1) {
varName = ((CompoundVariable) values[1]).execute().trim();
}
//$NON-NLS-1$
String resultStr = "";
try {
// Pass in some variables
if (currentSampler != null) {
//$NON-NLS-1$
bshInterpreter.set("Sampler", currentSampler);
}
if (previousResult != null) {
//$NON-NLS-1$
bshInterpreter.set("SampleResult", previousResult);
}
// Allow access to context and variables directly
//$NON-NLS-1$
bshInterpreter.set("ctx", jmctx);
//$NON-NLS-1$
bshInterpreter.set("vars", vars);
//$NON-NLS-1$
bshInterpreter.set("props", JMeterUtils.getJMeterProperties());
//$NON-NLS-1$
bshInterpreter.set("threadName", Thread.currentThread().getName());
// Execute the script
Object bshOut = bshInterpreter.eval(script);
if (bshOut != null) {
resultStr = bshOut.toString();
}
if (vars != null && varName.length() > 0) {
// vars will be null on TestPlan
vars.put(varName, resultStr);
}
} catch (// Mainly for bsh.EvalError
Exception ex) {
log.warn("Error running BSH script", ex);
}
if (log.isDebugEnabled()) {
log.debug("__Beanshell(" + script + "," + varName + ")=" + resultStr);
}
return resultStr;
}
use of org.apache.jmeter.threads.JMeterContext in project jmeter by apache.
the class TransactionController method notifyListeners.
/**
* Create additional SampleEvent in NON Parent Mode
*/
protected void notifyListeners() {
// TODO could these be done earlier (or just once?)
JMeterContext threadContext = getThreadContext();
JMeterVariables threadVars = threadContext.getVariables();
SamplePackage pack = (SamplePackage) threadVars.getObject(JMeterThread.PACKAGE_OBJECT);
if (pack == null) {
// If child of TransactionController is a ThroughputController and TPC does
// not sample its children, then we will have this
// TODO Should this be at warn level ?
log.warn("Could not fetch SamplePackage");
} else {
SampleEvent event = new SampleEvent(res, threadContext.getThreadGroup().getName(), threadVars, true);
// We must set res to null now, before sending the event for the transaction,
// so that we can ignore that event in our sampleOccured method
res = null;
lnf.notifyListeners(event, pack.getSampleListeners());
}
}
use of org.apache.jmeter.threads.JMeterContext in project jmeter by apache.
the class CompoundVariable method execute.
public String execute() {
if (isDynamic || permanentResults == null) {
JMeterContext context = JMeterContextService.getContext();
SampleResult previousResult = context.getPreviousResult();
Sampler currentSampler = context.getCurrentSampler();
return execute(previousResult, currentSampler);
}
// $NON-NLS-1$
return permanentResults;
}
use of org.apache.jmeter.threads.JMeterContext in project jmeter by apache.
the class AbstractFunction method execute.
public String execute() throws InvalidVariableException {
JMeterContext context = JMeterContextService.getContext();
SampleResult previousResult = context.getPreviousResult();
Sampler currentSampler = context.getCurrentSampler();
return execute(previousResult, currentSampler);
}
Aggregations