use of org.apache.jmeter.threads.JMeterContext in project jmeter by apache.
the class TestIfController method testBug53768.
@BugId("53768")
@Test
public void testBug53768() throws Exception {
LoopController controller = new LoopController();
controller.setLoops(1);
controller.setContinueForever(false);
Arguments arguments = new Arguments();
arguments.addArgument("VAR1", "0", "=");
DebugSampler debugSampler1 = new DebugSampler();
debugSampler1.setName("VAR1 = ${VAR1}");
IfController ifCont = new IfController("true==false");
ifCont.setUseExpression(false);
ifCont.setEvaluateAll(false);
IfController ifCont2 = new IfController("true==true");
ifCont2.setUseExpression(false);
ifCont2.setEvaluateAll(false);
CounterConfig counterConfig = new CounterConfig();
counterConfig.setStart(1);
counterConfig.setIncrement(1);
counterConfig.setVarName("VAR1");
DebugSampler debugSampler2 = new DebugSampler();
debugSampler2.setName("VAR1 = ${VAR1}");
controller.addTestElement(arguments);
controller.addTestElement(debugSampler1);
controller.addTestElement(ifCont);
ifCont.addTestElement(ifCont2);
ifCont2.addTestElement(counterConfig);
controller.addTestElement(debugSampler2);
controller.initialize();
controller.setRunningVersion(true);
ifCont.setRunningVersion(true);
ifCont2.setRunningVersion(true);
counterConfig.setRunningVersion(true);
arguments.setRunningVersion(true);
debugSampler1.setRunningVersion(true);
debugSampler2.setRunningVersion(true);
ifCont2.addIterationListener(counterConfig);
JMeterVariables vars = new JMeterVariables();
JMeterContext jmctx = JMeterContextService.getContext();
jmctx.setVariables(vars);
vars.put("VAR1", "0");
try {
Sampler sampler = controller.next();
sampler.sample(null);
assertEquals("0", vars.get("VAR1"));
sampler = controller.next();
sampler.sample(null);
assertEquals("0", vars.get("VAR1"));
} catch (StackOverflowError e) {
fail("Stackoverflow occurred in testStackOverflow");
}
}
use of org.apache.jmeter.threads.JMeterContext in project jmeter by apache.
the class TestLoopController method testProcessing.
@Test
public void testProcessing() throws Exception {
JMeterContext jmctx = JMeterContextService.getContext();
JMeterVariables variables = new JMeterVariables();
jmctx.setVariables(variables);
GenericController controller = new GenericController();
GenericController sub_1 = new GenericController();
sub_1.addTestElement(new TestSampler("one"));
sub_1.addTestElement(new TestSampler("two"));
controller.addTestElement(sub_1);
controller.addTestElement(new TestSampler("three"));
LoopController sub_2 = new LoopController();
String lcName = "LC";
sub_2.setName(lcName);
sub_2.setLoops(3);
GenericController sub_3 = new GenericController();
sub_2.addTestElement(new TestSampler("four"));
sub_3.addTestElement(new TestSampler("five"));
sub_3.addTestElement(new TestSampler("six"));
sub_2.addTestElement(sub_3);
sub_2.addTestElement(new TestSampler("seven"));
controller.addTestElement(sub_2);
String[] order = new String[] { "one", "two", "three", "four", "five", "six", "seven", "four", "five", "six", "seven", "four", "five", "six", "seven" };
int counter = 15;
controller.setRunningVersion(true);
sub_1.setRunningVersion(true);
sub_2.setRunningVersion(true);
sub_3.setRunningVersion(true);
controller.initialize();
int loopControl = 0;
for (int i = 0; i < 2; i++) {
loopControl = 0;
assertEquals(15, counter);
counter = 0;
TestElement sampler = null;
while ((sampler = controller.next()) != null) {
assertEquals(order[counter++], sampler.getName());
if ("four".equals(sampler.getName())) {
Integer value = (Integer) variables.getObject(JMeterUtils.formatJMeterExportedVariableName(lcName + LoopController.INDEX_VAR_NAME_SUFFIX));
assertNotNull(value);
assertEquals(Integer.valueOf(loopControl++), value);
}
}
}
}
use of org.apache.jmeter.threads.JMeterContext in project jmeter by apache.
the class TestLoopController method testBug54467.
@Test
public void testBug54467() throws Exception {
JMeterContext jmctx = JMeterContextService.getContext();
String lcName = "LC";
LoopController loop = new LoopController();
loop.setName(lcName);
Map<String, String> variables = new HashMap<>();
ReplaceStringWithFunctions transformer = new ReplaceStringWithFunctions(new CompoundVariable(), variables);
jmctx.setVariables(new JMeterVariables());
StringProperty prop = new StringProperty(LoopController.LOOPS, "${__Random(1,12,)}");
JMeterProperty newProp = transformer.transformValue(prop);
newProp.setRunningVersion(true);
loop.setProperty(newProp);
loop.addTestElement(new TestSampler("random run"));
loop.setRunningVersion(true);
loop.initialize();
int loops = loop.getLoops();
for (int i = 0; i < loops; i++) {
Sampler s = loop.next();
assertNotNull(s);
Integer value = (Integer) jmctx.getVariables().getObject(JMeterUtils.formatJMeterExportedVariableName(lcName + LoopController.INDEX_VAR_NAME_SUFFIX));
assertNotNull(value);
assertEquals(Integer.valueOf(i), value);
}
assertNull(loop.next());
}
use of org.apache.jmeter.threads.JMeterContext in project jmeter by apache.
the class TestLoopController method testLoopZeroTimes.
@Test
public void testLoopZeroTimes() throws Exception {
JMeterContext jmctx = JMeterContextService.getContext();
JMeterVariables variables = new JMeterVariables();
jmctx.setVariables(variables);
LoopController loop = new LoopController();
String lcName = "LC";
loop.setName(lcName);
loop.setLoops(0);
loop.addTestElement(new TestSampler("never run"));
loop.initialize();
assertNull(loop.next());
Integer value = (Integer) variables.getObject(JMeterUtils.formatJMeterExportedVariableName(lcName + LoopController.INDEX_VAR_NAME_SUFFIX));
assertNotNull(value);
assertEquals(Integer.valueOf(0), value);
}
use of org.apache.jmeter.threads.JMeterContext in project jmeter by apache.
the class TestLoopController method testInfiniteLoop.
@Test
public void testInfiniteLoop() throws Exception {
JMeterContext jmctx = JMeterContextService.getContext();
LoopController loop = new LoopController();
String lcName = "LC";
loop.setName(lcName);
loop.setLoops(LoopController.INFINITE_LOOP_COUNT);
loop.addTestElement(new TestSampler("never run"));
JMeterVariables variables = new JMeterVariables();
jmctx.setVariables(variables);
loop.setRunningVersion(true);
loop.initialize();
for (int i = 0; i < 42; i++) {
assertNotNull(loop.next());
Integer value = (Integer) variables.getObject(JMeterUtils.formatJMeterExportedVariableName(lcName + LoopController.INDEX_VAR_NAME_SUFFIX));
assertNotNull(value);
assertEquals(Integer.valueOf(i), value);
}
}
Aggregations