You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by ms...@apache.org on 2003/05/01 21:47:17 UTC
cvs commit: jakarta-jmeter/src/core/org/apache/jmeter/threads TestCompiler.java
mstover1 2003/05/01 12:47:17
Modified: src/components/org/apache/jmeter/control
InterleaveControl.java
src/core/org/apache/jmeter/gui/action CheckDirty.java
ExitCommand.java Save.java
src/core/org/apache/jmeter/threads TestCompiler.java
Log:
Revamping internal contoller code
Revision Changes Path
1.16 +43 -5 jakarta-jmeter/src/components/org/apache/jmeter/control/InterleaveControl.java
Index: InterleaveControl.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/control/InterleaveControl.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- InterleaveControl.java 1 May 2003 18:52:04 -0000 1.15
+++ InterleaveControl.java 1 May 2003 19:47:17 -0000 1.16
@@ -82,6 +82,7 @@
private boolean doNotIncrement = false;
private TestElement searchStart = null;
private boolean currentReturnedAtLeastOne;
+ private boolean stillSame = true;
/****************************************
* Constructor for the InterleaveControl object
@@ -96,6 +97,7 @@
{
currentReturnedAtLeastOne = false;
searchStart = null;
+ stillSame = true;
skipNext = false;
incrementIterCount();
}
@@ -185,8 +187,9 @@
{
searchStart = currentElement;
}
- else if (searchStart == currentElement && (!currentReturnedAtLeastOne && getStyle() == USE_SUB_CONTROLLERS)) // we've gone through the whole list and are now back at the start point of our search.
+ else if (searchStart == currentElement && !stillSame) // we've gone through the whole list and are now back at the start point of our search.
{
+ reInitialize();
throw new NextIsNullException();
}
}
@@ -204,10 +207,6 @@
{
incrementCurrent();
}
- if (getStyle() == USE_SUB_CONTROLLERS && currentReturnedAtLeastOne)
- {
- skipNext = true;
- }
}
/**
@@ -275,6 +274,32 @@
}
}
}
+
+ public void testProcessing6() throws Exception
+ {
+ testLog.debug("Testing Interleave Controller 6");
+ GenericController controller = new GenericController();
+ InterleaveControl sub_1 = new InterleaveControl();
+ controller.addTestElement(new TestSampler("one"));
+ sub_1.setStyle(IGNORE_SUB_CONTROLLERS);
+ controller.addTestElement(sub_1);
+ LoopController sub_2 = new LoopController();
+ sub_1.addTestElement(sub_2);
+ sub_2.setLoops(3);
+ int counter = 1;
+ controller.initialize();
+ for (int i = 0; i < 4; i++)
+ {
+ assertEquals(1, counter);
+ counter = 0;
+ TestElement sampler = null;
+ while ((sampler = controller.next()) != null)
+ {
+ assertEquals("one", sampler.getPropertyAsString(TestElement.NAME));
+ counter++;
+ }
+ }
+ }
public void testProcessing2() throws Exception
{
@@ -463,6 +488,19 @@
suite.addTest(new Test("testProcessing5"));
//suite.addTestSuite(Test.class);
return suite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jmeter.control.GenericController#incrementCurrent()
+ */
+ protected void incrementCurrent()
+ {
+ if (currentReturnedAtLeastOne)
+ {
+ skipNext = true;
+ }
+ stillSame = false;
+ super.incrementCurrent();
}
}
1.7 +19 -20 jakarta-jmeter/src/core/org/apache/jmeter/gui/action/CheckDirty.java
Index: CheckDirty.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/CheckDirty.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- CheckDirty.java 29 Apr 2003 15:47:43 -0000 1.6
+++ CheckDirty.java 1 May 2003 19:47:17 -0000 1.7
@@ -1,6 +1,7 @@
package org.apache.jmeter.gui.action;
import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -20,7 +21,7 @@
* Window>Preferences>Java>Templates.
*/
public class CheckDirty extends AbstractAction implements
- HashTreeTraverser
+ HashTreeTraverser,ActionListener
{
private static Map previousGuiItems;
public static final String CHECK_DIRTY = "check_dirty";
@@ -43,31 +44,32 @@
commands.add(SUB_TREE_SAVED);
commands.add(SUB_TREE_LOADED);
commands.add(ADD_ALL);
- commands.add(SAVE);
- commands.add(SAVE_ALL);
commands.add(REMOVE);
- commands.add(SAVE_TO_PREVIOUS);
}
public CheckDirty()
{
previousGuiItems = new HashMap();
+ ActionRouter.getInstance().addPreActionListener(ExitCommand.class,this);
}
+ public void actionPerformed(ActionEvent e)
+ {
+ if(e.getActionCommand().equals(ExitCommand.EXIT))
+ {
+ doAction(e);
+ }
+ }
+
/**
* @see Command#doAction(ActionEvent)
*/
public void doAction(ActionEvent e) {
String action = e.getActionCommand();
- if(action.equals(SUB_TREE_SAVED) || action.equals(SAVE))
+ if(action.equals(SUB_TREE_SAVED))
{
- HashTree subTree = GuiPackage.getInstance().getCurrentSubTree();
- subTree.traverse(this);
- }
- else if(action.equals(SAVE_ALL) || action.equals(SAVE_TO_PREVIOUS))
- {
- HashTree subTree = GuiPackage.getInstance().getTreeModel().getTestPlan();
+ HashTree subTree = (HashTree)e.getSource();
subTree.traverse(this);
}
else if(action.equals(SUB_TREE_LOADED))
@@ -91,15 +93,12 @@
}
removeMode = false;
}
- else if(action.equals(CHECK_DIRTY))
- {
- checkMode = true;
- dirty = false;
- HashTree wholeTree = GuiPackage.getInstance().getTreeModel().getTestPlan();
- wholeTree.traverse(this);
- GuiPackage.getInstance().setDirty(dirty);
- checkMode = false;
- }
+ checkMode = true;
+ dirty = false;
+ HashTree wholeTree = GuiPackage.getInstance().getTreeModel().getTestPlan();
+ wholeTree.traverse(this);
+ GuiPackage.getInstance().setDirty(dirty);
+ checkMode = false;
}
/**
1.5 +2 -1 jakarta-jmeter/src/core/org/apache/jmeter/gui/action/ExitCommand.java
Index: ExitCommand.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/ExitCommand.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ExitCommand.java 1 May 2003 15:49:06 -0000 1.4
+++ ExitCommand.java 1 May 2003 19:47:17 -0000 1.5
@@ -74,6 +74,7 @@
public class ExitCommand implements Command
{
+ public static final String EXIT = "exit";
private static Set commands = new HashSet();
/**
@@ -129,6 +130,6 @@
}
static {
- commands.add("exit");
+ commands.add(EXIT);
}
}
1.10 +8 -6 jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Save.java
Index: Save.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Save.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Save.java 29 Apr 2003 15:55:53 -0000 1.9
+++ Save.java 1 May 2003 19:47:17 -0000 1.10
@@ -139,11 +139,7 @@
{
subTree = GuiPackage.getInstance().getTreeModel().getTestPlan();
}
- try
- {
- convertSubTree(subTree);
- }catch(Exception err)
- {}
+
if(!SAVE_TO_PREVIOUS.equals(e.getActionCommand()) || testPlanFile == null)
{
JFileChooser chooser = FileDialoger.promptToSaveFile(
@@ -166,7 +162,13 @@
{
chosenFile = testPlanFile;
}
-
+
+ ActionRouter.getInstance().actionPerformed(new ActionEvent(subTree,e.getID(),CheckDirty.SUB_TREE_SAVED));
+ try
+ {
+ convertSubTree(subTree);
+ }catch(Exception err)
+ {}
OutputStream writer = null;
try
{
1.21 +45 -29 jakarta-jmeter/src/core/org/apache/jmeter/threads/TestCompiler.java
Index: TestCompiler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/TestCompiler.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- TestCompiler.java 1 May 2003 15:49:07 -0000 1.20
+++ TestCompiler.java 1 May 2003 19:47:17 -0000 1.21
@@ -1,4 +1,5 @@
package org.apache.jmeter.threads;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -59,6 +60,8 @@
JMeterVariables threadVars;
private static Set pairing = new HashSet();
+ List loopIterListeners = new ArrayList();
+
/****************************************
* !ToDo (Constructor description)
*
@@ -122,17 +125,17 @@
//replaceStatics(ret);
return pack;
}
-
+
private void runPreProcessors(List preProcessors)
- {
- ListIterator iter = preProcessors.listIterator(preProcessors.size());
- while (iter.hasPrevious())
- {
- PreProcessor ex = (PreProcessor) iter.previous();
- ex.process();
- }
- }
-
+ {
+ ListIterator iter = preProcessors.listIterator(preProcessors.size());
+ while (iter.hasPrevious())
+ {
+ PreProcessor ex = (PreProcessor) iter.previous();
+ ex.process();
+ }
+ }
+
public void done(SamplePackage pack)
{
pack.recoverRunningVersion();
@@ -157,6 +160,7 @@
{
log.debug("Subtracting node, stack size = " + stack.size());
TestElement child = (TestElement) stack.getLast();
+ trackIterationListeners(child);
if (child instanceof Sampler)
{
log.debug("Saving configs for sampler: " + child);
@@ -165,7 +169,7 @@
stack.removeLast();
if (stack.size() > 0)
{
- ObjectPair pair = new ObjectPair((TestElement)child, (TestElement)stack.getLast());
+ ObjectPair pair = new ObjectPair((TestElement) child, (TestElement) stack.getLast());
if (!pairing.contains(pair))
{
pair.addTestElements();
@@ -174,6 +178,23 @@
}
}
+ private void trackIterationListeners(TestElement child)
+ {
+ if (child instanceof LoopIterationListener)
+ {
+ loopIterListeners.add(child);
+ }
+ if (child instanceof Controller)
+ {
+ Iterator iter = loopIterListeners.iterator();
+ while (iter.hasNext())
+ {
+ ((Controller) child).addIterationListener((LoopIterationListener) iter.next());
+ iter.remove();
+ }
+ }
+ }
+
/****************************************
* !ToDo (Method description)
***************************************/
@@ -225,19 +246,17 @@
extractors.add(item);
}
if (item instanceof PreProcessor)
- {
- pres.add(item);
- }
+ {
+ pres.add(item);
+ }
}
}
- SamplePackage pack = new SamplePackage(configs, modifiers, responseModifiers, listeners, timers, assertions, extractors,pres);
+ SamplePackage pack = new SamplePackage(configs, modifiers, responseModifiers, listeners, timers, assertions, extractors, pres);
pack.setSampler(sam);
pack.setRunningVersion(true);
samplerConfigMap.put(sam, pack);
}
-
-
/****************************************
* !ToDo (Class description)
*
@@ -281,7 +300,8 @@
assertEquals("A test value", sampler.getPropertyAsString("test.property"));
}
- class TestSampler extends AbstractSampler implements PerSampleClonable {
+ class TestSampler extends AbstractSampler implements PerSampleClonable
+ {
public void addCustomTestElement(TestElement t)
{}
public org.apache.jmeter.samplers.SampleResult sample(org.apache.jmeter.samplers.Entry e)
@@ -317,16 +337,12 @@
this.child = one;
this.parent = two;
}
-
+
public void addTestElements()
{
- if(parent instanceof Controller && (child instanceof Sampler || child instanceof Controller))
+ if (parent instanceof Controller && (child instanceof Sampler || child instanceof Controller))
{
parent.addTestElement(child);
- }
- if(parent instanceof Controller && child instanceof LoopIterationListener)
- {
- ((Controller)parent).addIterationListener((LoopIterationListener)child);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org