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]>

Reply via email to