jmeter-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pmoua...@apache.org
Subject svn commit: r1407842 - in /jmeter/trunk: src/components/org/apache/jmeter/control/ src/components/org/apache/jmeter/control/gui/ src/core/org/apache/jmeter/resources/ xdocs/ xdocs/usermanual/
Date Sat, 10 Nov 2012 16:06:23 GMT
Author: pmouawad
Date: Sat Nov 10 16:06:20 2012
New Revision: 1407842

URL: http://svn.apache.org/viewvc?rev=1407842&view=rev
Log:
Bug 54131 - ForEach Controller : Add start and end index for looping over variables
Bugzilla Id: 54131

Modified:
    jmeter/trunk/src/components/org/apache/jmeter/control/ForeachController.java
    jmeter/trunk/src/components/org/apache/jmeter/control/gui/ForeachControlPanel.java
    jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
    jmeter/trunk/xdocs/changes.xml
    jmeter/trunk/xdocs/usermanual/component_reference.xml

Modified: jmeter/trunk/src/components/org/apache/jmeter/control/ForeachController.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/control/ForeachController.java?rev=1407842&r1=1407841&r2=1407842&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/control/ForeachController.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/control/ForeachController.java Sat Nov 10
16:06:20 2012
@@ -21,10 +21,10 @@ package org.apache.jmeter.control;
 import java.io.Serializable;
 
 import org.apache.jmeter.samplers.Sampler;
-import org.apache.jmeter.threads.JMeterContext;
-import org.apache.jmeter.threads.JMeterVariables;
 import org.apache.jmeter.testelement.property.BooleanProperty;
 import org.apache.jmeter.testelement.property.StringProperty;
+import org.apache.jmeter.threads.JMeterContext;
+import org.apache.jmeter.threads.JMeterVariables;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.log.Logger;
 
@@ -35,6 +35,10 @@ public class ForeachController extends G
 
     private static final String INPUTVAL = "ForeachController.inputVal";// $NON-NLS-1$
 
+    private static final String START_INDEX = "ForeachController.startIndex";// $NON-NLS-1$
+
+    private static final String END_INDEX = "ForeachController.endIndex";// $NON-NLS-1$
+
     private static final String RETURNVAL = "ForeachController.returnVal";// $NON-NLS-1$
 
     private static final String USE_SEPARATOR = "ForeachController.useSeparator";// $NON-NLS-1$
@@ -45,7 +49,51 @@ public class ForeachController extends G
 
     public ForeachController() {
     }
+    
+
+    /**
+     * @param startIndex Start index  of loop
+     */
+    public void setStartIndex(String startIndex) {
+        setProperty(START_INDEX, startIndex != null ? startIndex : "", "");
+    }
 
+    /**
+     * @return start index of loop
+     */
+    public int getStartIndex() {
+        return getPropertyAsInt(START_INDEX, 0);
+    }
+
+
+    /**
+     * @return start index of loop as String
+     */
+    public String getStartIndexAsString() {
+        return getPropertyAsString(START_INDEX, "");
+    }
+    
+    /**
+     * @param endIndex End index  of loop
+     */
+    public void setEndIndex(String endIndex) {
+        setProperty(END_INDEX, endIndex != null ? endIndex : "", "");
+    }
+
+    /**
+     * @return end index of loop
+     */
+    public int getEndIndex() {
+        return getPropertyAsInt(END_INDEX, Integer.MAX_VALUE);
+    }
+    
+    /**
+     * @return end index of loop
+     */
+    public String getEndIndexAsString() {
+        return getPropertyAsString(END_INDEX, "");
+    }
+    
     public void setInputVal(String inputValue) {
         setProperty(new StringProperty(INPUTVAL, inputValue));
     }
