sebb        2003/11/14 18:35:51

  Modified:    src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui
                        ProxyControlGui.java
               src/protocol/http/org/apache/jmeter/protocol/http/proxy
                        ProxyControl.java
  Log:
  Apply default to protocol field. Detect pauses bewteen samples and optionally 
generate separators between request blocks; optionally add assertions to first request 
in block
  
  Revision  Changes    Path
  1.24      +43 -2     
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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ProxyControlGui.java      19 Oct 2003 22:43:51 -0000      1.23
  +++ ProxyControlGui.java      15 Nov 2003 02:35:51 -0000      1.24
  @@ -122,6 +122,17 @@
       */
       private JCheckBox httpHeaders;
   
  +    /**
  +     * Add separators between page requests - if there is a large enough time
  +     * difference between samples, assume that a new link has been clicked
  +     */
  +     private JCheckBox addSeparators;
  +
  +     /**
  +      * Add an Assertion to the first sample of each set
  +      */
  +     private JCheckBox addAssertions;
  +
       private ProxyControl model;
   
       private JTable excludeTable;
  @@ -185,6 +196,8 @@
               setIncludeListInProxyControl(model);
               setExcludeListInProxyControl(model);
               model.setCaptureHttpHeaders(httpHeaders.isSelected());
  +                     model.setSeparators(addSeparators.isSelected());
  +                     model.setAssertions(addAssertions.isSelected());
           }
       }
   
  @@ -228,6 +241,8 @@
           model = (ProxyControl)element;
           portField.setText(model.getPropertyAsString(ProxyControl.PORT));
                
httpHeaders.setSelected(model.getPropertyAsBoolean(ProxyControl.CAPTURE_HTTP_HEADERS));
  +             
addSeparators.setSelected(model.getPropertyAsBoolean(ProxyControl.ADD_SEPARATORS));
  +             
