mstover1    2002/08/20 11:45:53

  Modified:    src/components/org/apache/jmeter/control
                        InterleaveControl.java
               src/components/org/apache/jmeter/control/gui
                        InterleaveControlGui.java
               src/core/org/apache/jmeter/resources messages.properties
                        messages_de.properties messages_ja.properties
                        messages_no.properties
  Log:
  Fixing the behavior of the interleave controller.
  
  Revision  Changes    Path
  1.2       +218 -6    
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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InterleaveControl.java    11 Aug 2002 19:24:40 -0000      1.1
  +++ InterleaveControl.java    20 Aug 2002 18:45:52 -0000      1.2
  @@ -70,7 +70,11 @@
   public class InterleaveControl extends GenericController implements Serializable
   {
   
  +     private static final String STYLE = "InterleaveControl.style";
  +     public static final int DEFAULT_STYLE = 0;
  +     public static final int NEW_STYLE = 1;
        private boolean interleave;
  +     private boolean doNotIncrement = false;
   
        /****************************************
         * Constructor for the InterleaveControl object
  @@ -93,22 +97,108 @@
   
        public boolean hasNext()
        {
  -             if(!interleave)
  +             boolean retVal;
  +             Object controller = getCurrentController();
  +             if(controller == null)
                {
  -                     return super.hasNext();
  +                     retVal = hasNextAtEnd();
  +             }
  +             else if(controller instanceof Controller)
  +             {
  +                     if(((Controller)controller).hasNext())
  +                     {
  +                             retVal = true;
  +                     }
  +                     else
  +                     {
  +                             currentHasNextIsFalse();
  +                             retVal = hasNext();
  +                     }
                }
                else
                {
  +                     retVal = true;
  +             }
  +             if(controller == null)
  +             {
  +                     reInitialize();
  +             }
  +             if(interleave)
  +             {
                        interleave = false;
  -                     super.hasNext();
                        return false;
                }
  +             return retVal;
  +     }
  +     
  +     protected void removeCurrentController()
  +     {
  +             if(getStyle() == NEW_STYLE)
  +             {
  +                     interleave = true;
  +             }
  +             super.removeCurrentController();
  +     }
  +
  +     protected void incrementCurrent()
  +     {
  +             if(getStyle() == NEW_STYLE)
  +             {
  +                     interleave = true;
  +             }
  +             super.incrementCurrent();
  +     }
  +     
  +     public void setStyle(int style)
  +     {
  +             setProperty(STYLE,new Integer(style));
  +     }
  +     
  +     public int getStyle()
  +     {
  +             return getPropertyAsInt(STYLE);
        }
   
        public Sampler next()
        {
  -             interleave = true;
  -             return super.next();
  +             if(getStyle() == DEFAULT_STYLE)
  +             {
  +                     interleave = true;
  +             }
  +             TestElement controller = getCurrentController();
  +             if(controller == null)
  +             {
  +                     nextAtEnd();
  +                     return next();
  +             }
  +             if(controller instanceof Sampler)
  +             {
  +                     incrementCurrent();
  +                     return (Sampler)controller;
  +             }
  +             else
  +             {
  +                     Controller c = (Controller)controller;
  +                     if(c.hasNext())
  +                     {
  +                             Sampler s = c.next();
  +                             if(getStyle() == DEFAULT_STYLE)
  +                             {
  +                                     incrementCurrent();
  +                             }
  +                             return s;
  +                     }
  +                     else if(c.isDone())
  +                     {
  +                             removeCurrentController();
  +                             return next();
  +                     }
  +                     else
  +                     {
  +                             incrementCurrent();
  +                             return next();
  +                     }
  +             }
        }
   
        public static class Test extends junit.framework.TestCase
  @@ -121,7 +211,8 @@
                public void testProcessing() throws Exception
                {
                        GenericController controller = new GenericController();
  -                     GenericController sub_1 = new InterleaveControl();
  +                     InterleaveControl sub_1 = new InterleaveControl();
  +                     sub_1.setStyle(DEFAULT_STYLE);
                        sub_1.addTestElement(makeSampler("one"));
                        sub_1.addTestElement(makeSampler("two"));
                        controller.addTestElement(sub_1);
  @@ -154,6 +245,127 @@
                                        {
                                                
assertEquals(order[counter],sampler.getProperty(TestElement.NAME));
                                        }
  +                                     counter++;
  +                             }
  +                     }
  +             }
  +             
  +             public void testProcessing2() throws Exception
  +             {
  +                     GenericController controller = new GenericController();
  +                     InterleaveControl sub_1 = new InterleaveControl();
  +                     sub_1.setStyle(DEFAULT_STYLE);
  +                     sub_1.addTestElement(makeSampler("one"));
  +                     sub_1.addTestElement(makeSampler("two"));
  +                     controller.addTestElement(sub_1);
  +                     controller.addTestElement(makeSampler("three"));
  +                     LoopController sub_2 = new LoopController();
  +                     sub_2.setLoops(3);
  +                     GenericController sub_3 = new GenericController();
  +                     sub_2.addTestElement(makeSampler("four"));
  +                     sub_3.addTestElement(makeSampler("five"));
  +                     sub_3.addTestElement(makeSampler("six"));
  +                     sub_2.addTestElement(sub_3);
  +                     sub_2.addTestElement(makeSampler("seven"));
  +                     sub_1.addTestElement(sub_2);
  +                     String[] order = new 
String[]{"one","three","two","three","four","three",
  +                                             
"one","three","two","three","five","three","one","three",
  +                                             
"two","three","six","three","one","three"};
  +                     int counter = 0;
  +                     while (counter < order.length)
  +                     {
  +                             while(controller.hasNext())
  +                             {
  +                                     TestElement sampler = controller.next();
  +                                     assertEquals("failed on "+counter,
  +                                                     
order[counter],sampler.getProperty(TestElement.NAME));
  +                                     counter++;
  +                             }
  +                     }
  +             }
  +             
  +             public void testProcessing3() throws Exception
  +             {
  +                     GenericController controller = new GenericController();
  +                     InterleaveControl sub_1 = new InterleaveControl();
  +                     sub_1.setStyle(NEW_STYLE);
  +                     sub_1.addTestElement(makeSampler("one"));
  +                     sub_1.addTestElement(makeSampler("two"));
  +                     controller.addTestElement(sub_1);
  +                     controller.addTestElement(makeSampler("three"));
  +                     LoopController sub_2 = new LoopController();
  +                     sub_2.setLoops(3);
  +                     GenericController sub_3 = new GenericController();
  +                     sub_2.addTestElement(makeSampler("four"));
  +                     sub_3.addTestElement(makeSampler("five"));
  +                     sub_3.addTestElement(makeSampler("six"));
  +                     sub_2.addTestElement(sub_3);
  +                     sub_2.addTestElement(makeSampler("seven"));
  +                     sub_1.addTestElement(sub_2);
  +                     String[] order = new 
String[]{"one","three","two","three","four","five",
  +                                             
"six","seven","four","five","six","seven","four","five",
  +                                             
"six","seven","three","one","three","two","three"};
  +                     int counter = 0;
  +                     while (counter < order.length)
  +                     {
  +                             while(controller.hasNext())
  +                             {
  +                                     TestElement sampler = controller.next();
  +                                     assertEquals("failed on 
"+counter,order[counter],sampler.getProperty(TestElement.NAME));
  +                                     counter++;
  +                             }
  +                     }
  +             }
  +             
  +             public void testProcessing4() throws Exception
  +             {
  +                     GenericController controller = new GenericController();
  +                     InterleaveControl sub_1 = new InterleaveControl();
  +                     sub_1.setStyle(DEFAULT_STYLE);
  +                     controller.addTestElement(sub_1);
  +                     GenericController sub_2 = new GenericController();
  +                     sub_2.addTestElement(makeSampler("one"));
  +                     sub_2.addTestElement(makeSampler("two"));
  +                     sub_1.addTestElement(sub_2);
  +                     GenericController sub_3 = new GenericController();
  +                     sub_3.addTestElement(makeSampler("three"));
  +                     sub_3.addTestElement(makeSampler("four"));
  +                     sub_1.addTestElement(sub_3);
  +                     String[] order = new String[]{"one","three","two","four"};
  +                     int counter = 0;
  +                     while (counter < order.length)
  +                     {
  +                             while(controller.hasNext())
  +                             {
  +                                     TestElement sampler = controller.next();
  +                                     assertEquals("failed on 
"+counter,order[counter],sampler.getProperty(TestElement.NAME));
  +                                     counter++;
  +                             }
  +                     }
  +             }
  +             
  +             public void testProcessing5() throws Exception
  +             {
  +                     GenericController controller = new GenericController();
  +                     InterleaveControl sub_1 = new InterleaveControl();
  +                     sub_1.setStyle(NEW_STYLE);
  +                     controller.addTestElement(sub_1);
  +                     GenericController sub_2 = new GenericController();
  +                     sub_2.addTestElement(makeSampler("one"));
  +                     sub_2.addTestElement(makeSampler("two"));
  +                     sub_1.addTestElement(sub_2);
  +                     GenericController sub_3 = new GenericController();
  +                     sub_3.addTestElement(makeSampler("three"));
  +                     sub_3.addTestElement(makeSampler("four"));
  +                     sub_1.addTestElement(sub_3);
  +                     String[] order = new String[]{"one","two","three","four"};
  +                     int counter = 0;
  +                     while (counter < order.length)
  +                     {
  +                             while(controller.hasNext())
  +                             {
  +                                     TestElement sampler = controller.next();
  +                                     assertEquals("failed on 
"+counter,order[counter],sampler.getProperty(TestElement.NAME));
                                        counter++;
                                }
                        }
  
  
  
  1.2       +34 -8     
jakarta-jmeter/src/components/org/apache/jmeter/control/gui/InterleaveControlGui.java
  
  Index: InterleaveControlGui.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/control/gui/InterleaveControlGui.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InterleaveControlGui.java 11 Aug 2002 19:24:40 -0000      1.1
  +++ InterleaveControlGui.java 20 Aug 2002 18:45:52 -0000      1.2
  @@ -53,14 +53,16 @@
    * <http://www.apache.org/>.
    */
   package org.apache.jmeter.control.gui;
  -import java.awt.*;
  -import java.awt.event.*;
  -import javax.swing.*;
  -import javax.swing.border.*;
  -import javax.swing.table.*;
  -import javax.swing.text.*;
  +import java.awt.Font;
  +
  +import javax.swing.JCheckBox;
  +import javax.swing.JLabel;
  +import javax.swing.JPanel;
  +import javax.swing.border.Border;
  +import javax.swing.border.EmptyBorder;
  +
   import org.apache.jmeter.control.InterleaveControl;
  -import org.apache.jmeter.gui.*;
  +import org.apache.jmeter.gui.NamePanel;
   import org.apache.jmeter.gui.util.VerticalLayout;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.util.JMeterUtils;
  @@ -76,6 +78,7 @@
   public class InterleaveControlGui extends AbstractControllerGui
   {
        InterleaveControl model;
  +     JCheckBox style;
   
        /****************************************
         * !ToDo (Constructor description)
  @@ -105,6 +108,19 @@
        {
                return namePanel.getName();
        }
  +     
  +     public void configure(TestElement el)
  +     {
  +             super.configure(el);
  +             if(((InterleaveControl)el).getStyle() == 
InterleaveControl.DEFAULT_STYLE)
  +             {
  +                     style.setSelected(true);
  +             }
  +             else
  +             {
  +                     style.setSelected(false);
  +             }
  +     }
   
        /****************************************
         * !ToDo (Method description)
  @@ -115,6 +131,14 @@
        {
                InterleaveControl ic = new InterleaveControl();
                configureTestElement(ic);
  +             if(style.isSelected())
  +             {
  +                     ic.setStyle(ic.DEFAULT_STYLE);
  +             }
  +             else
  +             {
  +                     ic.setStyle(ic.NEW_STYLE);
  +             }
                return ic;
        }
   
  @@ -151,5 +175,7 @@
                mainPanel.add(namePanel);
   
                this.add(mainPanel);
  +             style = new 
JCheckBox(JMeterUtils.getResString("ignore_subcontrollers"));
  +             this.add(style);
        }
   }
  
  
  
  1.7       +2 -1      
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages.properties,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- messages.properties       19 Aug 2002 22:33:14 -0000      1.6
  +++ messages.properties       20 Aug 2002 18:45:52 -0000      1.7
  @@ -287,4 +287,5 @@
   delete_user=Delete User
   column_delete_disallowed=Deleting this column is not permitted
   enable=Activate
  -disable=Disable
  \ No newline at end of file
  +disable=Disable
  +ignore_subcontrollers=Ignore sub-controller blocks
  \ No newline at end of file
  
  
  
  1.8       +2 -1      
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_de.properties
  
  Index: messages_de.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_de.properties,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- messages_de.properties    19 Aug 2002 22:33:14 -0000      1.7
  +++ messages_de.properties    20 Aug 2002 18:45:53 -0000      1.8
  @@ -282,4 +282,5 @@
   delete_user=Delete User
   column_delete_disallowed=Deleting this column is not permitted
   enable=Activate
  -disable=Disable
  \ No newline at end of file
  +disable=Disable
  +ignore_subcontrollers=Ignore sub-controller blocks
  \ No newline at end of file
  
  
  
  1.7       +2 -1      
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_ja.properties
  
  Index: messages_ja.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_ja.properties,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- messages_ja.properties    19 Aug 2002 22:33:14 -0000      1.6
  +++ messages_ja.properties    20 Aug 2002 18:45:53 -0000      1.7
  @@ -282,4 +282,5 @@
   delete_user=Delete User
   column_delete_disallowed=Deleting this column is not permitted
   enable=Activate
  -disable=Disable
  \ No newline at end of file
  +disable=Disable
  +ignore_subcontrollers=Ignore sub-controller blocks
  \ No newline at end of file
  
  
  
  1.7       +2 -1      
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_no.properties
  
  Index: messages_no.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages_no.properties,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- messages_no.properties    19 Aug 2002 22:33:14 -0000      1.6
  +++ messages_no.properties    20 Aug 2002 18:45:53 -0000      1.7
  @@ -274,4 +274,5 @@
   delete_user=Delete User
   column_delete_disallowed=Deleting this column is not permitted
   enable=Activate
  -disable=Disable
  \ No newline at end of file
  +disable=Disable
  +ignore_subcontrollers=Ignore sub-controller blocks
  \ No newline at end of file
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to