mstover1 2002/08/28 08:53:00
Modified: src/core/org/apache/jmeter/functions ValueReplacer.java
src/core/org/apache/jmeter/gui GuiPackage.java
src/protocol/http/org/apache/jmeter/protocol/http/proxy
ProxyControl.java
src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui
ProxyControlGui.java
Added: src/core/org/apache/jmeter/util StringUtilities.java
Log:
Extracting user-defined values from raw proxy recordings
Revision Changes Path
1.2 +73 -8
jakarta-jmeter/src/core/org/apache/jmeter/functions/ValueReplacer.java
Index: ValueReplacer.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/functions/ValueReplacer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ValueReplacer.java 28 Aug 2002 13:47:15 -0000 1.1
+++ ValueReplacer.java 28 Aug 2002 15:52:59 -0000 1.2
@@ -12,6 +12,7 @@
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.TestPlan;
import org.apache.jmeter.util.LoggingManager;
+import org.apache.jmeter.util.StringUtilities;
import org.apache.log.Hierarchy;
import org.apache.log.Logger;
@@ -25,7 +26,7 @@
{
private static Logger log =
Hierarchy.getDefaultHierarchy().getLoggerFor(LoggingManager.ELEMENTS);
CompoundFunction masterFunction = new CompoundFunction();
- Map reverseMap = new HashMap();
+ Map variables = new HashMap();
public ValueReplacer()
{
@@ -39,12 +40,7 @@
public void setUserDefinedVariables(Map variables)
{
masterFunction.setUserDefinedVariables(variables);
- Iterator iter = variables.keySet().iterator();
- while(iter.hasNext())
- {
- Object key = iter.next();
- reverseMap.put(variables.get(key),key);
- }
+ this.variables = variables;
}
public void replaceValues(TestElement el) throws InvalidVariableException
@@ -116,9 +112,78 @@
return newColl;
}
- public void reverseReplace(TestElement element)
+ /**
+ * 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
{
1.2 +11 -5 jakarta-jmeter/src/core/org/apache/jmeter/gui/GuiPackage.java
Index: GuiPackage.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/GuiPackage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- GuiPackage.java 11 Aug 2002 19:24:43 -0000 1.1
+++ GuiPackage.java 28 Aug 2002 15:52:59 -0000 1.2
@@ -54,14 +54,11 @@
*/
package org.apache.jmeter.gui;
-import java.util.HashSet;
-import java.util.Set;
-
import org.apache.jmeter.exceptions.IllegalUserActionException;
+import org.apache.jmeter.functions.ValueReplacer;
import org.apache.jmeter.gui.tree.JMeterTreeListener;
import org.apache.jmeter.gui.tree.JMeterTreeModel;
-import org.apache.jmeter.samplers.Remoteable;
-import org.apache.jmeter.testelement.TestListener;
+import org.apache.jmeter.testelement.TestPlan;
import org.apache.jmeter.util.ListedHashTree;
/**
@@ -127,6 +124,15 @@
public JMeterTreeModel getTreeModel()
{
return treeModel;
+ }
+
+ public ValueReplacer getReplacer()
+ {
+ ValueReplacer replacer = new ValueReplacer(
+ ((TestPlan)((JMeterGUIComponent)
+ getTreeModel().getTestPlan().getArray()
+ [0]).createTestElement()).getUserDefinedVariables());
+ return replacer;
}
public void setTreeModel(JMeterTreeModel newTreeModel)
1.1
jakarta-jmeter/src/core/org/apache/jmeter/util/StringUtilities.java
Index: StringUtilities.java
===================================================================
package org.apache.jmeter.util;
import junit.framework.TestCase;
/**
* @author Administrator
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
*/
public class StringUtilities
{
public static String substitute(String input,String pattern,String sub)
{
StringBuffer ret = new StringBuffer();
int start = 0;
int index = -1;
while((index = input.indexOf(pattern,start)) >= start)
{
ret.append(input.substring(start,index));
ret.append(sub);
start = index + pattern.length();
}
ret.append(input.substring(start));
return ret.toString();
}
public static class Test extends TestCase
{
public Test(String name)
{
super(name);
}
public void testSub1() throws Exception
{
String input = "http://jakarta.apache.org/jmeter/index.html";
String pattern = "jakarta.apache.org";
String sub = "${server}";
assertEquals("http://${server}/jmeter/index.html",
StringUtilities.substitute(input,pattern,sub));
}
public void testSub2() throws Exception
{
String input = "arg1=param1;param1";
String pattern = "param1";
String sub = "${value}";
assertEquals("arg1=${value};${value}",
StringUtilities.substitute(input,pattern,sub));
}
public void testSub3() throws Exception
{
String input = "jakarta.apache.org";
String pattern = "jakarta.apache.org";
String sub = "${server}";
assertEquals("${server}",
StringUtilities.substitute(input,pattern,sub));
}
}
}
1.5 +5 -1
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
Index: ProxyControl.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ProxyControl.java 28 Aug 2002 02:58:54 -0000 1.4
+++ ProxyControl.java 28 Aug 2002 15:53:00 -0000 1.5
@@ -66,6 +66,7 @@
import org.apache.jmeter.config.ConfigTestElement;
import org.apache.jmeter.control.gui.RecordController;
import org.apache.jmeter.exceptions.IllegalUserActionException;
+import org.apache.jmeter.functions.ValueReplacer;
import org.apache.jmeter.gui.GuiPackage;
import org.apache.jmeter.gui.JMeterGUIComponent;
import org.apache.jmeter.gui.tree.JMeterTreeModel;
@@ -302,6 +303,7 @@
HTTPSampler sampler,
TestElement[] subConfigs)
{
+ ValueReplacer replacer = GuiPackage.getInstance().getReplacer();
TestElement urlConfig = null;
JMeterTreeModel treeModel = GuiPackage.getInstance().getTreeModel();
List nodes = treeModel.getNodesOfType(RecordController.class);
@@ -328,6 +330,7 @@
if (areMatched(sampler, urlConfig))
{
removeValuesFromSampler(sampler, urlConfig);
+ replacer.reverseReplace(sampler);
HttpTestSampleGui test = new HttpTestSampleGui();
test.configure(sampler);
try
@@ -338,6 +341,7 @@
if (subConfigs[i] instanceof
HeaderManager)
{
HeaderPanel comp = new
HeaderPanel();
+
replacer.reverseReplace(subConfigs[i]);
comp.configure(subConfigs[i]);
treeModel.addComponent(comp,
newNode);
}
1.3 +2 -11
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java
Index: ProxyControlGui.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ProxyControlGui.java 28 Aug 2002 02:58:54 -0000 1.2
+++ ProxyControlGui.java 28 Aug 2002 15:53:00 -0000 1.3
@@ -288,7 +288,7 @@
private void startProxy()
{
- ValueReplacer replacer = getReplacer();
+ ValueReplacer replacer = GuiPackage.getInstance().getReplacer();
try
{
replacer.replaceValues(model);
@@ -302,15 +302,6 @@
JOptionPane.showMessageDialog(this,JMeterUtils.getResString(
"invalid_variables"),"Error",JOptionPane.ERROR_MESSAGE);
}
- }
-
- private ValueReplacer getReplacer()
- {
- ValueReplacer replacer = new ValueReplacer(
- ((TestPlan)((JMeterGUIComponent)
-
GuiPackage.getInstance().getTreeModel().getTestPlan().getArray()
- [0]).createTestElement()).getUserDefinedVariables());
- return replacer;
}
private void enableRestart()
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>