addAssertions.setSelected(model.getPropertyAsBoolean(ProxyControl.ADD_ASSERTIONS));
           populateTable(includeModel, model.getIncludePatterns().iterator());
           populateTable(excludeModel, model.getExcludePatterns().iterator());
           repaint();
  @@ -286,6 +301,14 @@
           {
               enableRestart();
           }
  +             else if (command.equals(ProxyControl.ADD_ASSERTIONS))
  +             {
  +                     enableRestart();
  +             }
  +             else if (command.equals(ProxyControl.ADD_SEPARATORS))
  +             {
  +                     enableRestart();
  +             }
           else if (command.equals(ADD_EXCLUDE))
           {
               excludeModel.addNewRow();
  @@ -442,7 +465,7 @@
   
       private JPanel createPortPanel()
       {
  -        portField = new JTextField("8080", 8);
  +        portField = new JTextField(ProxyControl.DEFAULT_PORT_S, 8);
           portField.setName(ProxyControl.PORT);
           portField.addKeyListener(this);
   
  @@ -455,12 +478,30 @@
           httpHeaders.addActionListener(this);
           httpHeaders.setActionCommand(ProxyControl.CAPTURE_HTTP_HEADERS);
   
  +             addSeparators = new 
JCheckBox(JMeterUtils.getResString("proxy_separators"));
  +             addSeparators.setName(ProxyControl.ADD_SEPARATORS);
  +             addSeparators.setSelected(false);
  +             addSeparators.addActionListener(this);
  +             addSeparators.setActionCommand(ProxyControl.ADD_SEPARATORS);
  +
  +             addAssertions = new 
JCheckBox(JMeterUtils.getResString("proxy_assertions"));
  +             addAssertions.setName(ProxyControl.ADD_ASSERTIONS);
  +             addAssertions.setSelected(false);
  +             addAssertions.addActionListener(this);
  +             addAssertions.setActionCommand(ProxyControl.ADD_ASSERTIONS);
  +
           HorizontalPanel panel = new HorizontalPanel();
           panel.add(label);
           panel.add(portField);
   
           panel.add(Box.createHorizontalStrut(10));
           panel.add(httpHeaders);
  +
  +             panel.add(Box.createHorizontalStrut(10));
  +             panel.add(addSeparators);
  +
  +             panel.add(Box.createHorizontalStrut(10));
  +             panel.add(addAssertions);
   
           return panel;
       }
  
  
  
  1.31      +85 -3     
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.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- ProxyControl.java 19 Oct 2003 22:43:51 -0000      1.30
  +++ ProxyControl.java 15 Nov 2003 02:35:51 -0000      1.31
  @@ -63,8 +63,10 @@
   
   import junit.framework.TestCase;
   
  +import org.apache.jmeter.assertions.ResponseAssertion;
   import org.apache.jmeter.config.ConfigElement;
   import org.apache.jmeter.config.ConfigTestElement;
  +import org.apache.jmeter.control.GenericController;
   import org.apache.jmeter.exceptions.IllegalUserActionException;
   import org.apache.jmeter.functions.InvalidVariableException;
   import org.apache.jmeter.gui.GuiPackage;
  @@ -97,8 +99,10 @@
   public class ProxyControl extends ConfigTestElement implements Serializable
   {
       transient private static Logger log = LoggingManager.getLoggerForClass();
  -    Daemon server;
  -    private static final int DEFAULT_PORT = 8080;
  +    private Daemon server;
  +    public static final int DEFAULT_PORT = 8080;
  +     public static final String DEFAULT_PORT_S =
  +              Integer.toString(DEFAULT_PORT);// Used by GUI
       private static PatternCacheLRU patternCache =
           new PatternCacheLRU(1000, new Perl5Compiler());
       transient Perl5Matcher matcher;
  @@ -106,6 +110,15 @@
       public static final String EXCLUDE_LIST = "ProxyControlGui.exclude_list";
       public static final String INCLUDE_LIST = "ProxyControlGui.include_list";
       public static final String CAPTURE_HTTP_HEADERS = 
"ProxyControlGui.capture_http_headers";
  +     public static final String ADD_ASSERTIONS = "ProxyControlGui.add_assertion";
  +     public static final String ADD_SEPARATORS = "ProxyControlGui.add_separator";
  +
  +
  +     private long lastTime = 0;//When was the last sample seen?
  +     private static final long sampleGap = 
  +     JMeterUtils.getPropDefault("proxy.pause",1000);//Detect if user has pressed a 
new link
  +     private boolean addAssertions;
  +     private boolean addSeparators;
   
       public ProxyControl()
       {
  @@ -131,6 +144,18 @@
           setProperty(new BooleanProperty(CAPTURE_HTTP_HEADERS,capture));
       }
   
  +     public void setSeparators(boolean b)
  +     {
  +             addSeparators=b;
  +             setProperty(new BooleanProperty(ADD_SEPARATORS,b));
  +     }
  +
  +     public void setAssertions(boolean b)
  +     {
  +             addAssertions=b;
  +             setProperty(new BooleanProperty(ADD_ASSERTIONS,b));
  +     }
  +
       public void setIncludeList(Collection list)
       {
           setProperty(new CollectionProperty(INCLUDE_LIST, new HashSet(list)));
  @@ -269,6 +294,37 @@
           return ok;
       }
   
  +    /*
  +     * Helper method to add a Response Assertion 
  +     */
  +    private void addAssertion(JMeterTreeModel model,JMeterTreeNode node)
  +        throws IllegalUserActionException
  +    {
  +             if (addAssertions){
  +                     ResponseAssertion ra = new ResponseAssertion();
  +                     ra.setProperty(TestElement.GUI_CLASS,
  +                             "org.apache.jmeter.assertions.gui.AssertionGui");
  +                     ra.setProperty(TestElement.NAME,"Check response");
  +                     ra.setTestField(ResponseAssertion.RESPONSE_DATA);
  +                     model.addComponent(ra,node);
  +             }
  +    }
  +    
  +     /*
  +      * Helper method to add a Divider 
  +      */
  +     private void addDivider(JMeterTreeModel model,JMeterTreeNode node)
  +         throws IllegalUserActionException
  +     {
  +             if (addSeparators){
  +                     TestElement sc = new GenericController();
  +                     sc.setProperty(TestElement.GUI_CLASS,
  +                         "org.apache.jmeter.control.gui.LogicControllerGui");
  +                     sc.setProperty(TestElement.NAME,"-------------------");
  +                     model.addComponent(sc,node);
  +         }
  +     }
  +    
       private void placeConfigElement(
           HTTPSampler sampler,
           TestElement[] subConfigs)
  @@ -318,8 +374,26 @@
                           
"org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui");
                       try
                       {
  +                                             boolean firstInBatch=false;
  +                                             if (lastTime == 0){
  +                                                     lastTime = 
System.currentTimeMillis();
  +                                                     firstInBatch=true;
  +                                             }
  +                                             long now = System.currentTimeMillis();
  +                                             if (now - lastTime > sampleGap){
  +                                                     addDivider(treeModel,node);
  +                             firstInBatch=true;//Remember to save the new node
  +                                             }
  +                                             lastTime = System.currentTimeMillis();
  +
                           JMeterTreeNode newNode =
                               treeModel.addComponent(sampler, node);
  +                            
  +                        if(firstInBatch){
  +                             addAssertion(treeModel,newNode);
  +                                                     firstInBatch=false;
  +                        }
  +
                           for (int i = 0;
                               subConfigs != null && i < subConfigs.length;
                               i++)
  @@ -367,6 +441,14 @@
                   .equals(urlConfig.getPropertyAsString(HTTPSampler.PATH)))
               {
                   sampler.setPath("");
  +            }
  +            
  +            if (sampler
  +                .getProtocol()
  +                
.equalsIgnoreCase(urlConfig.getPropertyAsString(HTTPSampler.PROTOCOL))
  +                )
  +            {
  +             sampler.setProtocol("");
               }
           }
       }
  
  
  

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

Reply via email to