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]