mstover1 2003/03/14 13:15:37
Modified: bin jmeter.properties
src/components/org/apache/jmeter/control
InterleaveControl.java OnceOnlyController.java
src/core/org/apache/jmeter/config Arguments.java
src/core/org/apache/jmeter/config/gui ArgumentsPanel.java
src/core/org/apache/jmeter/control GenericController.java
LoopController.java
src/core/org/apache/jmeter/engine PreCompiler.java
StandardJMeterEngine.java
src/core/org/apache/jmeter/engine/util CompoundVariable.java
ValueReplacer.java
src/core/org/apache/jmeter/threads JMeterContext.java
JMeterThread.java JMeterVariables.java
TestCompiler.java
src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler
FTPSampler.java
src/protocol/http/org/apache/jmeter/protocol/http/config
MultipartUrlConfig.java
src/protocol/http/org/apache/jmeter/protocol/http/gui
HTTPArgumentsPanel.java
src/protocol/http/org/apache/jmeter/protocol/http/sampler
HTTPSampler.java
src/protocol/http/org/apache/jmeter/protocol/http/util
HTTPArgument.java
src/protocol/java/org/apache/jmeter/protocol/java/sampler
JavaSampler.java
src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler
JDBCSampler.java
Added: src/jorphan/org/apache/jorphan/gui ObjectTableModel.java
Log:
New table model making things simpler
fixing problem with test plan level variables
Revision Changes Path
1.59 +1 -1 jakarta-jmeter/bin/jmeter.properties
Index: jmeter.properties
===================================================================
RCS file: /home/cvs/jakarta-jmeter/bin/jmeter.properties,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -r1.58 -r1.59
--- jmeter.properties 11 Mar 2003 19:04:18 -0000 1.58
+++ jmeter.properties 14 Mar 2003 21:15:35 -0000 1.59
@@ -68,7 +68,7 @@
#Logging levels for the logging categories in JMeter. Correct values are
FATAL_ERROR, ERROR, WARN, INFO, and DEBUG
log_level.jmeter=WARN
-log_level.jmeter.engine=WARN
+log_level.jmeter.engine=DEBUG
log_level.jmeter.gui=WARN
log_level.jmeter.elements=WARN
log_level.jmeter.util=WARN
1.7 +3 -1
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.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- InterleaveControl.java 5 Feb 2003 05:12:02 -0000 1.6
+++ InterleaveControl.java 14 Mar 2003 21:15:35 -0000 1.7
@@ -57,6 +57,7 @@
import org.apache.jmeter.samplers.AbstractSampler;
import org.apache.jmeter.samplers.Sampler;
+import org.apache.jmeter.testelement.PerSampleClonable;
import org.apache.jmeter.testelement.TestElement;
/****************************************
@@ -377,7 +378,8 @@
s.setName(name);
return s;
}
- public class TestSampler extends AbstractSampler {
+ public class TestSampler extends AbstractSampler
+ implements PerSampleClonable {
public void addCustomTestElement(TestElement t) { }
public org.apache.jmeter.samplers.SampleResult
sample(org.apache.jmeter.samplers.Entry e) { return null; }
}
1.4 +3 -1
jakarta-jmeter/src/components/org/apache/jmeter/control/OnceOnlyController.java
Index: OnceOnlyController.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/control/OnceOnlyController.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- OnceOnlyController.java 5 Feb 2003 05:12:02 -0000 1.3
+++ OnceOnlyController.java 14 Mar 2003 21:15:35 -0000 1.4
@@ -57,6 +57,7 @@
import java.io.Serializable;
import org.apache.jmeter.samplers.AbstractSampler;
+import org.apache.jmeter.testelement.PerSampleClonable;
import org.apache.jmeter.testelement.TestElement;
/************************************************************
@@ -147,7 +148,8 @@
s.setName(name);
return s;
}
- public class TestSampler extends AbstractSampler {
+ public class TestSampler extends AbstractSampler
+ implements PerSampleClonable {
public void addCustomTestElement(TestElement t) { }
public org.apache.jmeter.samplers.SampleResult
sample(org.apache.jmeter.samplers.Entry e) { return null; }
}
1.3 +7 -1 jakarta-jmeter/src/core/org/apache/jmeter/config/Arguments.java
Index: Arguments.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/config/Arguments.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Arguments.java 18 Feb 2003 16:03:44 -0000 1.2
+++ Arguments.java 14 Mar 2003 21:15:35 -0000 1.3
@@ -99,6 +99,12 @@
{
return (List)getProperty(ARGUMENTS);
}
+
+ public void clear()
+ {
+ super.clear();
+ setProperty(ARGUMENTS,new ArrayList());
+ }
public void setArguments(List arguments)
{
1.7 +20 -13
jakarta-jmeter/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java
Index: ArgumentsPanel.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ArgumentsPanel.java 28 Feb 2003 14:21:45 -0000 1.6
+++ ArgumentsPanel.java 14 Mar 2003 21:15:35 -0000 1.7
@@ -79,10 +79,9 @@
import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
-import org.apache.jmeter.gui.util.PowerTableModel;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.collections.Data;
+import org.apache.jorphan.gui.ObjectTableModel;
import org.apache.log.Hierarchy;
import org.apache.log.Logger;
@@ -97,10 +96,10 @@
public class ArgumentsPanel extends AbstractConfigGui implements FocusListener,
ActionListener, CellEditorListener
{
transient private static Logger log =
Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.GUI);
- JTable table;
+ transient JTable table;
JButton add;
JButton delete;
- protected PowerTableModel tableModel;
+ protected transient ObjectTableModel tableModel;
String name;
JLabel tableLabel;
@@ -185,15 +184,17 @@
*/
public void modifyTestElement(TestElement args)
{
- Data model = tableModel.getData();
+ Iterator modelData = tableModel.iterator();
Arguments arguments = null;
if (args instanceof Arguments)
{
arguments = (Arguments) args;
- model.reset();
- while (model.next())
+ arguments.clear();
+ while (modelData.hasNext())
{
- arguments.addArgument((String)
model.getColumnValue(Arguments.COLUMN_NAMES[0]),
model.getColumnValue(Arguments.COLUMN_NAMES[1]), "=");
+ Argument arg = (Argument) modelData.next();
+ arg.setMetaData("=");
+ arguments.addArgument(arg);
}
}
this.configureTestElement(args);
@@ -214,7 +215,7 @@
while (iter.hasNext())
{
Argument arg = (Argument) iter.next();
- tableModel.addRow(new Object[] { arg.getName(), arg.getValue()});
+ tableModel.addRow(arg);
}
}
checkDeleteStatus();
@@ -301,8 +302,7 @@
// and stop the editing before adding a new row.
stopTableEditing();
- tableModel.addNewRow();
- tableModel.fireTableDataChanged();
+ tableModel.addRow(makeNewArgument());
// Enable DELETE (which may already be enabled, but it won't hurt)
delete.setEnabled(true);
@@ -312,6 +312,11 @@
table.setRowSelectionInterval(rowToSelect, rowToSelect);
}
+ protected Object makeNewArgument()
+ {
+ return new Argument("","");
+ }
+
private void stopTableEditing()
{
if (table.isEditing())
@@ -371,7 +376,9 @@
protected void initializeTableModel()
{
- tableModel = new PowerTableModel(new String[] { Arguments.COLUMN_NAMES[0],
Arguments.COLUMN_NAMES[1] }, new Class[] { String.class, String.class });
+ tableModel = new ObjectTableModel(new String[] { Arguments.COLUMN_NAMES[0],
Arguments.COLUMN_NAMES[1] },
+ new String[]{"name","value"},new
Class[]{String.class,Object.class},new Class[] { String.class, String.class },
+ new Argument());
}
protected void checkDeleteStatus()
@@ -434,7 +441,7 @@
public void testArgumentCreation() throws Exception
{
ArgumentsPanel gui = new ArgumentsPanel();
- gui.tableModel.addNewRow();
+ gui.tableModel.addRow(new Argument());
gui.tableModel.setValueAt("howdy", 0, 0);
gui.tableModel.setValueAt("doody", 0, 1);
assertEquals("=", ((Argument) ((Arguments)
gui.createTestElement()).getArguments().get(0)).getMetaData());
1.4 +3 -2
jakarta-jmeter/src/core/org/apache/jmeter/control/GenericController.java
Index: GenericController.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/GenericController.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- GenericController.java 5 Feb 2003 05:12:05 -0000 1.3
+++ GenericController.java 14 Mar 2003 21:15:35 -0000 1.4
@@ -62,6 +62,7 @@
import org.apache.jmeter.samplers.AbstractSampler;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.testelement.AbstractTestElement;
+import org.apache.jmeter.testelement.PerSampleClonable;
import org.apache.jmeter.testelement.PerThreadClonable;
import org.apache.jmeter.testelement.TestElement;
@@ -364,7 +365,7 @@
s.setName(name);
return s;
}
- class TestSampler extends AbstractSampler {
+ class TestSampler extends AbstractSampler implements PerSampleClonable
{
public void addCustomTestElement(TestElement t) { }
public org.apache.jmeter.samplers.SampleResult
sample(org.apache.jmeter.samplers.Entry e) { return null; }
}
1.3 +3 -2
jakarta-jmeter/src/core/org/apache/jmeter/control/LoopController.java
Index: LoopController.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/LoopController.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LoopController.java 5 Feb 2003 05:12:05 -0000 1.2
+++ LoopController.java 14 Mar 2003 21:15:35 -0000 1.3
@@ -56,6 +56,7 @@
import java.io.Serializable;
import org.apache.jmeter.samplers.AbstractSampler;
+import org.apache.jmeter.testelement.PerSampleClonable;
import org.apache.jmeter.testelement.TestElement;
/****************************************
* Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
@@ -219,7 +220,7 @@
s.setName(name);
return s;
}
- class TestSampler extends AbstractSampler {
+ class TestSampler extends AbstractSampler implements PerSampleClonable
{
public void addCustomTestElement(TestElement t) { }
public org.apache.jmeter.samplers.SampleResult
sample(org.apache.jmeter.samplers.Entry e) { return null; }
}
1.10 +45 -44
jakarta-jmeter/src/core/org/apache/jmeter/engine/PreCompiler.java
Index: PreCompiler.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/PreCompiler.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- PreCompiler.java 10 Mar 2003 17:27:58 -0000 1.9
+++ PreCompiler.java 14 Mar 2003 21:15:36 -0000 1.10
@@ -5,6 +5,8 @@
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.TestPlan;
+import org.apache.jmeter.threads.JMeterContextService;
+import org.apache.jmeter.threads.JMeterVariables;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import org.apache.jorphan.collections.HashTreeTraverser;
@@ -18,48 +20,47 @@
*/
public class PreCompiler implements HashTreeTraverser
{
- transient private static Logger log =
- Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ENGINE);
- private Map userDefinedVariables;
- private boolean testValid = true;
- private ValueReplacer replacer;
- public PreCompiler()
- {
- replacer = new ValueReplacer();
- }
- /**
- * @see ListedHashTreeVisitor#addNode(Object, ListedHashTree)
- */
- public void addNode(Object node, HashTree subTree)
- {
- if (node instanceof TestPlan)
- {
- replacer.setUserDefinedVariables(
- ((TestPlan) node).getUserDefinedVariables());
- }
- if (node instanceof TestElement)
- {
- try
- {
- replacer.replaceValues((TestElement) node);
- }
- catch (InvalidVariableException e)
- {
- log.error("invalid variables",e);
- testValid = false;
- }
- }
- }
- /**
- * @see ListedHashTreeVisitor#subtractNode()
- */
- public void subtractNode()
- {
- }
- /**
- * @see ListedHashTreeVisitor#processPath()
- */
- public void processPath()
- {
- }
+ transient private static Logger log =
Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ENGINE);
+ private Map userDefinedVariables;
+ private boolean testValid = true;
+ private ValueReplacer replacer;
+ public PreCompiler()
+ {
+ replacer = new ValueReplacer();
+ }
+ /**
+ * @see ListedHashTreeVisitor#addNode(Object, ListedHashTree)
+ */
+ public void addNode(Object node, HashTree subTree)
+ {
+ if (node instanceof TestPlan)
+ {
+ replacer.setUserDefinedVariables(((TestPlan)
node).getUserDefinedVariables());
+ JMeterVariables vars = new JMeterVariables();
+ vars.putAll(((TestPlan) node).getUserDefinedVariables());
+ JMeterContextService.getContext().setVariables(vars);
+ }
+ if (node instanceof TestElement)
+ {
+ try
+ {
+ replacer.replaceValues((TestElement) node);
+ }
+ catch (InvalidVariableException e)
+ {
+ log.error("invalid variables", e);
+ testValid = false;
+ }
+ }
+ }
+ /**
+ * @see ListedHashTreeVisitor#subtractNode()
+ */
+ public void subtractNode()
+ {}
+ /**
+ * @see ListedHashTreeVisitor#processPath()
+ */
+ public void processPath()
+ {}
}
1.17 +4 -2
jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java
Index: StandardJMeterEngine.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- StandardJMeterEngine.java 5 Feb 2003 05:12:06 -0000 1.16
+++ StandardJMeterEngine.java 14 Mar 2003 21:15:36 -0000 1.17
@@ -68,6 +68,7 @@
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.TestListener;
import org.apache.jmeter.testelement.TestPlan;
+import org.apache.jmeter.threads.JMeterContextService;
import org.apache.jmeter.threads.JMeterThread;
import org.apache.jmeter.threads.JMeterThreadMonitor;
import org.apache.jmeter.threads.ListenerNotifier;
@@ -172,6 +173,7 @@
ListedHashTree threadGroupTree =
(ListedHashTree)searcher.getSubTree(group);
threadGroupTree.add(group,testLevelElements);
threads[i] = new
JMeterThread(cloneTree(threadGroupTree),this,notifier);
+ threads[i].setInitialContext(JMeterContextService.getContext());
threads[i].setInitialDelay((int)(((float)(group.getRampUp() * 1000) /
(float)group.getNumThreads())
* (float)i));
threads[i].setThreadName(group.getName()+"-"+(i+1));
1.4 +3 -2
jakarta-jmeter/src/core/org/apache/jmeter/engine/util/CompoundVariable.java
Index: CompoundVariable.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/util/CompoundVariable.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- CompoundVariable.java 14 Mar 2003 19:51:13 -0000 1.3
+++ CompoundVariable.java 14 Mar 2003 21:15:36 -0000 1.4
@@ -87,7 +87,7 @@
public class CompoundVariable implements Function
{
transient private static Logger log =
- Hierarchy.getDefaultHierarchy().getLoggerFor("jmeter.elements");
+ Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ENGINE);
private JMeterVariables threadVars;
private Map varMap = new HashMap();
@@ -154,6 +154,7 @@
while (iter.hasNext())
{
Object item = iter.next();
+ log.debug("executing object: " + item);
if (item instanceof Function)
{
try
1.2 +297 -196
jakarta-jmeter/src/core/org/apache/jmeter/engine/util/ValueReplacer.java
Index: ValueReplacer.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/util/ValueReplacer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ValueReplacer.java 10 Mar 2003 17:27:57 -0000 1.1
+++ ValueReplacer.java 14 Mar 2003 21:15:36 -0000 1.2
@@ -1,17 +1,20 @@
package org.apache.jmeter.engine.util;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
+import org.apache.jmeter.config.ConfigTestElement;
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.TestPlan;
+import org.apache.jmeter.threads.JMeterContextService;
+import org.apache.jmeter.threads.JMeterVariables;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.util.StringUtilities;
import org.apache.log.Hierarchy;
@@ -25,206 +28,304 @@
*/
public class ValueReplacer
{
- transient private static Logger log =
Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ELEMENTS);
- CompoundVariable masterFunction = new CompoundVariable();
- Map variables = new HashMap();
+ transient private static Logger log =
Hierarchy.getDefaultHierarchy().getLoggerFor(JMeterUtils.ENGINE);
+ CompoundVariable masterFunction = new CompoundVariable();
+ Map variables = new HashMap();
TestPlan tp;
-
- public ValueReplacer()
- {
- }
-
- public ValueReplacer(TestPlan tp)
- {
- this.tp = tp;
+
+ public ValueReplacer()
+ {
+ tp = new TestPlan();
+ }
+
+ public ValueReplacer(TestPlan tp)
+ {
+ this.tp = tp;
setUserDefinedVariables(tp.getUserDefinedVariables());
- }
-
- public void setUserDefinedVariables(Map variables)
- {
- masterFunction.setUserDefinedVariables(variables);
- this.variables = variables;
- }
-
- public void replaceValues(TestElement el) throws InvalidVariableException
- {
- Iterator iter = el.getPropertyNames().iterator();
- while(iter.hasNext())
- {
- String propName = (String)iter.next();
- Object propValue = el.getProperty(propName);
- if(propValue instanceof String)
- {
- Object newValue = getNewValue((String)propValue);
- el.setProperty(propName,newValue);
- }
- else if(propValue instanceof TestElement)
- {
- replaceValues((TestElement)propValue);
- }
- else if(propValue instanceof Collection)
- {
-
el.setProperty(propName,replaceValues((Collection)propValue));
- }
- }
- }
-
- private Object getNewValue(String propValue) throws InvalidVariableException
- {
- Object newValue = propValue;
- masterFunction.clear();
- masterFunction.setParameters((String)propValue);
- if(masterFunction.hasFunction())
- {
- newValue = masterFunction.getFunction();
- }
- else if(masterFunction.hasStatics())
- {
- newValue =
masterFunction.getStaticSubstitution();
- }
- return newValue;
- }
-
- public void addVariable(String name,String value)
+ }
+
+ public void setUserDefinedVariables(Map variables)
+ {
+ masterFunction.setUserDefinedVariables(variables);
+ this.variables = variables;
+ }
+
+ public void replaceValues(TestElement el) throws InvalidVariableException
+ {
+ Iterator iter = el.getPropertyNames().iterator();
+ while (iter.hasNext())
+ {
+ String propName = (String) iter.next();
+ Object propValue = el.getProperty(propName);
+ if (propValue instanceof String)
+ {
+ Object newValue = getNewValue((String) propValue);
+ el.setProperty(propName, newValue);
+ }
+ else if (propValue instanceof TestElement)
+ {
+ replaceValues((TestElement) propValue);
+ }
+ else if (propValue instanceof Collection)
+ {
+ el.setProperty(propName, replaceValues((Collection) propValue));
+ }
+ }
+ }
+
+ private Object getNewValue(String propValue) throws InvalidVariableException
+ {
+ Object newValue = propValue;
+ masterFunction.clear();
+ masterFunction.setParameters((String) propValue);
+ log.debug("value replacer looking at: " + propValue);
+ if (masterFunction.hasFunction())
+ {
+ newValue = masterFunction.getFunction();
+ log.debug("replaced with: " + newValue);
+ }
+ else if (masterFunction.hasStatics())
+ {
+ newValue = masterFunction.getStaticSubstitution();
+ log.debug("replaced with: " + newValue);
+ }
+ return newValue;
+ }
+
+ public void addVariable(String name, String value)
{
- tp.addParameter(name,value);
+ tp.addParameter(name, value);
setUserDefinedVariables(tp.getUserDefinedVariables());
}
-
- public Collection replaceValues(Collection values) throws
InvalidVariableException
- {
- Collection newColl = null;
- try {
- newColl = (Collection)values.getClass().newInstance();
- } catch(Exception e) {
- log.error("",e);
- return values;
- }
- Iterator iter = values.iterator();
- while(iter.hasNext())
- {
- Object val = iter.next();
- if(val instanceof TestElement)
- {
- replaceValues((TestElement)val);
- }
- else if(val instanceof String)
- {
- val = getNewValue((String)val);
- }
- else if(val instanceof Collection)
- {
- val = replaceValues((Collection)val);
- }
- newColl.add(val);
- }
- return newColl;
- }
-
- /**
- * Replaces raw values with user-defined variable names.
- */
- public Collection reverseReplace(Collection values)
- {
- Collection newColl = null;
- try {
- newColl = (Collection)values.getClass().newInstance();
- } catch(Exception e) {
- log.error("",e);
- return values;
- }
- Iterator iter = values.iterator();
- while(iter.hasNext())
- {
- Object val = iter.next();
- if(val instanceof TestElement)
- {
- reverseReplace((TestElement)val);
- }
- else if(val instanceof String)
- {
- val = substituteValues((String)val);
- }
- else if(val instanceof Collection)
- {
- val = reverseReplace((Collection)val);
- }
- newColl.add(val);
- }
- return newColl;
- }
-
- /**
- * Replaces raw values with user-defined variable names.
- */
- public void reverseReplace(TestElement el)
- {
- Iterator iter = el.getPropertyNames().iterator();
- while(iter.hasNext())
- {
- String propName = (String)iter.next();
- Object propValue = el.getProperty(propName);
- if(propValue instanceof String)
- {
- Object newValue = substituteValues((String)propValue);
- el.setProperty(propName,newValue);
- }
- else if(propValue instanceof TestElement)
- {
- reverseReplace((TestElement)propValue);
- }
- else if(propValue instanceof Collection)
- {
-
el.setProperty(propName,reverseReplace((Collection)propValue));
- }
- }
- }
-
- private String substituteValues(String input)
- {
- Iterator iter = variables.keySet().iterator();
- while(iter.hasNext())
- {
- String key = (String)iter.next();
- String value = (String)variables.get(key);
- input = StringUtilities.substitute(input,value,"${"+key+"}");
- }
- return input;
- }
-
-
-
- public static class Test extends TestCase
- {
- TestPlan variables;
-
- public Test(String name)
- {
- super(name);
- }
-
- public void setUp()
- {
- variables = new TestPlan();
- variables.addParameter("server","jakarta.apache.org");
- variables.addParameter("username","jack");
- variables.addParameter("password","jacks_password");
- variables.addParameter("regex",".*");
- }
-
- public void testReverseReplacement() throws Exception
- {
- ValueReplacer replacer = new ValueReplacer(variables);
+
+ public Collection replaceValues(Collection values) throws
InvalidVariableException
+ {
+ Collection newColl = null;
+ try
+ {
+ newColl = (Collection) values.getClass().newInstance();
+ }
+ catch (Exception e)
+ {
+ log.error("", e);
+ return values;
+ }
+ Iterator iter = values.iterator();
+ while (iter.hasNext())
+ {
+ Object val = iter.next();
+ if (val instanceof TestElement)
+ {
+ replaceValues((TestElement) val);
+ }
+ else if (val instanceof String)
+ {
+ val = getNewValue((String) val);
+ }
+ else if (val instanceof Collection)
+ {
+ val = replaceValues((Collection) val);
+ }
+ newColl.add(val);
+ }
+ return newColl;
+ }
+
+ /**
+ * Replaces raw values with user-defined variable names.
+ */
+ public Collection reverseReplace(Collection values)
+ {
+ Collection newColl = null;
+ try
+ {
+ newColl = (Collection) values.getClass().newInstance();
+ }
+ catch (Exception e)
+ {
+ log.error("", e);
+ return values;
+ }
+ Iterator iter = values.iterator();
+ while (iter.hasNext())
+ {
+ Object val = iter.next();
+ if (val instanceof TestElement)
+ {
+ reverseReplace((TestElement) val);
+ }
+ else if (val instanceof String)
+ {
+ val = substituteValues((String) val);
+ }
+ else if (val instanceof Collection)
+ {
+ val = reverseReplace((Collection) val);
+ }
+ newColl.add(val);
+ }
+ return newColl;
+ }
+
+ /**
+ * Remove variables references and replace with the raw string values.
+ */
+ public Collection undoReverseReplace(Collection values)
+ {
+ Collection newColl = null;
+ try
+ {
+ newColl = (Collection) values.getClass().newInstance();
+ }
+ catch (Exception e)
+ {
+ log.error("", e);
+ return values;
+ }
+ Iterator iter = values.iterator();
+ while (iter.hasNext())
+ {
+ Object val = iter.next();
+ if (val instanceof TestElement)
+ {
+ undoReverseReplace((TestElement) val);
+ }
+ else if (val instanceof String)
+ {
+ val = substituteReferences((String) val);
+ }
+ else if (val instanceof Collection)
+ {
+ val = undoReverseReplace((Collection) val);
+ }
+ newColl.add(val);
+ }
+ return newColl;
+ }
+
+ /**
+ * Remove variables references and replace with the raw string values.
+ * @param el
+ */
+ public void undoReverseReplace(TestElement el)
+ {
+ Iterator iter = el.getPropertyNames().iterator();
+ while (iter.hasNext())
+ {
+ String propName = (String) iter.next();
+ Object propValue = el.getProperty(propName);
+ if (propValue instanceof String)
+ {
+ Object newValue = substituteReferences((String) propValue);
+ el.setProperty(propName, newValue);
+ }
+ else if (propValue instanceof TestElement)
+ {
+ undoReverseReplace((TestElement) propValue);
+ }
+ else if (propValue instanceof Collection)
+ {
+ el.setProperty(propName, undoReverseReplace((Collection)
propValue));
+ }
+ }
+ }
+
+ /**
+ * Replaces raw values with user-defined variable names.
+ */
+ public void reverseReplace(TestElement el)
+ {
+ Iterator iter = el.getPropertyNames().iterator();
+ while (iter.hasNext())
+ {
+ String propName = (String) iter.next();
+ Object propValue = el.getProperty(propName);
+ if (propValue instanceof String)
+ {
+ Object newValue = substituteValues((String) propValue);
+ el.setProperty(propName, newValue);
+ }
+ else if (propValue instanceof TestElement)
+ {
+ reverseReplace((TestElement) propValue);
+ }
+ else if (propValue instanceof Collection)
+ {
+ el.setProperty(propName, reverseReplace((Collection) propValue));
+ }
+ }
+ }
+
+ private String substituteValues(String input)
+ {
+ Iterator iter = variables.keySet().iterator();
+ while (iter.hasNext())
+ {
+ String key = (String) iter.next();
+ String value = (String) variables.get(key);
+ input = StringUtilities.substitute(input, value, "${" + key + "}");
+ }
+ return input;
+ }
+
+ private String substituteReferences(String input)
+ {
+ Iterator iter = variables.keySet().iterator();
+ while (iter.hasNext())
+ {
+ String key = (String) iter.next();
+ String value = (String) variables.get(key);
+ input = StringUtilities.substitute(input, "${" + key + "}", value);
+ }
+ return input;
+ }
+
+ public static class Test extends TestCase
+ {
+ TestPlan variables;
+
+ public Test(String name)
+ {
+ super(name);
+ }
+
+ public void setUp()
+ {
+ variables = new TestPlan();
+ variables.addParameter("server", "jakarta.apache.org");
+ variables.addParameter("username", "jack");
+ variables.addParameter("password", "jacks_password");
+ variables.addParameter("regex", ".*");
+ JMeterVariables vars = new JMeterVariables();
+ vars.put("server", "jakarta.apache.org");
+ JMeterContextService.getContext().setVariables(vars);
+ }
+
+ public void testReverseReplacement() throws Exception
+ {
+ ValueReplacer replacer = new ValueReplacer(variables);
assertTrue(variables.getUserDefinedVariables().containsKey("server"));
assertTrue(replacer.variables.containsKey("server"));
- TestElement element = new TestPlan();
- element.setProperty("domain","jakarta.apache.org");
- List args = new LinkedList();
- args.add("username is jack");
- args.add("jacks_password");
- element.setProperty("args",args);
- replacer.reverseReplace(element);
- assertEquals("${server}",element.getProperty("domain"));
- }
- }
+ TestElement element = new TestPlan();
+ element.setProperty("domain", "jakarta.apache.org");
+ List args = new ArrayList();
+ args.add("username is jack");
+ args.add("jacks_password");
+ element.setProperty("args", args);
+ replacer.reverseReplace(element);
+ assertEquals("${server}", element.getProperty("domain"));
+ args = (List) element.getProperty("args");
+ assertEquals("${password}", args.get(1));
+ }
+
+ public void testReplace() throws Exception
+ {
+ ValueReplacer replacer = new ValueReplacer();
+ replacer.setUserDefinedVariables(variables.getUserDefinedVariables());
+ TestElement element = new ConfigTestElement();
+ element.setProperty("domain", "${server}");
+ replacer.replaceValues(element);
+ assertEquals("jakarta.apache.org", ((CompoundVariable)
element.getProperty("domain")).execute());
+ }
+ }
}
1.2 +1 -1
jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterContext.java
Index: JMeterContext.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterContext.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JMeterContext.java 28 Feb 2003 21:50:32 -0000 1.1
+++ JMeterContext.java 14 Mar 2003 21:15:36 -0000 1.2
@@ -29,7 +29,7 @@
return variables;
}
- void setVariables( JMeterVariables vars ) {
+ public void setVariables( JMeterVariables vars ) {
this.variables = vars;
}
1.17 +8 -3
jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterThread.java
Index: JMeterThread.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterThread.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- JMeterThread.java 28 Feb 2003 21:52:23 -0000 1.16
+++ JMeterThread.java 14 Mar 2003 21:15:36 -0000 1.17
@@ -114,6 +114,11 @@
threadListeners = threadListenerSearcher.getSearchResults();
notifier = note;
}
+
+ public void setInitialContext(JMeterContext context)
+ {
+ threadVars.putAll(context.getVariables());
+ }
public void setThreadName(String threadName)
{
1.4 +59 -42
jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterVariables.java
Index: JMeterVariables.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterVariables.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JMeterVariables.java 14 Dec 2002 01:23:44 -0000 1.3
+++ JMeterVariables.java 14 Mar 2003 21:15:36 -0000 1.4
@@ -1,6 +1,7 @@
package org.apache.jmeter.threads;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
/**
@@ -11,47 +12,63 @@
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
-public class JMeterVariables {
- private Map variables = new HashMap();
- private int iteration = 0;
-
- public JMeterVariables()
- {
- }
-
- public String getThreadName()
- {
- return Thread.currentThread().getName();
- }
-
- public int getIteration()
- {
- return iteration;
- }
-
- public void incIteration()
- {
- iteration++;
- }
-
- public void initialize()
- {
- variables.clear();
- }
-
- public void put(String key,String value)
- {
- variables.put(key,value);
- }
-
- public String get(String key)
- {
- String val = (String)variables.get(key);
- if(val == null)
- {
- return "";
- }
- return val;
- }
+public class JMeterVariables
+{
+ private Map variables = new HashMap();
+ private int iteration = 0;
+
+ public JMeterVariables()
+ {}
+
+ public String getThreadName()
+ {
+ return Thread.currentThread().getName();
+ }
+
+ public int getIteration()
+ {
+ return iteration;
+ }
+
+ public void incIteration()
+ {
+ iteration++;
+ }
+
+ public void initialize()
+ {
+ variables.clear();
+ }
+
+ public void put(String key, String value)
+ {
+ variables.put(key, value);
+ }
+
+ public void putAll(Map vars)
+ {
+ Iterator iter = vars.keySet().iterator();
+ while (iter.hasNext())
+ {
+ String item = (String) iter.next();
+ put(item, (String) vars.get(item));
+
+ }
+ }
+
+ public void putAll(JMeterVariables vars)
+ {
+ putAll(vars.variables);
+ }
+
+ public String get(String key)
+ {
+ String val = (String) variables.get(key);
+ if (val == null)
+ {
+ return "";
+ }
+ return val;
+ }
}
1.15 +6 -7
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.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- TestCompiler.java 21 Feb 2003 18:19:44 -0000 1.14
+++ TestCompiler.java 14 Mar 2003 21:15:36 -0000 1.15
@@ -340,8 +340,7 @@
assertEquals("A test value", sampler.getProperty("test.property"));
}
- class TestSampler extends AbstractSampler
- {
+ class TestSampler extends AbstractSampler implements PerSampleClonable {
public void addCustomTestElement(TestElement t)
{}
public org.apache.jmeter.samplers.SampleResult
sample(org.apache.jmeter.samplers.Entry e)
1.1
jakarta-jmeter/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java
Index: ObjectTableModel.java
===================================================================
package org.apache.jorphan.gui;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import javax.swing.event.TableModelEvent;
import javax.swing.table.DefaultTableModel;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
/**
* @author Administrator
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
*/
public class ObjectTableModel extends DefaultTableModel
{
private static Logger log = LoggingManager.getLoggerFor("jorphan.gui");
private transient ArrayList objects = new ArrayList();
private transient List headers = new ArrayList();
private transient ArrayList classes = new ArrayList();
private transient Class objectClass;
private transient ArrayList setMethods = new ArrayList();
private transient ArrayList getMethods = new ArrayList();
public ObjectTableModel(String[] headers, String[] propertyNames, Class[]
propertyClasses, Class[] renderClasses,
Object sampleObject)
{
this.headers.addAll(Arrays.asList(headers));
this.classes.addAll(Arrays.asList(renderClasses));
objectClass = sampleObject.getClass();
Class[] emptyClasses = new Class[0];
for (int i = 0; i < propertyNames.length; i++)
{
propertyNames[i] = propertyNames[i].substring(0, 1).toUpperCase() +
propertyNames[i].substring(1);
try
{
if (!propertyClasses[i].equals(Boolean.class) &&
!propertyClasses[i].equals(boolean.class))
{
getMethods.add(objectClass.getMethod("get" + propertyNames[i],
emptyClasses));
}
else
{
getMethods.add(objectClass.getMethod("is" + propertyNames[i],
emptyClasses));
}
setMethods.add(objectClass.getMethod("set" + propertyNames[i], new
Class[]{propertyClasses[i]}));
}
catch (NoSuchMethodException e)
{
log.error("Invalid Method name for class: " + objectClass, e);
}
}
}
public Iterator iterator()
{
return objects.iterator();
}
public void clearData()
{
int size = getRowCount();
objects.clear();
super.fireTableRowsDeleted(0,size);
}
public void addRow(Object value)
{
objects.add(value);
super.fireTableRowsInserted(objects.size()-1,objects.size());
}
/**
* @see javax.swing.table.TableModel#getColumnCount()
*/
public int getColumnCount()
{
return headers.size();
}
/**
* @see javax.swing.table.TableModel#getColumnName(int)
*/
public String getColumnName(int col)
{
return (String) headers.get(col);
}
/**
* @see javax.swing.table.TableModel#getRowCount()
*/
public int getRowCount()
{
if(objects == null)
{
return 0;
}
return objects.size();
}
/**
* @see javax.swing.table.TableModel#getValueAt(int, int)
*/
public Object getValueAt(int row, int col)
{
Object value = objects.get(row);
Method getMethod = (Method) getMethods.get(col);
try
{
return getMethod.invoke(value, new Object[0]);
}
catch (IllegalAccessException e)
{
log.error("Illegal method access",e);
}
catch (InvocationTargetException e)
{
log.error("incorrect method access",e);
}
return null;
}
/**
* @see javax.swing.table.TableModel#isCellEditable(int, int)
*/
public boolean isCellEditable(int arg0, int arg1)
{
return true;
}
/**
* @see javax.swing.table.DefaultTableModel#moveRow(int, int, int)
*/
public void moveRow(int start, int end, int to)
{
List subList = objects.subList(start,end);
for(int x = end-1;x >= start;x--)
{
objects.remove(x);
}
objects.addAll(to,subList);
super.fireTableChanged(new TableModelEvent(this));
}
/**
* @see javax.swing.table.DefaultTableModel#removeRow(int)
*/
public void removeRow(int row)
{
objects.remove(row);
super.fireTableRowsDeleted(row,row);
}
/**
* @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
*/
public void setValueAt(Object cellValue, int row, int col)
{
Object value = objects.get(row);
Method setMethod = (Method)setMethods.get(col);
try
{
setMethod.invoke(value,new Object[]{cellValue});
}
catch (IllegalAccessException e)
{
log.error("Illegal method access",e);
}
catch (InvocationTargetException e)
{
log.error("incorrect method access",e);
}
super.fireTableDataChanged();
}
/**
* @see javax.swing.table.TableModel#getColumnClass(int)
*/
public Class getColumnClass(int arg0)
{
return (Class)classes.get(arg0);
}
}
1.3 +4 -4
jakarta-jmeter/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/FTPSampler.java
Index: FTPSampler.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/FTPSampler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FTPSampler.java 23 Aug 2002 22:51:46 -0000 1.2
+++ FTPSampler.java 14 Mar 2003 21:15:36 -0000 1.3
@@ -62,6 +62,7 @@
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.samplers.AbstractSampler;
+import org.apache.jmeter.testelement.PerSampleClonable;
import org.apache.jmeter.testelement.TestElement;
/************************************************************
@@ -72,8 +73,7 @@
[EMAIL PROTECTED] $Revision$
***********************************************************/
-public class FTPSampler extends AbstractSampler
-{
+public class FTPSampler extends AbstractSampler implements PerSampleClonable {
public final static String SERVER = "FTPSampler.server";
public final static String FILENAME = "FTPSampler.filename";
1.5 +1 -1
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/config/MultipartUrlConfig.java
Index: MultipartUrlConfig.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/config/MultipartUrlConfig.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- MultipartUrlConfig.java 27 Dec 2002 15:51:18 -0000 1.4
+++ MultipartUrlConfig.java 14 Mar 2003 21:15:36 -0000 1.5
@@ -153,7 +153,7 @@
HTTPArgument arg = new HTTPArgument(name,value,true);
if(arg.getName().equals(arg.getEncodedName()) &&
arg.getValue().equals(arg.getEncodedValue()))
{
- arg.setAlwaysEncode(false);
+ arg.setAlwaysEncoded(false);
}
args.addArgument(new HTTPArgument(name,value,true));
}
1.8 +19 -38
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java
Index: HTTPArgumentsPanel.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- HTTPArgumentsPanel.java 18 Feb 2003 16:03:45 -0000 1.7
+++ HTTPArgumentsPanel.java 14 Mar 2003 21:15:36 -0000 1.8
@@ -7,11 +7,10 @@
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.gui.ArgumentsPanel;
-import org.apache.jmeter.gui.util.PowerTableModel;
import org.apache.jmeter.protocol.http.util.HTTPArgument;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
-import org.apache.jorphan.collections.Data;
+import org.apache.jorphan.gui.ObjectTableModel;
/**
* @author Administrator
@@ -27,9 +26,12 @@
protected void initializeTableModel() {
- tableModel = new PowerTableModel(new
String[]{Arguments.COLUMN_NAMES[0],Arguments.COLUMN_NAMES[1],
+ tableModel = new ObjectTableModel(new
String[]{Arguments.COLUMN_NAMES[0],Arguments.COLUMN_NAMES[1],
ENCODE_OR_NOT,INCLUDE_EQUALS},
- new
Class[]{String.class,String.class,Boolean.class,Boolean.class});
+ new
String[]{"name","value","alwaysEncoded","useEquals"},
+ new Class[]{String.class,Object.class,boolean.class,boolean.class},
+ new Class[]{String.class,String.class,Boolean.class,Boolean.class},
+ new HTTPArgument());
}
protected void sizeColumns(JTable table)
@@ -40,6 +42,14 @@
fixSize(table.getColumn(ENCODE_OR_NOT));
table.setAutoResizeMode(resizeMode);
}
+
+ protected Object makeNewArgument()
+ {
+ HTTPArgument arg = new HTTPArgument("","");
+ arg.setAlwaysEncoded(false);
+ arg.setUseEquals(true);
+ return arg;
+ }
private void fixSize(TableColumn column)
{
@@ -62,44 +72,16 @@
***************************************/
public TestElement createTestElement()
{
- Data model = tableModel.getData();
+ Iterator modelData = tableModel.iterator();
Arguments args = new Arguments();
- model.reset();
- while(model.next())
+ while(modelData.hasNext())
{
-
if(((Boolean)model.getColumnValue(ENCODE_OR_NOT)).booleanValue())
- {
- HTTPArgument arg = new
HTTPArgument((String)model.getColumnValue(Arguments.COLUMN_NAMES[0]),
- model.getColumnValue(Arguments.COLUMN_NAMES[1]));
- setMetaData(arg);
- args.addArgument(arg);
- }
- else
- {
- HTTPArgument arg = new HTTPArgument();
- arg.setAlwaysEncode(false);
-
arg.setName((String)model.getColumnValue(Arguments.COLUMN_NAMES[0]));
-
arg.setValue(model.getColumnValue(Arguments.COLUMN_NAMES[1]));
- setMetaData(arg);
- args.addArgument(arg);
- }
+ HTTPArgument arg = (HTTPArgument)modelData.next();
+ args.addArgument(arg);
}
this.configureTestElement(args);
return (TestElement)args.clone();
}
-
- protected void setMetaData(HTTPArgument arg)
- {
- Data model = tableModel.getData();
- if(((Boolean)model.getColumnValue(INCLUDE_EQUALS)).booleanValue() ||
model.getColumnValue(Arguments.COLUMN_NAMES[1]).toString().length() > 0)
- {
- arg.setMetaData("=");
- }
- else
- {
- arg.setMetaData("");
- }
- }
/****************************************
* !ToDo (Method description)
@@ -117,8 +99,7 @@
while(iter.hasNext())
{
HTTPArgument arg = (HTTPArgument)iter.next();
- tableModel.addRow(new
Object[]{arg.getName(),arg.getValue(),
- new Boolean(arg.getAlwaysEncode()),
new Boolean(isMetaDataNormal(arg))});
+ tableModel.addRow(arg);
}
}
checkDeleteStatus();
1.26 +5 -5
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
Index: HTTPSampler.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- HTTPSampler.java 11 Mar 2003 19:04:19 -0000 1.25
+++ HTTPSampler.java 14 Mar 2003 21:15:36 -0000 1.26
@@ -76,6 +76,7 @@
import org.apache.jmeter.samplers.AbstractSampler;
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.samplers.SampleResult;
+import org.apache.jmeter.testelement.PerSampleClonable;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.SSLManager;
import org.apache.jorphan.util.JOrphanUtils;
@@ -95,8 +96,7 @@
[EMAIL PROTECTED] $Date$
[EMAIL PROTECTED] $Revision$
***************************************/
-public class HTTPSampler extends AbstractSampler
-{
+public class HTTPSampler extends AbstractSampler implements PerSampleClonable {
public final static String HEADERS = "headers";
public final static String HEADER = "header";
public final static String ARGUMENTS = "HTTPsampler.Arguments";
@@ -261,7 +261,7 @@
HTTPArgument arg = new HTTPArgument(name, value, metaData, true);
if (arg.getName().equals(arg.getEncodedName()) &&
arg.getValue().equals(arg.getEncodedValue()))
{
- arg.setAlwaysEncode(false);
+ arg.setAlwaysEncoded(false);
}
args.addArgument(arg);
}
1.8 +31 -5
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/util/HTTPArgument.java
Index: HTTPArgument.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/util/HTTPArgument.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- HTTPArgument.java 21 Feb 2003 18:19:44 -0000 1.7
+++ HTTPArgument.java 14 Mar 2003 21:15:36 -0000 1.8
@@ -75,6 +75,7 @@
{
private static final String ALWAYS_ENCODE = "HTTPArgument.always_encode";
+ private static final String USE_EQUALS = "HTTPArgument.use_equals";
private static EncoderCache cache = new EncoderCache(1000);
@@ -90,13 +91,38 @@
this(name, value, false);
this.setMetaData(metadata);
}
+
+ public void setUseEquals(boolean ue)
+ {
+ if(ue)
+ {
+ setMetaData("=");
+ }
+ else
+ {
+ setMetaData("");
+ }
+ setProperty(USE_EQUALS,new Boolean(ue));
+ }
+
+ public boolean isUseEquals()
+ {
+ boolean eq = getPropertyAsBoolean(USE_EQUALS);
+ if(getMetaData().equals("=") || (getValue() != null &&
getValue().toString().length() > 0))
+ {
+ setUseEquals(true);
+ return true;
+ }
+ return eq;
+
+ }
- public void setAlwaysEncode(boolean ae)
+ public void setAlwaysEncoded(boolean ae)
{
setProperty(ALWAYS_ENCODE, new Boolean(ae));
}
- public boolean getAlwaysEncode()
+ public boolean isAlwaysEncoded()
{
return getPropertyAsBoolean(ALWAYS_ENCODE);
}
@@ -114,7 +140,7 @@
public HTTPArgument(String name, Object value, boolean alreadyEncoded)
{
- setAlwaysEncode(true);
+ setAlwaysEncoded(true);
if (alreadyEncoded)
{
name = URLDecoder.decode(name);
@@ -156,7 +182,7 @@
public String getEncodedValue()
{
- if (getAlwaysEncode())
+ if (isAlwaysEncoded())
{
return cache.getEncoded(getValue().toString());
}
@@ -168,7 +194,7 @@
public String getEncodedName()
{
- if (getAlwaysEncode())
+ if (isAlwaysEncoded())
{
return cache.getEncoded(getName());
}
1.5 +4 -2
jakarta-jmeter/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java
Index: JavaSampler.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JavaSampler.java 30 Aug 2002 14:43:20 -0000 1.4
+++ JavaSampler.java 14 Mar 2003 21:15:37 -0000 1.5
@@ -64,6 +64,7 @@
import org.apache.jmeter.samplers.AbstractSampler;
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.samplers.SampleResult;
+import org.apache.jmeter.testelement.PerThreadClonable;
import org.apache.jmeter.testelement.TestElement;
import org.apache.log.Hierarchy;
import org.apache.log.Logger;
@@ -73,7 +74,8 @@
*/
-public class JavaSampler extends AbstractSampler implements JavaSamplerClient {
+public class JavaSampler extends AbstractSampler
+ implements JavaSamplerClient, PerThreadClonable {
/** Handle to Java client. **/
@@ -264,4 +266,4 @@
return sb.toString();
}
-}
\ No newline at end of file
+}
1.11 +5 -4
jakarta-jmeter/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java
Index: JDBCSampler.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- JDBCSampler.java 12 Jan 2003 01:28:40 -0000 1.10
+++ JDBCSampler.java 14 Mar 2003 21:15:37 -0000 1.11
@@ -70,6 +70,7 @@
import org.apache.jmeter.samplers.AbstractSampler;
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.samplers.SampleResult;
+import org.apache.jmeter.testelement.PerSampleClonable;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.TestListener;
import org.apache.log.Hierarchy;
@@ -82,8 +83,8 @@
[EMAIL PROTECTED] $Date$
[EMAIL PROTECTED] $Revision$
***********************************************************/
-public class JDBCSampler extends AbstractSampler implements TestListener
-{
+public class JDBCSampler extends AbstractSampler
+ implements TestListener, PerSampleClonable {
transient private static Logger log =
Hierarchy.getDefaultHierarchy().getLoggerFor("jmeter.protocol.jdbc");
public final static String URL = "JDBCSampler.url";
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]