@@ -89,8 +137,16 @@ public class ForeachController extends G
      */
     @Override
     public boolean isDone() {
+        if (loopCount >= getEndIndex()) {
+            return true;
+        }
         JMeterContext context = getThreadContext();
-        String inputVariable = getInputVal() + getSeparator() + (loopCount + 1);
+        StringBuilder builder = new StringBuilder(
+                getInputVal().length()+getSeparator().length()+3);
+        String inputVariable = 
+                builder.append(getInputVal())
+                .append(getSeparator())
+                .append(Integer.toString(loopCount+1)).toString();
         final JMeterVariables variables = context.getVariables();
         final Object currentVariable = variables.getObject(inputVariable);
         if (currentVariable != null) {
@@ -132,7 +188,13 @@ public class ForeachController extends G
      */
     private boolean emptyList() {
         JMeterContext context = getThreadContext();
-        String inputVariable = getInputVal() + getSeparator() + "1";// $NON-NLS-1$
+
+        StringBuilder builder = new StringBuilder(
+                getInputVal().length()+getSeparator().length()+3);
+        String inputVariable = 
+                builder.append(getInputVal())
+                .append(getSeparator())
+                .append(Integer.toString(loopCount+1)).toString();
         if (context.getVariables().getObject(inputVariable) != null) {
             return false;
         }
@@ -161,7 +223,7 @@ public class ForeachController extends G
     }
 
     protected void resetLoopCount() {
-        loopCount = 0;
+        loopCount = getStartIndex();
     }
 
     /**
@@ -191,4 +253,15 @@ public class ForeachController extends G
         super.triggerEndOfLoop();
         resetLoopCount();
     }
+
+
+    /**
+     * Reset loopCount to Start index
+     * @see org.apache.jmeter.control.GenericController#initialize()
+     */
+    @Override
+    public void initialize() {
+        super.initialize();
+        loopCount = getStartIndex();
+    }
 }
\ No newline at end of file

Modified: jmeter/trunk/src/components/org/apache/jmeter/control/gui/ForeachControlPanel.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/control/gui/ForeachControlPanel.java?rev=1407842&r1=1407841&r2=1407842&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/control/gui/ForeachControlPanel.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/control/gui/ForeachControlPanel.java Sat
Nov 10 16:06:20 2012
@@ -47,6 +47,16 @@ public class ForeachControlPanel extends
     private JTextField inputVal;
 
     /**
+     * A field allowing the user to specify the indice start of the loop
+     */
+    private JTextField startIndex;
+
+    /**
+     * A field allowing the user to specify the indice end of the loop
+     */
+    private JTextField endIndex;
+
+    /**
      * A field allowing the user to specify output variable the controller
      * should return.
      */
@@ -68,6 +78,11 @@ public class ForeachControlPanel extends
     /** The name of the loops field component. */
     private static final String RETURNVAL = "Return Field"; // $NON-NLS-1$
 
+    /** The name of the start index field component. */
+    private static final String START_INDEX = "Start Index Field"; // $NON-NLS-1$
+
+    /** The name of the end index field component. */
+    private static final String END_INDEX = "End Index Field"; // $NON-NLS-1$
     /**
      * Create a new LoopControlPanel as a standalone component.
      */
@@ -103,6 +118,8 @@ public class ForeachControlPanel extends
     public void configure(TestElement element) {
         super.configure(element);
         inputVal.setText(((ForeachController) element).getInputValString());
+        startIndex.setText(((ForeachController) element).getStartIndexAsString());
+        endIndex.setText(((ForeachController) element).getEndIndexAsString());
         returnVal.setText(((ForeachController) element).getReturnValString());
         useSeparator.setSelected(((ForeachController) element).getUseSeparator());
     }
@@ -123,6 +140,16 @@ public class ForeachControlPanel extends
             } else {
                 ((ForeachController) lc).setInputVal(""); // $NON-NLS-1$
             }
+            if (startIndex.getText().length() > 0) {
+                ((ForeachController) lc).setStartIndex(startIndex.getText());
+            } else {
+                ((ForeachController) lc).setStartIndex(null); // $NON-NLS-1$
+            }
+            if (endIndex.getText().length() > 0) {
+                ((ForeachController) lc).setEndIndex(endIndex.getText());
+            } else {
+                ((ForeachController) lc).setEndIndex(null); // $NON-NLS-1$
+            }
             if (returnVal.getText().length() > 0) {
                 ((ForeachController) lc).setReturnVal(returnVal.getText());
             } else {
@@ -140,6 +167,8 @@ public class ForeachControlPanel extends
         super.clearGui();
 
         inputVal.setText(""); // $NON-NLS-1$
+        startIndex.setText(""); // $NON-NLS-1$
+        endIndex.setText(""); // $NON-NLS-1$
         returnVal.setText(""); // $NON-NLS-1$
         useSeparator.setSelected(true);
     }
@@ -187,6 +216,8 @@ public class ForeachControlPanel extends
 
         // LOOP LABEL
         JLabel inputValLabel = new JLabel(JMeterUtils.getResString("foreach_input")); //
$NON-NLS-1$
+        JLabel startIndexLabel = new JLabel(JMeterUtils.getResString("foreach_start_index"));
// $NON-NLS-1$
+        JLabel endIndexLabel = new JLabel(JMeterUtils.getResString("foreach_end_index"));
// $NON-NLS-1$
         JLabel returnValLabel = new JLabel(JMeterUtils.getResString("foreach_output")); //
