mstover1 2002/08/04 06:05:36
Modified: src_1/org/apache/jmeter/config Argument.java Arguments.java
src_1/org/apache/jmeter/protocol/http/config UrlConfig.java
src_1/org/apache/jmeter/resources messages.properties
Log:
Fix to handle URL's of the form: http://domain.com/path?param
(Mark Walsh)
Revision Changes Path
1.4 +38 -1 jakarta-jmeter/src_1/org/apache/jmeter/config/Argument.java
Index: Argument.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/config/Argument.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Argument.java 19 Jul 2002 21:35:36 -0000 1.3
+++ Argument.java 4 Aug 2002 13:05:36 -0000 1.4
@@ -57,6 +57,9 @@
import org.apache.jmeter.testelement.AbstractTestElement;
import org.apache.jmeter.testelement.TestElement;
+//Mark Walsh, 2002-08-03, add metadata attribute
+// add constructor Argument(String name, Object value, Object metadata)
+// add MetaData get and set methods
/****************************************
* Title: Apache JMeter Description: Copyright: Copyright (c) 2000 Company:
* Apache Foundation
@@ -70,7 +73,21 @@
{
private final static String NAME = "Argument.name";
private final static String VALUE = "Argument.value";
-
+ private final static String METADATA = "Argument.metadata";
+
+ /****************************************
+ * Constructor for the Argument object
+ *
+ *@param name Description of Parameter
+ *@param value Description of Parameter
+ *@param metadata Description of Parameter
+ ***************************************/
+ public Argument(String name, Object value, Object metadata)
+ {
+ setProperty(NAME, name);
+ setProperty(VALUE, value);
+ setProperty(METADATA, metadata);
+ }
/****************************************
* Constructor for the Argument object
@@ -117,6 +134,16 @@
}
/****************************************
+ * Sets the Meta Data attribute of the Argument object
+ *
+ *@param newMetaData The new Metadata value
+ ***************************************/
+ public void setMetaData(Object newMetaData)
+ {
+ setProperty(METADATA, newMetaData);
+ }
+
+ /****************************************
* Gets the Name attribute of the Argument object
*
*@return The Name value
@@ -134,5 +161,15 @@
public Object getValue()
{
return (String)getProperty(VALUE);
+ }
+
+ /****************************************
+ * Gets the Meta Data attribute of the Argument object
+ *
+ *@return The MetaData value
+ ***************************************/
+ public Object getMetaData()
+ {
+ return (String)getProperty(METADATA);
}
}
1.5 +24 -5 jakarta-jmeter/src_1/org/apache/jmeter/config/Arguments.java
Index: Arguments.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/config/Arguments.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Arguments.java 16 Jul 2002 17:58:02 -0000 1.4
+++ Arguments.java 4 Aug 2002 13:05:36 -0000 1.5
@@ -63,6 +63,8 @@
import org.apache.jmeter.testelement.AbstractTestElement;
import org.apache.jmeter.util.JMeterUtils;
+// Mark Walsh, 2002-08-03 add method addArgument(String name, Object value, Object
metadata)
+// modify methods toString(), addEmptyArgument(), addArgument(String name, Object
value)
/****************************************
* Title: Apache JMeter Description: Copyright: Copyright (c) 2000 Company:
* Apache Foundation
@@ -79,7 +81,8 @@
***************************************/
public static String[] COLUMN_NAMES = {
JMeterUtils.getResString("name"),
- JMeterUtils.getResString("value")
+ JMeterUtils.getResString("value"),
+ JMeterUtils.getResString("metadata")
};
private final static String ARGUMENTS = "Arguments.arguments";
@@ -118,7 +121,19 @@
***************************************/
public void addArgument(String name, Object value)
{
- getArguments().add(new Argument(name, value));
+ getArguments().add(new Argument(name, value, null));
+ }
+
+ /****************************************
+ * !ToDo
+ *
+ *@param name !ToDo
+ *@param value !ToDo
+ *@param metadata Hold addition information
+ ***************************************/
+ public void addArgument(String name, Object value, Object metadata)
+ {
+ getArguments().add(new Argument(name, value, metadata));
}
/****************************************
@@ -143,7 +158,11 @@
while(iter.hasNext())
{
Argument arg = (Argument)iter.next();
- str.append(arg.getName() + "=" + arg.getValue());
+ if (arg.getMetaData() == null) {
+ str.append(arg.getName() + "=" + arg.getValue());
+ } else {
+ str.append(arg.getName() + arg.getMetaData() +
arg.getValue());
+ }
if(iter.hasNext())
{
str.append("&");
@@ -204,7 +223,7 @@
***************************************/
public void addEmptyArgument()
{
- getArguments().add(new Argument("", ""));
+ getArguments().add(new Argument("", "",""));
}
/****************************************
1.12 +138 -14
jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/UrlConfig.java
Index: UrlConfig.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/config/UrlConfig.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- UrlConfig.java 31 Jul 2002 03:56:58 -0000 1.11
+++ UrlConfig.java 4 Aug 2002 13:05:36 -0000 1.12
@@ -63,6 +63,11 @@
import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
import java.io.*;
+//Mark Walsh 2002-08-03 add method addArgument(String name,String value,String
metadata)
+//modify methods getQueryString(), parseArguments(String queryString)
+//
+//add tests to exercise methods parseArguments(String queryString),
+// and addArgument(String name,String value,String metadata)
/**
* Title: Apache JMeter Description: Copyright: Copyright (c) 2000 Company:
* Apache Foundation
@@ -163,6 +168,12 @@
args.addArgument(name,value);
}
+ public void addArgument(String name,String value,String metadata)
+ {
+ Arguments args = this.getArguments();
+ args.addArgument(name,value,metadata);
+ }
+
/**
* Sets the Domain attribute of the UrlConfig object
*
@@ -307,6 +318,8 @@
return (Arguments) getProperty(HTTPSampler.ARGUMENTS);
}
+ //Mark Walsh 2002-08-03, The equal sign is no longer automatically
+ // returned after the parameter name
/**
* Gets the QueryString attribute of the UrlConfig object
*
@@ -328,7 +341,11 @@
{
first = false;
}
- buf.append(URLEncoder.encode(item.getName()) + "=" +
URLEncoder.encode((String)item.getValue()));
+ if ( item.getMetaData() == null) {
+ buf.append(URLEncoder.encode(item.getName()) + "=" +
URLEncoder.encode((String)item.getValue()));
+ } else {
+ buf.append(URLEncoder.encode(item.getName()) +
(String)item.getMetaData() + URLEncoder.encode((String)item.getValue()));
+ }
}
return buf.toString();
}
@@ -352,7 +369,8 @@
return isGood;
}
-
+ //Mark Walsh 2002-08-03, modified to also parse a parameter name value
+ //string, where string contains only the parameter name and no equal sign.
/**
* This method allows a proxy server to send over the raw text from a browser's
* output stream to be parsed and stored correctly into the UrlConfig object.
@@ -362,23 +380,49 @@
String[] args = JMeterUtils.split(queryString, "&");
for (int i = 0; i < args.length; i++)
{
- int index = args[i].indexOf("=");
- if(index > -1)
- {
- String name = args[i].substring(0,index);
- String value = "";
- if((index+1) < args[i].length())
- {
- value = args[i].substring(index + 1);
- }
+ // need to handle four cases: string contains name=value
+ // string contains name=
+ // string contains name
+ // empty string
+
+
+ // find end of parameter name
+ int endOfNameIndex=0;
+ String metaData = ""; // records the existance of an equal sign
+ if (args[i].indexOf("=") != -1) {
+ endOfNameIndex = args[i].indexOf("="); // case of name=value,
name=
+ metaData="=";
+ } else {
+ metaData="";
+ if (args[i].length() > 0) {
+ endOfNameIndex = args[i].length() ; // case name
+ } else {
+ endOfNameIndex=0; //case where name value string is empty
+ }
+ }
+
+ // parse name
+ String name=""; // for empty string
+ if (args[i].length() >0) {
+ name = args[i].substring(0,endOfNameIndex); //for non empty
string
+ }
+
+ // parse value
+ String value="";
+ if ((endOfNameIndex+1) < args[i].length()) {
+ value = args[i].substring(endOfNameIndex+1,args[i].length());
+ }
+
+ if (name.length() > 0)
+ {
// In JDK 1.2, the decode() method has a throws clause:
// "throws Exception". In JDK 1.3, the method does not
have
// a throws clause. So, in order to be JDK 1.2
compliant,
// we need to add a try/catch around the method call.
try
{
- addArgument(URLDecoder.decode(name),
URLDecoder.decode(value));
+ addArgument(URLDecoder.decode(name),
URLDecoder.decode(value), metaData);
}
catch (Exception e)
{
@@ -440,6 +484,86 @@
config.setDomain("www.apache.org");
assertEquals("http://www.apache.org/index.html?p1=p2",config.getUrl().toString());
}
+
+ // test cases for making Url, and exercise method addArgument(String
name,String value,String metadata)
+ public void testMakingUrl4() throws Exception
+ {
+ UrlConfig config = new UrlConfig();
+ config.setProtocol("http");
+ config.setMethod(HTTPSampler.GET);
+ config.addArgument("param1","value1","=");
+ config.setPath("/index.html");
+ config.setDomain("www.apache.org");
+
assertEquals("http://www.apache.org/index.html?param1=value1",config.getUrl().toString());
+ }
+
+ public void testMakingUrl5() throws Exception
+ {
+ UrlConfig config = new UrlConfig();
+ config.setProtocol("http");
+ config.setMethod(HTTPSampler.GET);
+ config.addArgument("param1","","=");
+ config.setPath("/index.html");
+ config.setDomain("www.apache.org");
+
assertEquals("http://www.apache.org/index.html?param1=",config.getUrl().toString());
+ }
+
+ public void testMakingUrl6() throws Exception
+ {
+ UrlConfig config = new UrlConfig();
+ config.setProtocol("http");
+ config.setMethod(HTTPSampler.GET);
+ config.addArgument("param1","","");
+ config.setPath("/index.html");
+ config.setDomain("www.apache.org");
+
assertEquals("http://www.apache.org/index.html?param1",config.getUrl().toString());
+ }
+
+ // test cases for making Url, and exercise method
parseArguments(String queryString)
+ public void testMakingUrl7() throws Exception
+ {
+ UrlConfig config = new UrlConfig();
+ config.setProtocol("http");
+ config.setMethod(HTTPSampler.GET);
+ config. parseArguments("param1=value1");
+ config.setPath("/index.html");
+ config.setDomain("www.apache.org");
+
assertEquals("http://www.apache.org/index.html?param1=value1",config.getUrl().toString());
+ }
+
+ public void testMakingUrl8() throws Exception
+ {
+ UrlConfig config = new UrlConfig();
+ config.setProtocol("http");
+ config.setMethod(HTTPSampler.GET);
+ config. parseArguments("param1=");
+ config.setPath("/index.html");
+ config.setDomain("www.apache.org");
+
assertEquals("http://www.apache.org/index.html?param1=",config.getUrl().toString());
+ }
+
+ public void testMakingUrl9() throws Exception
+ {
+ UrlConfig config = new UrlConfig();
+ config.setProtocol("http");
+ config.setMethod(HTTPSampler.GET);
+ config. parseArguments("param1");
+ config.setPath("/index.html");
+ config.setDomain("www.apache.org");
+
assertEquals("http://www.apache.org/index.html?param1",config.getUrl().toString());
+ }
+
+ public void testMakingUrl10() throws Exception
+ {
+ UrlConfig config = new UrlConfig();
+ config.setProtocol("http");
+ config.setMethod(HTTPSampler.GET);
+ config. parseArguments("");
+ config.setPath("/index.html");
+ config.setDomain("www.apache.org");
+
assertEquals("http://www.apache.org/index.html",config.getUrl().toString());
+ }
+
}
}
1.27 +2 -1
jakarta-jmeter/src_1/org/apache/jmeter/resources/messages.properties
Index: messages.properties
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/resources/messages.properties,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- messages.properties 31 Jul 2002 03:56:59 -0000 1.26
+++ messages.properties 4 Aug 2002 13:05:36 -0000 1.27
@@ -54,6 +54,7 @@
default_parameters=Default Parameters
name=Name:
value=Value
+metadata=MetaData
secure=Secure
expiration=Expiration
username=Username
@@ -261,4 +262,4 @@
choose_function=Choose a function
function_helper_title=Function Helper
generate=Generate
-iteration_counter_arg_1=TRUE, for each user to have own counter, FALSE for a global
counter
\ No newline at end of file
+iteration_counter_arg_1=TRUE, for each user to have own counter, FALSE for a global
counter
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>