sebb 2004/02/17 09:28:47
Modified: src/components/org/apache/jmeter/extractor
RegexExtractor.java
Log:
Remove old Regex variables when fewer matches found later in thread
Revision Changes Path
1.14 +38 -6
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.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- RegexExtractor.java 17 Feb 2004 02:25:14 -0000 1.13
+++ RegexExtractor.java 17 Feb 2004 17:28:47 -0000 1.14
@@ -133,6 +133,20 @@
}
else // < 0 means we save all the matches
{
+ int prevCount = 0;
+ String
prevString=(String)vars.get(refName+"_matchNr");
+ if (prevString != null)
+ {
+ try
+ {
+ prevCount = Integer.parseInt(prevString);
+ }
+ catch (NumberFormatException e1)
+ {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ }
vars.put(refName+"_matchNr",
""+matches.size());// Save the count
for (int i=1;i<=matches.size();i++) {
match = getCorrectMatch(matches, i);
@@ -142,6 +156,13 @@
saveGroups(vars,
refName+"_"+i, match);
}
}
+ for (int i = matches.size()+1;i<=prevCount;i++)
+ {
+ vars.remove(refName+"_"+i);
+ vars.remove(refName+"_"+i+"_g0");//
Remove known groups ...
+ vars.remove(refName+"_"+i+"_g1");// ...
+ //TODO remove other groups if present?
+ }
}
}
catch (RuntimeException e)
@@ -416,16 +437,27 @@
{
extractor.setRegex(
"<value field=\"(pinposition\\d+)\">(\\d+)</value>");
- extractor.setTemplate("_$1$");
+ extractor.setTemplate("$1$");
extractor.setMatchNumber(-1);
extractor.process();
assertEquals("3",vars.get("regVal_matchNr"));
- assertEquals("_pinposition1", vars.get("regVal_1"));
- assertEquals("_pinposition2", vars.get("regVal_2"));
- assertEquals("_pinposition3", vars.get("regVal_3"));
+ assertEquals("pinposition1", vars.get("regVal_1"));
+ assertEquals("pinposition2", vars.get("regVal_2"));
+ assertEquals("pinposition3", vars.get("regVal_3"));
assertEquals("pinposition1", vars.get("regVal_1_g1"));
assertEquals("1", vars.get("regVal_1_g2"));
assertEquals("<value field=\"pinposition1\">1</value>",
vars.get("regVal_1_g0"));
+ assertNull(vars.get("regVal_4"));
+
+ // Check old values don't hang around:
+ extractor.setRegex("(\\w+)count"); // fewer matches
+ extractor.process();
+ assertEquals("2",vars.get("regVal_matchNr"));
+ assertEquals("position", vars.get("regVal_1"));
+ assertEquals("invalidpin", vars.get("regVal_2"));
+ assertNull("Unused variables should be
null",vars.get("regVal_3"));
+ assertNull("Unused variables should be
null",vars.get("regVal_3_g0"));
+ assertNull("Unused variables should be
null",vars.get("regVal_3_g1"));
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]