sebb 2004/12/04 16:34:14
Modified: src/components/org/apache/jmeter/extractor Tag: rel-2_0
RegexExtractor.java
Log:
Bug 32395 - nested constant ($1$CONST$2$) not handled correctly - fixed and
added test cases
Revision Changes Path
No revision
No revision
1.15.2.2 +59 -4
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.2.1
retrieving revision 1.15.2.2
diff -u -r1.15.2.1 -r1.15.2.2
--- RegexExtractor.java 19 May 2004 23:17:01 -0000 1.15.2.1
+++ RegexExtractor.java 5 Dec 2004 00:34:14 -0000 1.15.2.2
@@ -137,7 +137,7 @@
else // < 0 means we save all the matches
{
int prevCount = 0;
- String
prevString=(String)vars.get(refName+"_matchNr");
+ String
prevString=vars.get(refName+"_matchNr");
if (prevString != null)
{
try
@@ -238,13 +238,16 @@
log.debug("template = " + rawTemplate);
Util.split(pieces, matcher, templatePattern, rawTemplate);
PatternMatcherInput input = new PatternMatcherInput(rawTemplate);
- Iterator iter = pieces.iterator();
boolean startsWith = isFirstElementGroup(rawTemplate);
log.debug(
"template split into "
+ pieces.size()
+ " pieces, starts with = "
+ startsWith);
+ if (startsWith){
+ pieces.remove(0);// Remove initial empty entry
+ }
+ Iterator iter = pieces.iterator();
while (iter.hasNext())
{
boolean matchExists = matcher.contains(input, templatePattern);
@@ -414,6 +417,58 @@
assertEquals("pinposition2", vars.get("regVal_g1"));
assertEquals("5", vars.get("regVal_g2"));
assertEquals("<value field=\"pinposition2\">5</value>",
vars.get("regVal_g0"));
+ }
+
+ static void templateSetup(RegexExtractor rex,String tmp){
+ rex.setRegex("<company-(\\w+?)-(\\w+?)-(\\w+?)>");
+ rex.setMatchNumber(1);
+ rex.setTemplate(tmp);
+ rex.process();
+ }
+ public void testTemplate1() throws Exception
+ {
+ templateSetup(extractor,"");
+ assertEquals("<company-xmlext-query-ret>",
vars.get("regVal_g0"));
+ assertEquals("xmlext", vars.get("regVal_g1"));
+ assertEquals("query", vars.get("regVal_g2"));
+ assertEquals("ret", vars.get("regVal_g3"));
+ assertEquals("", vars.get("regVal"));
+ }
+
+ public void testTemplate2() throws Exception
+ {
+ templateSetup(extractor,"ABC");
+ assertEquals("ABC", vars.get("regVal"));
+ }
+
+ public void testTemplate3() throws Exception
+ {
+ templateSetup(extractor,"$2$");
+ assertEquals("query", vars.get("regVal"));
+ }
+
+ public void testTemplate4() throws Exception
+ {
+ templateSetup(extractor,"PRE$2$");
+ assertEquals("PREquery", vars.get("regVal"));
+ }
+
+ public void testTemplate5() throws Exception
+ {
+ templateSetup(extractor,"$2$POST");
+ assertEquals("queryPOST", vars.get("regVal"));
+ }
+
+ public void testTemplate6() throws Exception
+ {
+ templateSetup(extractor,"$2$$1$");
+ assertEquals("queryxmlext", vars.get("regVal"));
+ }
+
+ public void testTemplate7() throws Exception
+ {
+ templateSetup(extractor,"$2$MID$1$");
+ assertEquals("queryMIDxmlext", vars.get("regVal"));
}
public void testVariableExtraction2() throws Exception
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]