sebb        2004/05/19 16:17:01

  Modified:    src/core/org/apache/jmeter/resources Tag: rel-2_0
                        messages.properties
               src/components/org/apache/jmeter/extractor/gui Tag: rel-2_0
                        RegexExtractorGui.java
               src/components/org/apache/jmeter/extractor Tag: rel-2_0
                        RegexExtractor.java
  Log:
  Added code for Bug 29075  Regex Extractor needs to be able to extract data out of 
http response header and not just the body
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.106.2.2 +3 -0      
jakarta-jmeter/src/core/org/apache/jmeter/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/messages.properties,v
  retrieving revision 1.106.2.1
  retrieving revision 1.106.2.2
  diff -u -r1.106.2.1 -r1.106.2.2
  --- messages.properties       2 Apr 2004 22:40:39 -0000       1.106.2.1
  +++ messages.properties       19 May 2004 23:17:01 -0000      1.106.2.2
  @@ -344,6 +344,9 @@
   ref_name_field=Reference Name\:
   regex_extractor_title=Regular Expression Extractor
   regex_field=Regular Expression\:
  +regex_source=Response Field to check
  +regex_src_body=Body
  +regex_src_hdrs=Headers
   regexfunc_param_1=Regular expression used to search results from previous request
   regexfunc_param_2=Template for the replacement string, using groups from the 
regular expression.  Format is $[group]$.  Example $1$.
   regexfunc_param_3=Which match to use.  An integer 1 or greater, RAND to indicate 
JMeter should randomly choose, A float, or ALL indicating all matches should be used
  
  
  
  No                   revision
  No                   revision
  1.10.2.1  +43 -3     
