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