sebb        2003/10/16 15:06:33

  Modified:    src/protocol/http/org/apache/jmeter/protocol/http/proxy
                        Proxy.java ProxyControl.java
               src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui
                        ProxyControlGui.java
  Log:
  See bug 22721 - browser header capture can now be disabled. Stop proxy now waits 1s 
for daemon to stop, which means that restart works more reliably
  
  Revision  Changes    Path
  1.12      +16 -7     
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java
  
  Index: Proxy.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Proxy.java        5 Oct 2003 00:44:02 -0000       1.11
  +++ Proxy.java        16 Oct 2003 22:06:33 -0000      1.12
  @@ -88,7 +88,9 @@
   
       /** Target to receive the generated sampler. */
       private ProxyControl target;
  -
  +    
  +    /** Whether or not to capture the HTTP headers. */
  +    private boolean captureHttpHeaders;
   
       /**
        * Default constructor.
  @@ -122,6 +124,7 @@
       {
           this.target = target;
           this.clientSocket = clientSocket;
  +        this.captureHttpHeaders = target.getCaptureHttpHeaders();
       }
   
       /**
  @@ -131,24 +134,30 @@
       {
           HttpRequestHdr request = new HttpRequestHdr();
           byte[] serverResponse = new byte[0];
  -        HeaderManager headers = new HeaderManager();
  +        HeaderManager headers = null;
  +
           HTTPSampler sampler = new HTTPSampler();
           try
           {
               byte[] clientRequest = //TODO: var not used, but call may be needed for 
side effects?
                   request.parse(
                       new BufferedInputStream(clientSocket.getInputStream()));
  -            headers = request.getHeaderManager();
   
               sampler = request.getSampler();
  -            sampler.setHeaderManager(headers);
  +            if (captureHttpHeaders)
  +            {
  +                headers = request.getHeaderManager();
  +                sampler.setHeaderManager(headers);
  +            }
   
               serverResponse = sampler.sample().getResponseData();
               writeToClient(
                   serverResponse,
                   new BufferedOutputStream(clientSocket.getOutputStream()));
  -            headers.removeHeaderNamed("cookie");
  -
  +            if (captureHttpHeaders)
  +            {
  +             headers.removeHeaderNamed("cookie");
  +            }
              
           }
           catch (UnknownHostException uhe)
  
  
  
  1.29      +28 -4     
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.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- ProxyControl.java 15 Oct 2003 17:53:52 -0000      1.28
  +++ ProxyControl.java 16 Oct 2003 22:06:33 -0000      1.29
  @@ -76,6 +76,7 @@
   import org.apache.jmeter.protocol.http.control.RecordingController;
   import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
   import org.apache.jmeter.testelement.TestElement;
  +import org.apache.jmeter.testelement.property.BooleanProperty;
   import org.apache.jmeter.testelement.property.CollectionProperty;
   import org.apache.jmeter.testelement.property.IntegerProperty;
   import org.apache.jmeter.testelement.property.PropertyIterator;
  @@ -104,6 +105,7 @@
       public final static String PORT = "ProxyControlGui.port";
       public final static String EXCLUDE_LIST = "ProxyControlGui.exclude_list";
       public final static String INCLUDE_LIST = "ProxyControlGui.include_list";
  +    public final static String CAPTURE_HTTP_HEADERS = 
"ProxyControlGui.capture_http_headers";
   
       public ProxyControl()
       {
  @@ -111,6 +113,7 @@
           setPort(DEFAULT_PORT);
           setExcludeList(new HashSet());
           setIncludeList(new HashSet());
  +        setCaptureHttpHeaders(true); // maintain original behaviour
       }
   
       public void setPort(int port)
  @@ -122,7 +125,12 @@
       {
           setProperty(PORT,port);
       }
  -    
  +  
  +    public void setCaptureHttpHeaders(boolean capture)
  +    {
  +        setProperty(new BooleanProperty(CAPTURE_HTTP_HEADERS,capture));
  +    }
  +
       public void setIncludeList(Collection list)
       {
           setProperty(new CollectionProperty(INCLUDE_LIST, new HashSet(list)));
  @@ -147,6 +155,11 @@
           return DEFAULT_PORT;
       }
   
  +    public boolean getCaptureHttpHeaders()
  +    {
  +        return getPropertyAsBoolean(CAPTURE_HTTP_HEADERS);
  +    }
  +
       public Class getGuiClass()
       {
           return org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui.class;
  @@ -213,6 +226,13 @@
           if (server != null)
           {
               server.stopServer();
  +            try
  +            {
  +                server.join(1000); // wait for server to stop
  +            }
  +            catch (InterruptedException e)
  +            {
  +            }
           }
       }
   
  @@ -439,8 +459,12 @@
               GuiPackage.getInstance().getReplacer().reverseReplace(sampler);
               for (int i = 0; i < configs.length; i++)
               {
  -                GuiPackage.getInstance().getReplacer().reverseReplace(
  -                    configs[i]);
  +                if (configs[i] != null)
  +                {
  +                    GuiPackage.getInstance().getReplacer().reverseReplace(
  +                        configs[i]);
  +                }
  +
               }
           }
           catch (InvalidVariableException e)
  
  
  
  1.21      +31 -6     
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.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- ProxyControlGui.java      7 Sep 2003 18:58:17 -0000       1.20
  +++ ProxyControlGui.java      16 Oct 2003 22:06:33 -0000      1.21
  @@ -70,6 +70,7 @@
   import javax.swing.BorderFactory;
   import javax.swing.Box;
   import javax.swing.JButton;
  +import javax.swing.JCheckBox;
   import javax.swing.JLabel;
   import javax.swing.JOptionPane;
   import javax.swing.JPanel;
  @@ -116,6 +117,13 @@
       private static transient Logger log = LoggingManager.getLoggerForClass();
       private JTextField portField;
   
  +   /**
  +    * Used to indicate that HTTP request headers should be captured.
  +    * The default is to <b>not</b> capture the HTTP request headers,
  +    * which are specific to particular browser settings.
  +    */
  +   private JCheckBox httpHeaders;
  +
       private ProxyControl model;
   
       private JTable excludeTable;
  @@ -174,10 +182,11 @@
           configureTestElement(el);
           if(el instanceof ProxyControl)
           {
  -            ((ProxyControl)el).setPort(portField.getText());
  -            setIncludeListInProxyControl((ProxyControl)el);
  -            setExcludeListInProxyControl((ProxyControl)el);
  -            model = (ProxyControl)el;
  +                     model = (ProxyControl)el;
  +            model.setPort(portField.getText());
  +            setIncludeListInProxyControl(model);
  +            setExcludeListInProxyControl(model);
  +            model.setCaptureHttpHeaders(httpHeaders.isSelected());
           }
       }
   
  @@ -220,6 +229,7 @@
           super.configure(element);
           model = (ProxyControl)element;
           portField.setText(model.getPropertyAsString(ProxyControl.PORT));
  +             
