You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by ms...@apache.org on 2002/08/04 15:05:36 UTC

cvs commit: jakarta-jmeter/src_1/org/apache/jmeter/resources messages.properties

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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>