jakarta-jmeter/src/components/org/apache/jmeter/extractor/gui/RegexExtractorGui.java
  
  Index: RegexExtractorGui.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/extractor/gui/RegexExtractorGui.java,v
  retrieving revision 1.10
  retrieving revision 1.10.2.1
  diff -u -r1.10 -r1.10.2.1
  --- RegexExtractorGui.java    5 Mar 2004 01:32:51 -0000       1.10
  +++ RegexExtractorGui.java    19 May 2004 23:17:01 -0000      1.10.2.1
  @@ -24,13 +24,19 @@
   import java.awt.GridBagLayout;
   import java.util.List;
   
  +import javax.swing.BorderFactory;
  +import javax.swing.Box;
  +import javax.swing.ButtonGroup;
  +import javax.swing.JCheckBox;
   import javax.swing.JPanel;
  +import javax.swing.JRadioButton;
   
   import org.apache.jmeter.extractor.RegexExtractor;
   import org.apache.jmeter.processor.gui.AbstractPostProcessorGui;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jorphan.gui.JLabeledTextField;
  +import org.apache.jorphan.util.JOrphanUtils;
   
   /**
    * @version $Revision$ on $Date$
  @@ -43,6 +49,10 @@
       private JLabeledTextField matchNumberField;
       private JLabeledTextField refNameField;
       
  +    private JCheckBox scanHeader;
  +     private JRadioButton useBody;
  +     private JRadioButton useHeaders;
  +    
       public RegexExtractorGui()
       {
           super();
  @@ -57,6 +67,7 @@
       public void configure(TestElement el)
       {
           super.configure(el);
  +        useBody.setSelected(el.getPropertyAsBoolean(RegexExtractor.USEHEADERS));
           regexField.setText(el.getPropertyAsString(RegexExtractor.REGEX));
           templateField.setText(el.getPropertyAsString(RegexExtractor.TEMPLATE));
           defaultField.setText(el.getPropertyAsString(RegexExtractor.DEFAULT));
  @@ -83,6 +94,9 @@
       {
           super.configureTestElement(extractor);
           extractor.setProperty(
  +                RegexExtractor.USEHEADERS,
  +                JOrphanUtils.booleanToSTRING(useHeaders.isSelected()));
  +        extractor.setProperty(
               RegexExtractor.MATCH_NUMBER,
               matchNumberField.getText());
           if(extractor instanceof RegexExtractor)
  @@ -100,10 +114,36 @@
           setLayout(new BorderLayout());
           setBorder(makeBorder());
           
  -        add(makeTitlePanel(),BorderLayout.NORTH);
  +        Box box = Box.createVerticalBox();
  +        box.add(makeTitlePanel());
  +        box.add(makeSourcePanel());
  +        add(box,BorderLayout.NORTH);
           add(makeParameterPanel(),BorderLayout.CENTER);
       }
       
  +    private JPanel makeSourcePanel()
  +    {
  +        JPanel panel = new JPanel();
  +        panel.setBorder(
  +            BorderFactory.createTitledBorder(
  +                JMeterUtils.getResString("regex_source")));
  +
  +        useBody =
  +            new JRadioButton(JMeterUtils.getResString("regex_src_body"));
  +        useHeaders =
  +            new JRadioButton(JMeterUtils.getResString("regex_src_hdrs"));
  +             
  +        ButtonGroup group = new ButtonGroup();
  +        group.add(useBody);
  +        group.add(useHeaders);
  +             
  +        panel.add(useBody);
  +        panel.add(useHeaders);
  +             
  +        useBody.setSelected(true);
  +        return panel;
  +    }
  +
       private JPanel makeParameterPanel()
       {
           regexField =
  
  
  
  No                   revision
  No                   revision
  1.15.2.1  +24 -3     
jakarta-jmeter/src/components/org/apache/jmeter/extractor/RegexExtractor.java
  
  Index: RegexExtractor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/extractor/RegexExtractor.java,v
  retrieving revision 1.15
  retrieving revision 1.15.2.1
  diff -u -r1.15 -r1.15.2.1
  --- RegexExtractor.java       22 Feb 2004 19:16:59 -0000      1.15
  +++ RegexExtractor.java       19 May 2004 23:17:01 -0000      1.15.2.1
  @@ -54,6 +54,7 @@
       implements PostProcessor, Serializable
   {
       transient private static Logger log = LoggingManager.getLoggerForClass();
  +    public static final String USEHEADERS = "RegexExtractor.useHeaders";
       public static final String REGEX = "RegexExtractor.regex";
       public static final String REFNAME = "RegexExtractor.refname";
       public static final String MATCH_NUMBER = "RegexExtractor.match_number";
  @@ -97,7 +98,9 @@
           Perl5Matcher matcher = (Perl5Matcher) localMatcher.get();
           PatternMatcherInput input =
               new PatternMatcherInput(
  -                new String(context.getPreviousResult().getResponseData()));
  +                     useHeaders() ? context.getPreviousResult().getResponseHeaders()
  +                                 : new 
String(context.getPreviousResult().getResponseData())
  +                             );
           log.debug("Regex = " + getRegex());
                try {
                        Pattern pattern =
  @@ -366,6 +369,11 @@
           return getPropertyAsString(TEMPLATE);
       }
   
  +    private boolean useHeaders()
  +    {
  +     return "true".equalsIgnoreCase(getPropertyAsString(USEHEADERS));
  +    }
  +    
       public static class Test extends TestCase
       {
           RegexExtractor extractor;
  @@ -389,6 +397,7 @@
               String data =
                   "<company-xmlext-query-ret>" +
                  "<row>" +
                    "<value field=\"RetCode\">LIS_OK</value>" +
                    "<value field=\"RetCodeExtension\"></value>" +
                    "<value field=\"alias\"></value>" +
                    "<value field=\"positioncount\"></value>" +
                    "<value field=\"invalidpincount\">0</value>" +
                    "<value field=\"pinposition1\">1</value>" +
                    "<value field=\"pinpositionvalue1\"></value>" +
                    "<value field=\"pinposition2\">5</value>" +
                    "<value field=\"pinpositionvalue2\"></value>" +
                    "<value field=\"pinposition3\">6</value>" +
                    "<value field=\"pinpositionvalue3\"></value>" +
                  "</row>" +
                "</company-xmlext-query-ret>";
               result.setResponseData(data.getBytes());
  +            result.setResponseHeaders("Header1: Value1\nHeader2: Value2");
               vars = new JMeterVariables();
               jmctx.setVariables(vars);
               jmctx.setPreviousResult(result);
  @@ -463,5 +472,17 @@
                        assertNull("Unused variables should be 
null",vars.get("regVal_3_g0"));
                        assertNull("Unused variables should be 
null",vars.get("regVal_3_g1"));
                }
  +        public void testVariableExtraction7() throws Exception
  +        {
  +            extractor.setRegex(
  +                "Header1: (\\S+)");
  +            extractor.setTemplate("$1$");
  +            extractor.setMatchNumber(1);
  +            assertFalse("useHdrs should be false",extractor.useHeaders());
  +            extractor.setProperty(USEHEADERS,"true");
  +            assertTrue("useHdrs should be true",extractor.useHeaders());
  +            extractor.process();
  +            assertEquals("Value1", vars.get("regVal"));
  +        }
       }
   }
  
  
  

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

Reply via email to