$NON-NLS-1$
 
         // TEXT FIELD
@@ -198,6 +229,22 @@ public class ForeachControlPanel extends
         inputValSubPanel.add(inputVal, BorderLayout.CENTER);
 
         // TEXT FIELD
+        JPanel startIndexSubPanel = new JPanel(new BorderLayout(5, 0));
+        startIndex = new JTextField("", 5); // $NON-NLS-1$
+        startIndex.setName(START_INDEX);
+        startIndexLabel.setLabelFor(startIndex);
+        startIndexSubPanel.add(startIndexLabel, BorderLayout.WEST);
+        startIndexSubPanel.add(startIndex, BorderLayout.CENTER);
+
+        // TEXT FIELD
+        JPanel endIndexSubPanel = new JPanel(new BorderLayout(5, 0));
+        endIndex = new JTextField("", 5); // $NON-NLS-1$
+        endIndex.setName(END_INDEX);
+        endIndexLabel.setLabelFor(endIndex);
+        endIndexSubPanel.add(endIndexLabel, BorderLayout.WEST);
+        endIndexSubPanel.add(endIndex, BorderLayout.CENTER);
+
+        // TEXT FIELD
         JPanel returnValSubPanel = new JPanel(new BorderLayout(5, 0));
         returnVal = new JTextField("", 5); // $NON-NLS-1$
         returnVal.setName(RETURNVAL);
@@ -207,8 +254,9 @@ public class ForeachControlPanel extends
 
         // Checkbox
         useSeparator = new JCheckBox(JMeterUtils.getResString("foreach_use_separator"), true);
// $NON-NLS-1$
-
         loopPanel.add(inputValSubPanel);
+        loopPanel.add(startIndexSubPanel);
+        loopPanel.add(endIndexSubPanel);
         loopPanel.add(returnValSubPanel);
         loopPanel.add(useSeparator);
 

Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=1407842&r1=1407841&r2=1407842&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Sat Nov 10 16:06:20
2012
@@ -288,8 +288,10 @@ fontstyle.bold=Bold
 fontstyle.italic=Italic
 fontstyle.normal=Normal
 foreach_controller_title=ForEach Controller
+foreach_end_index=End index for loop
 foreach_input=Input variable prefix
 foreach_output=Output variable name
+foreach_start_index=Start index for loop
 foreach_use_separator=Add "_" before number ?
 format=Number format
 fr=French

Modified: jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties?rev=1407842&r1=1407841&r2=1407842&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties Sat Nov 10 16:06:20
2012
@@ -282,8 +282,10 @@ fontstyle.bold=Gras
 fontstyle.italic=Italique
 fontstyle.normal=Normal
 foreach_controller_title=Contr\u00F4leur Pour chaque (ForEach)
+foreach_end_index=Indice de fin de la boucle
 foreach_input=Pr\u00E9fixe de la variable d'entr\u00E9e \:
 foreach_output=Nom de la variable de sortie \:
+foreach_start_index=Indice de d\u00E9but de la boucle
 foreach_use_separator=Ajouter un soulign\u00E9 "_" avant le nombre ?
 format=Format du nombre \:
 fr=Fran\u00E7ais

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1407842&r1=1407841&r2=1407842&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Sat Nov 10 16:06:20 2012
@@ -155,6 +155,7 @@ and right angle bracket (>) in search
 
 <h3>Controllers</h3>
 <ul>
+<li><bugzilla>54131</bugzilla> - ForEach Controller : Add start and end
index for looping over variables</li>
 </ul>
 
 <h3>Listeners</h3>

Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1407842&r1=1407841&r2=1407842&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jmeter/trunk/xdocs/usermanual/component_reference.xml Sat Nov 10 16:06:20 2012
@@ -2225,6 +2225,8 @@ This would be the case if the Regular Ex
 <properties>
         <property name="Name" required="No">Descriptive name for this controller that
is shown in the tree.</property>
         <property name="Input variable prefix" required="Yes">Prefix for the variable
names to be used as input.</property>
+        <property name="Start index for loop" required="No">Start index (inclusive)
for loop over variables</property>
+        <property name="End index for loop" required="No">End index (exclusive) for
loop over variables</property>
         <property name="Output variable" required="Yes">
                 The name of the variable which can be used in the loop for replacement in
the samplers</property>
 		<property required="Yes" name="Use Separator">If not checked, the "_" separator is
omitted.</property>



Mime
View raw message