httpHeaders.setSelected(model.getPropertyAsBoolean(ProxyControl.CAPTURE_HTTP_HEADERS));
           populateTable(includeModel, model.getIncludePatterns().iterator());
           populateTable(excludeModel, model.getExcludePatterns().iterator());
           repaint();
  @@ -274,6 +284,10 @@
               model = (ProxyControl) createTestElement();
               startProxy();
           }
  +        else if (command.equals(ProxyControl.CAPTURE_HTTP_HEADERS))
  +        {
  +            enableRestart();
  +        }
           else if (command.equals(ADD_EXCLUDE))
           {
               excludeModel.addNewRow();
  @@ -381,6 +395,7 @@
                   }
               }
           }
  +        enableRestart();
       }
   
       private void init()
  @@ -436,9 +451,19 @@
           JLabel label = new JLabel(JMeterUtils.getResString("port"));
           label.setLabelFor(portField);
   
  +        httpHeaders = new JCheckBox(JMeterUtils.getResString("proxy_headers"));
  +        httpHeaders.setName(ProxyControl.CAPTURE_HTTP_HEADERS);
  +        httpHeaders.setSelected(true); //maintain original default
  +        httpHeaders.addActionListener(this);
  +        httpHeaders.setActionCommand(ProxyControl.CAPTURE_HTTP_HEADERS);
  +
           HorizontalPanel panel = new HorizontalPanel();
           panel.add(label);
           panel.add(portField);
  +
  +        panel.add(Box.createHorizontalStrut(10));
  +        panel.add(httpHeaders);
  +
           return panel;
       }
   
  
  
  

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

Reply via email to