sebb 2004/09/22 15:07:17
Modified: src/functions/org/apache/jmeter/functions Tag: rel-2_0
PackageTest.java
xdocs/usermanual Tag: rel-2_0 functions.xml
Added: src/functions/org/apache/jmeter/functions Tag: rel-2_0
SplitFunction.java
Log:
Added __split() function to parse delimited strings
Revision Changes Path
No revision
No revision
1.10.2.3 +81 -2
jakarta-jmeter/src/functions/org/apache/jmeter/functions/PackageTest.java
Index: PackageTest.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/functions/org/apache/jmeter/functions/PackageTest.java,v
retrieving revision 1.10.2.2
retrieving revision 1.10.2.3
diff -u -r1.10.2.2 -r1.10.2.3
--- PackageTest.java 18 Sep 2004 15:50:51 -0000 1.10.2.2
+++ PackageTest.java 22 Sep 2004 22:07:17 -0000 1.10.2.3
@@ -35,6 +35,9 @@
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.junit.JMeterTestCase;
+import org.apache.jmeter.threads.JMeterContext;
+import org.apache.jmeter.threads.JMeterContextService;
+import org.apache.jmeter.threads.JMeterVariables;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JMeterStopThreadException;
import org.apache.log.Logger;
@@ -83,6 +86,19 @@
return sff;
}
+ // Create the StringFromFile function and set its parameters.
+ private static SplitFunction SplitParams(String p1, String p2, String p3)
+ throws Exception
+ {
+ SplitFunction split = new SplitFunction();
+ Collection parms = new LinkedList();
+ parms.add(new CompoundVariable(p1));
+ if (p2 != null) parms.add(new CompoundVariable(p2));
+ if (p3 != null) parms.add(new CompoundVariable(p3));
+ split.setParameters(parms);
+ return split;
+ }
+
public static Test suite() throws Exception
{
TestSuite allsuites = new TestSuite();
@@ -112,7 +128,70 @@
sff.addTest(new PackageTest("SFFTest5"));
allsuites.addTest(sff);
+ TestSuite split = new TestSuite("SplitFunction");
+ split.addTest(new PackageTest("SplitTest1"));
+ allsuites.addTest(split);
+
return allsuites;
+ }
+
+ private JMeterContext jmctx = null;
+ private JMeterVariables vars = null;
+ public void setUp()
+ {
+ jmctx = JMeterContextService.getContext();
+ jmctx.setVariables(new JMeterVariables());
+ vars = jmctx.getVariables();
+ }
+
+ public void SplitTest1() throws Exception
+ {
+ SplitFunction split=null;
+ try
+ {
+ split = SplitParams("a,b,c",null,null);
+ fail("Expected InvalidVariableException (wrong number of
parameters)");
+ }
+ catch (InvalidVariableException e)
+ {
+ //OK
+ }
+ split = SplitParams("a,b,c","VAR1",null);
+ split.execute();
+ assertEquals("a,b,c",vars.get("VAR1"));
+ assertEquals("3",vars.get("VAR1_n"));
+ assertEquals("a",vars.get("VAR1_1"));
+ assertEquals("b",vars.get("VAR1_2"));
+ assertEquals("c",vars.get("VAR1_3"));
+ assertNull(vars.get("VAR1_4"));
+
+ split = SplitParams("a,b,c","VAR2",",");
+ split.execute();
+ assertEquals("a,b,c",vars.get("VAR2"));
+ assertEquals("3",vars.get("VAR2_n"));
+ assertEquals("a",vars.get("VAR2_1"));
+ assertEquals("b",vars.get("VAR2_2"));
+ assertEquals("c",vars.get("VAR2_3"));
+ assertNull(vars.get("VAR2_4"));
+
+ split = SplitParams("a|b|c","VAR3","|");
+ split.execute();
+ assertEquals("a|b|c",vars.get("VAR3"));
+ assertEquals("3",vars.get("VAR3_n"));
+ assertEquals("a",vars.get("VAR3_1"));
+ assertEquals("b",vars.get("VAR3_2"));
+ assertEquals("c",vars.get("VAR3_3"));
+ assertNull(vars.get("VAR3_4"));
+
+ split = SplitParams("a|b||","VAR4","|");
+ split.execute();
+ assertEquals("a|b||",vars.get("VAR4"));
+ assertEquals("3",vars.get("VAR4_n"));
+ assertEquals("a",vars.get("VAR4_1"));
+ assertEquals("b",vars.get("VAR4_2"));
+ assertEquals("?",vars.get("VAR4_3"));
+ assertNull(vars.get("VAR4_5"));
+
}
public void SFFTest1() throws Exception
No revision
Index: PackageTest.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/functions/org/apache/jmeter/functions/PackageTest.java,v
retrieving revision 1.10.2.2
retrieving revision 1.10.2.3
diff -u -r1.10.2.2 -r1.10.2.3
--- PackageTest.java 18 Sep 2004 15:50:51 -0000 1.10.2.2
+++ PackageTest.java 22 Sep 2004 22:07:17 -0000 1.10.2.3
@@ -35,6 +35,9 @@
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.junit.JMeterTestCase;
+import org.apache.jmeter.threads.JMeterContext;
+import org.apache.jmeter.threads.JMeterContextService;
+import org.apache.jmeter.threads.JMeterVariables;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JMeterStopThreadException;
import org.apache.log.Logger;
@@ -83,6 +86,19 @@
return sff;
}
+ // Create the StringFromFile function and set its parameters.
+ private static SplitFunction SplitParams(String p1, String p2, String p3)
+ throws Exception
+ {
+ SplitFunction split = new SplitFunction();
+ Collection parms = new LinkedList();
+ parms.add(new CompoundVariable(p1));
+ if (p2 != null) parms.add(new CompoundVariable(p2));
+ if (p3 != null) parms.add(new CompoundVariable(p3));
+ split.setParameters(parms);
+ return split;
+ }
+
public static Test suite() throws Exception
{
TestSuite allsuites = new TestSuite();
@@ -112,7 +128,70 @@
sff.addTest(new PackageTest("SFFTest5"));
allsuites.addTest(sff);
+ TestSuite split = new TestSuite("SplitFunction");
+ split.addTest(new PackageTest("SplitTest1"));
+ allsuites.addTest(split);
+
return allsuites;
+ }
+
+ private JMeterContext jmctx = null;
+ private JMeterVariables vars = null;
+ public void setUp()
+ {
+ jmctx = JMeterContextService.getContext();
+ jmctx.setVariables(new JMeterVariables());
+ vars = jmctx.getVariables();
+ }
+
+ public void SplitTest1() throws Exception
+ {
+ SplitFunction split=null;
+ try
+ {
+ split = SplitParams("a,b,c",null,null);
+ fail("Expected InvalidVariableException (wrong number of
parameters)");
+ }
+ catch (InvalidVariableException e)
+ {
+ //OK
+ }
+ split = SplitParams("a,b,c","VAR1",null);
+ split.execute();
+ assertEquals("a,b,c",vars.get("VAR1"));
+ assertEquals("3",vars.get("VAR1_n"));
+ assertEquals("a",vars.get("VAR1_1"));
+ assertEquals("b",vars.get("VAR1_2"));
+ assertEquals("c",vars.get("VAR1_3"));
+ assertNull(vars.get("VAR1_4"));
+
+ split = SplitParams("a,b,c","VAR2",",");
+ split.execute();
+ assertEquals("a,b,c",vars.get("VAR2"));
+ assertEquals("3",vars.get("VAR2_n"));
+ assertEquals("a",vars.get("VAR2_1"));
+ assertEquals("b",vars.get("VAR2_2"));
+ assertEquals("c",vars.get("VAR2_3"));
+ assertNull(vars.get("VAR2_4"));
+
+ split = SplitParams("a|b|c","VAR3","|");
+ split.execute();
+ assertEquals("a|b|c",vars.get("VAR3"));
+ assertEquals("3",vars.get("VAR3_n"));
+ assertEquals("a",vars.get("VAR3_1"));
+ assertEquals("b",vars.get("VAR3_2"));
+ assertEquals("c",vars.get("VAR3_3"));
+ assertNull(vars.get("VAR3_4"));
+
+ split = SplitParams("a|b||","VAR4","|");
+ split.execute();
+ assertEquals("a|b||",vars.get("VAR4"));
+ assertEquals("3",vars.get("VAR4_n"));
+ assertEquals("a",vars.get("VAR4_1"));
+ assertEquals("b",vars.get("VAR4_2"));
+ assertEquals("?",vars.get("VAR4_3"));
+ assertNull(vars.get("VAR4_5"));
+
}
public void SFFTest1() throws Exception
No revision
Index: PackageTest.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/functions/org/apache/jmeter/functions/PackageTest.java,v
retrieving revision 1.10.2.2
retrieving revision 1.10.2.3
diff -u -r1.10.2.2 -r1.10.2.3
--- PackageTest.java 18 Sep 2004 15:50:51 -0000 1.10.2.2
+++ PackageTest.java 22 Sep 2004 22:07:17 -0000 1.10.2.3
@@ -35,6 +35,9 @@
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.junit.JMeterTestCase;
+import org.apache.jmeter.threads.JMeterContext;
+import org.apache.jmeter.threads.JMeterContextService;
+import org.apache.jmeter.threads.JMeterVariables;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JMeterStopThreadException;
import org.apache.log.Logger;
@@ -83,6 +86,19 @@
return sff;
}
+ // Create the StringFromFile function and set its parameters.
+ private static SplitFunction SplitParams(String p1, String p2, String p3)
+ throws Exception
+ {
+ SplitFunction split = new SplitFunction();
+ Collection parms = new LinkedList();
+ parms.add(new CompoundVariable(p1));
+ if (p2 != null) parms.add(new CompoundVariable(p2));
+ if (p3 != null) parms.add(new CompoundVariable(p3));
+ split.setParameters(parms);
+ return split;
+ }
+
public static Test suite() throws Exception
{
TestSuite allsuites = new TestSuite();
@@ -112,7 +128,70 @@
sff.addTest(new PackageTest("SFFTest5"));
allsuites.addTest(sff);
+ TestSuite split = new TestSuite("SplitFunction");
+ split.addTest(new PackageTest("SplitTest1"));
+ allsuites.addTest(split);
+
return allsuites;
+ }
+
+ private JMeterContext jmctx = null;
+ private JMeterVariables vars = null;
+ public void setUp()
+ {
+ jmctx = JMeterContextService.getContext();
+ jmctx.setVariables(new JMeterVariables());
+ vars = jmctx.getVariables();
+ }
+
+ public void SplitTest1() throws Exception
+ {
+ SplitFunction split=null;
+ try
+ {
+ split = SplitParams("a,b,c",null,null);
+ fail("Expected InvalidVariableException (wrong number of
parameters)");
+ }
+ catch (InvalidVariableException e)
+ {
+ //OK
+ }
+ split = SplitParams("a,b,c","VAR1",null);
+ split.execute();
+ assertEquals("a,b,c",vars.get("VAR1"));
+ assertEquals("3",vars.get("VAR1_n"));
+ assertEquals("a",vars.get("VAR1_1"));
+ assertEquals("b",vars.get("VAR1_2"));
+ assertEquals("c",vars.get("VAR1_3"));
+ assertNull(vars.get("VAR1_4"));
+
+ split = SplitParams("a,b,c","VAR2",",");
+ split.execute();
+ assertEquals("a,b,c",vars.get("VAR2"));
+ assertEquals("3",vars.get("VAR2_n"));
+ assertEquals("a",vars.get("VAR2_1"));
+ assertEquals("b",vars.get("VAR2_2"));
+ assertEquals("c",vars.get("VAR2_3"));
+ assertNull(vars.get("VAR2_4"));
+
+ split = SplitParams("a|b|c","VAR3","|");
+ split.execute();
+ assertEquals("a|b|c",vars.get("VAR3"));
+ assertEquals("3",vars.get("VAR3_n"));
+ assertEquals("a",vars.get("VAR3_1"));
+ assertEquals("b",vars.get("VAR3_2"));
+ assertEquals("c",vars.get("VAR3_3"));
+ assertNull(vars.get("VAR3_4"));
+
+ split = SplitParams("a|b||","VAR4","|");
+ split.execute();
+ assertEquals("a|b||",vars.get("VAR4"));
+ assertEquals("3",vars.get("VAR4_n"));
+ assertEquals("a",vars.get("VAR4_1"));
+ assertEquals("b",vars.get("VAR4_2"));
+ assertEquals("?",vars.get("VAR4_3"));
+ assertNull(vars.get("VAR4_5"));
+
}
public void SFFTest1() throws Exception
1.1.2.1 +127 -0
jakarta-jmeter/src/functions/org/apache/jmeter/functions/Attic/SplitFunction.java
No revision
No revision
1.14.2.7 +26 -3 jakarta-jmeter/xdocs/usermanual/functions.xml
Index: functions.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/functions.xml,v
retrieving revision 1.14.2.6
retrieving revision 1.14.2.7
diff -u -r1.14.2.6 -r1.14.2.7
--- functions.xml 18 Sep 2004 15:50:29 -0000 1.14.2.6
+++ functions.xml 22 Sep 2004 22:07:17 -0000 1.14.2.7
@@ -101,8 +101,10 @@
<li>${refName_g0} to refer to the entire match parsed by this function.</li>
<li>${refName_g1} to refer to the first group parsed by this function.</li>
<li>${refName_g#} to refer to the n<sup>th</sup> group parsed by this function.</li>
+<li>${refName_matchNr} to refer to the number of groups found by this function.</li>
</ul>
-</p></description>
+</p>
+</description>
<properties>
<property name="First argument" required="Yes">The first argument is the
regular expression
@@ -423,6 +425,27 @@
<property name="BeanShell script" required="Yes">A beanshell script (not a
file name)</property>
<property name="Name of variable" required="No">A reference name for
reusing the value
computed by this function.</property>
+
+</properties>
+</component>
+
+<component index="16.5.14" name="__split">
+<description>
+ <p>
+ The split function splits the string passed to it according to the delimiter,
+ and returns the original string. If any delimiters are adjacent, "?" is
returned as the value.
+ The split strings are returned in the variables ${VAR_1}, ${VAR_2} etc.
+ The count of variables is returned in ${VAR_n}.
+ </p>
+</description>
+
+<properties>
+ <property name="String to split" required="Yes">A delimited string, e.g.
"a|b|c"</property>
+ <property name="Name of variable" required="Yes">A reference name for
reusing the value
+ computed by this function.</property>
+ <property name="Delimiter" required="No">The delimiter character, e.g. "|".
+If omitted, "," is used. Note that "," would need to be specified as "\,".
+</property>
</properties>
</component>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]