You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by Peter Loron <pe...@standingwave.org> on 2007/12/28 03:55:37 UTC

Java Sampler help needed -- parameters don't show up

I have created a class that extends AbstractJavaSamplerClient. I
basically edited the JavaTest.class file included with the JMeter 2.3.1
source. I build the JAR file and put it in lib/ext. I'm using Java
1.6.0.03 on Ubuntu 7.10.

When I try to add a Java Sampler to a test, the first time I click on
the menu option, it does nothing. When I click a second time. I get a
sampler added. In the dropdown list, I can see my class, but no
parameters are listed (I have 2 defined in the getDefaultParameters()
method). When I select either the JavaTest or SleepTest options, they
don't show any parameters, either.

When I remove my JAR from the lib/ext directory and repeat the process,
the JavaTest and SleepTest options properly show parameters and the Java
Sampler is added on the first click.

Code is appended below.

Suggestions on where to look?

Thanks.

-Pete
-------------------------------------------
package test;

import java.io.Serializable;
import java.util.Iterator;

import org.apache.log4j.*;

import org.apache.jmeter.config.Arguments;
import
org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
//import org.apache.jmeter.testelement.TestElement;



public class LaunchPLC extends AbstractJavaSamplerClient implements
Serializable {
	
	private static final long serialVersionUID = 1L;

	//create our logger
	static Logger log = Logger.getLogger(LaunchPLC.class.getName());

	/** The name of the script to run. */
	private String scriptName;

	private static final String SCRIPT_NAME = "Script Name";
	
	/** The success status to be stored in the sample result. */
	private boolean status;
	
	private static final String STATUS_NAME = "Status";
	

	public LaunchPLC() {
		getLogger().debug(whoAmI() + "\tConstruct");
		
		//CONFIG LOGGING
		FileAppender fa = null;
		
		log.setLevel(Level.DEBUG);
		try {
			fa = new FileAppender(new PatternLayout(),"log.txt");
		} catch (Exception e) {
			e.printStackTrace();
		}
		log.addAppender(fa);
	}

	/*
	 * Utility method to set up all the values
	 */
	private void setupValues(JavaSamplerContext context) {

		scriptName = context.getParameter("Script Name","");

		/*
		sleepTime = context.getLongParameter(SLEEP_NAME, DEFAULT_SLEEP_TIME);
		sleepMask = context.getLongParameter(MASK_NAME, DEFAULT_SLEEP_MASK);
		
		responseMessage = context.getParameter(RESPONSE_MESSAGE_NAME,
RESPONSE_MESSAGE_DEFAULT);

		responseCode = context.getParameter(RESPONSE_CODE_NAME,
RESPONSE_CODE_DEFAULT);

		success = context.getParameter(SUCCESS_NAME,
SUCCESS_DEFAULT).equalsIgnoreCase("OK");

		label = context.getParameter(LABEL_NAME, "");
		if (label.length() == 0)
			label = context.getParameter(TestElement.NAME); // default to name
															// of element

		samplerData = context.getParameter(SAMPLER_DATA_NAME,
SAMPLER_DATA_DEFAULT);

		resultData = context.getParameter(RESULT_DATA_NAME,
RESULT_DATA_DEFAULT);
		*/
	}


	public void setupTest(JavaSamplerContext context) {
		getLogger().debug(whoAmI() + "\tsetupTest()");
		listParameters(context);
		
		//configure sampler
		setupValues(context);
	}


	public Arguments getDefaultParameters() {
		Arguments params = new Arguments();
		params.addArgument("Script Name","foo");
		params.addArgument("Status","OK");
		return params;
	}


	public SampleResult runTest(JavaSamplerContext context) {


		log.info("Starting runTest");

		SampleResult results = new SampleResult();


		// Record sample start time.
		results.sampleStart();
		

		
		com.pureload.tools.runner.ScenarioRunner.execute(scriptName,
Level.DEBUG_INT, com.pureload.task.runtime.BasicTaskRuntime.LOG_DEBUG,
true, log);
		
		results.setSuccessful(true);
		results.sampleEnd();

		log.info("Finished runTest");
		
		return results;
	}


	public void teardownTest(JavaSamplerContext context) {
		getLogger().debug(whoAmI() + "\tteardownTest()");
		listParameters(context);
	}


	@SuppressWarnings("unchecked")
	private void listParameters(JavaSamplerContext context) {
		if (getLogger().isDebugEnabled()) {
			Iterator argsIt = context.getParameterNamesIterator();
			while (argsIt.hasNext()) {
				String name = (String) argsIt.next();
				getLogger().debug(name + "=" + context.getParameter(name));
			}
		}
	}


	private String whoAmI() {
		StringBuffer sb = new StringBuffer();
		sb.append(Thread.currentThread().toString());
		sb.append("@");
		sb.append(Integer.toHexString(hashCode()));
		return sb.toString();
	}

}





---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


Re: Java Sampler help needed -- parameters don't show up

Posted by Peter Loron <pe...@standingwave.org>.
Ok, got that fixed! Thanks.

-Pete

On Fri, 2007-12-28 at 14:40 +0800, dennis wrote:
> The reason why you cannot add Java Request Sampler is because you used 
> log4j in your code.
> 
> Actually, when you add Java Request sampler the first time, you can see 
> errors in the console. It says:
> 
> Exception in thread "AWT-EventQueue-0" java.lang.
> e/log4j/Logger
>          at LaunchPLC.<clinit>(LaunchPLC.java:18)
> 
> You can add log4j.jar to JMeter classpath to solve this problem.
> 
> Peter Loron wrote:
> > I have created a class that extends AbstractJavaSamplerClient. I
> > basically edited the JavaTest.class file included with the JMeter 2.3.1
> > source. I build the JAR file and put it in lib/ext. I'm using Java
> > 1.6.0.03 on Ubuntu 7.10.
> > 
> > When I try to add a Java Sampler to a test, the first time I click on
> > the menu option, it does nothing. When I click a second time. I get a
> > sampler added. In the dropdown list, I can see my class, but no
> > parameters are listed (I have 2 defined in the getDefaultParameters()
> > method). When I select either the JavaTest or SleepTest options, they
> > don't show any parameters, either.
> > 
> > When I remove my JAR from the lib/ext directory and repeat the process,
> > the JavaTest and SleepTest options properly show parameters and the Java
> > Sampler is added on the first click.
> > 
> > Code is appended below.
> > 
> > Suggestions on where to look?
> > 
> > Thanks.
> > 
> > -Pete
> > -------------------------------------------
> > package test;
> > 
> > import java.io.Serializable;
> > import java.util.Iterator;
> > 
> > import org.apache.log4j.*;
> > 
> > import org.apache.jmeter.config.Arguments;
> > import
> > org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
> > import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
> > import org.apache.jmeter.samplers.SampleResult;
> > //import org.apache.jmeter.testelement.TestElement;
> > 
> > 
> > 
> > public class LaunchPLC extends AbstractJavaSamplerClient implements
> > Serializable {
> > 	
> > 	private static final long serialVersionUID = 1L;
> > 
> > 	//create our logger
> > 	static Logger log = Logger.getLogger(LaunchPLC.class.getName());
> > 
> > 	/** The name of the script to run. */
> > 	private String scriptName;
> > 
> > 	private static final String SCRIPT_NAME = "Script Name";
> > 	
> > 	/** The success status to be stored in the sample result. */
> > 	private boolean status;
> > 	
> > 	private static final String STATUS_NAME = "Status";
> > 	
> > 
> > 	public LaunchPLC() {
> > 		getLogger().debug(whoAmI() + "\tConstruct");
> > 		
> > 		//CONFIG LOGGING
> > 		FileAppender fa = null;
> > 		
> > 		log.setLevel(Level.DEBUG);
> > 		try {
> > 			fa = new FileAppender(new PatternLayout(),"log.txt");
> > 		} catch (Exception e) {
> > 			e.printStackTrace();
> > 		}
> > 		log.addAppender(fa);
> > 	}
> > 
> > 	/*
> > 	 * Utility method to set up all the values
> > 	 */
> > 	private void setupValues(JavaSamplerContext context) {
> > 
> > 		scriptName = context.getParameter("Script Name","");
> > 
> > 		/*
> > 		sleepTime = context.getLongParameter(SLEEP_NAME, DEFAULT_SLEEP_TIME);
> > 		sleepMask = context.getLongParameter(MASK_NAME, DEFAULT_SLEEP_MASK);
> > 		
> > 		responseMessage = context.getParameter(RESPONSE_MESSAGE_NAME,
> > RESPONSE_MESSAGE_DEFAULT);
> > 
> > 		responseCode = context.getParameter(RESPONSE_CODE_NAME,
> > RESPONSE_CODE_DEFAULT);
> > 
> > 		success = context.getParameter(SUCCESS_NAME,
> > SUCCESS_DEFAULT).equalsIgnoreCase("OK");
> > 
> > 		label = context.getParameter(LABEL_NAME, "");
> > 		if (label.length() == 0)
> > 			label = context.getParameter(TestElement.NAME); // default to name
> > 															// of element
> > 
> > 		samplerData = context.getParameter(SAMPLER_DATA_NAME,
> > SAMPLER_DATA_DEFAULT);
> > 
> > 		resultData = context.getParameter(RESULT_DATA_NAME,
> > RESULT_DATA_DEFAULT);
> > 		*/
> > 	}
> > 
> > 
> > 	public void setupTest(JavaSamplerContext context) {
> > 		getLogger().debug(whoAmI() + "\tsetupTest()");
> > 		listParameters(context);
> > 		
> > 		//configure sampler
> > 		setupValues(context);
> > 	}
> > 
> > 
> > 	public Arguments getDefaultParameters() {
> > 		Arguments params = new Arguments();
> > 		params.addArgument("Script Name","foo");
> > 		params.addArgument("Status","OK");
> > 		return params;
> > 	}
> > 
> > 
> > 	public SampleResult runTest(JavaSamplerContext context) {
> > 
> > 
> > 		log.info("Starting runTest");
> > 
> > 		SampleResult results = new SampleResult();
> > 
> > 
> > 		// Record sample start time.
> > 		results.sampleStart();
> > 		
> > 
> > 		
> > 		com.pureload.tools.runner.ScenarioRunner.execute(scriptName,
> > Level.DEBUG_INT, com.pureload.task.runtime.BasicTaskRuntime.LOG_DEBUG,
> > true, log);
> > 		
> > 		results.setSuccessful(true);
> > 		results.sampleEnd();
> > 
> > 		log.info("Finished runTest");
> > 		
> > 		return results;
> > 	}
> > 
> > 
> > 	public void teardownTest(JavaSamplerContext context) {
> > 		getLogger().debug(whoAmI() + "\tteardownTest()");
> > 		listParameters(context);
> > 	}
> > 
> > 
> > 	@SuppressWarnings("unchecked")
> > 	private void listParameters(JavaSamplerContext context) {
> > 		if (getLogger().isDebugEnabled()) {
> > 			Iterator argsIt = context.getParameterNamesIterator();
> > 			while (argsIt.hasNext()) {
> > 				String name = (String) argsIt.next();
> > 				getLogger().debug(name + "=" + context.getParameter(name));
> > 			}
> > 		}
> > 	}
> > 
> > 
> > 	private String whoAmI() {
> > 		StringBuffer sb = new StringBuffer();
> > 		sb.append(Thread.currentThread().toString());
> > 		sb.append("@");
> > 		sb.append(Integer.toHexString(hashCode()));
> > 		return sb.toString();
> > 	}
> > 
> > }
> > 
> > 
> > 
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
> > 
> > 
> > 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


Re: Java Sampler help needed -- parameters don't show up

Posted by dennis <gz...@126.com>.
The reason why you cannot add Java Request Sampler is because you used 
log4j in your code.

Actually, when you add Java Request sampler the first time, you can see 
errors in the console. It says:

Exception in thread "AWT-EventQueue-0" java.lang.
e/log4j/Logger
         at LaunchPLC.<clinit>(LaunchPLC.java:18)

You can add log4j.jar to JMeter classpath to solve this problem.

Peter Loron wrote:
> I have created a class that extends AbstractJavaSamplerClient. I
> basically edited the JavaTest.class file included with the JMeter 2.3.1
> source. I build the JAR file and put it in lib/ext. I'm using Java
> 1.6.0.03 on Ubuntu 7.10.
> 
> When I try to add a Java Sampler to a test, the first time I click on
> the menu option, it does nothing. When I click a second time. I get a
> sampler added. In the dropdown list, I can see my class, but no
> parameters are listed (I have 2 defined in the getDefaultParameters()
> method). When I select either the JavaTest or SleepTest options, they
> don't show any parameters, either.
> 
> When I remove my JAR from the lib/ext directory and repeat the process,
> the JavaTest and SleepTest options properly show parameters and the Java
> Sampler is added on the first click.
> 
> Code is appended below.
> 
> Suggestions on where to look?
> 
> Thanks.
> 
> -Pete
> -------------------------------------------
> package test;
> 
> import java.io.Serializable;
> import java.util.Iterator;
> 
> import org.apache.log4j.*;
> 
> import org.apache.jmeter.config.Arguments;
> import
> org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
> import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
> import org.apache.jmeter.samplers.SampleResult;
> //import org.apache.jmeter.testelement.TestElement;
> 
> 
> 
> public class LaunchPLC extends AbstractJavaSamplerClient implements
> Serializable {
> 	
> 	private static final long serialVersionUID = 1L;
> 
> 	//create our logger
> 	static Logger log = Logger.getLogger(LaunchPLC.class.getName());
> 
> 	/** The name of the script to run. */
> 	private String scriptName;
> 
> 	private static final String SCRIPT_NAME = "Script Name";
> 	
> 	/** The success status to be stored in the sample result. */
> 	private boolean status;
> 	
> 	private static final String STATUS_NAME = "Status";
> 	
> 
> 	public LaunchPLC() {
> 		getLogger().debug(whoAmI() + "\tConstruct");
> 		
> 		//CONFIG LOGGING
> 		FileAppender fa = null;
> 		
> 		log.setLevel(Level.DEBUG);
> 		try {
> 			fa = new FileAppender(new PatternLayout(),"log.txt");
> 		} catch (Exception e) {
> 			e.printStackTrace();
> 		}
> 		log.addAppender(fa);
> 	}
> 
> 	/*
> 	 * Utility method to set up all the values
> 	 */
> 	private void setupValues(JavaSamplerContext context) {
> 
> 		scriptName = context.getParameter("Script Name","");
> 
> 		/*
> 		sleepTime = context.getLongParameter(SLEEP_NAME, DEFAULT_SLEEP_TIME);
> 		sleepMask = context.getLongParameter(MASK_NAME, DEFAULT_SLEEP_MASK);
> 		
> 		responseMessage = context.getParameter(RESPONSE_MESSAGE_NAME,
> RESPONSE_MESSAGE_DEFAULT);
> 
> 		responseCode = context.getParameter(RESPONSE_CODE_NAME,
> RESPONSE_CODE_DEFAULT);
> 
> 		success = context.getParameter(SUCCESS_NAME,
> SUCCESS_DEFAULT).equalsIgnoreCase("OK");
> 
> 		label = context.getParameter(LABEL_NAME, "");
> 		if (label.length() == 0)
> 			label = context.getParameter(TestElement.NAME); // default to name
> 															// of element
> 
> 		samplerData = context.getParameter(SAMPLER_DATA_NAME,
> SAMPLER_DATA_DEFAULT);
> 
> 		resultData = context.getParameter(RESULT_DATA_NAME,
> RESULT_DATA_DEFAULT);
> 		*/
> 	}
> 
> 
> 	public void setupTest(JavaSamplerContext context) {
> 		getLogger().debug(whoAmI() + "\tsetupTest()");
> 		listParameters(context);
> 		
> 		//configure sampler
> 		setupValues(context);
> 	}
> 
> 
> 	public Arguments getDefaultParameters() {
> 		Arguments params = new Arguments();
> 		params.addArgument("Script Name","foo");
> 		params.addArgument("Status","OK");
> 		return params;
> 	}
> 
> 
> 	public SampleResult runTest(JavaSamplerContext context) {
> 
> 
> 		log.info("Starting runTest");
> 
> 		SampleResult results = new SampleResult();
> 
> 
> 		// Record sample start time.
> 		results.sampleStart();
> 		
> 
> 		
> 		com.pureload.tools.runner.ScenarioRunner.execute(scriptName,
> Level.DEBUG_INT, com.pureload.task.runtime.BasicTaskRuntime.LOG_DEBUG,
> true, log);
> 		
> 		results.setSuccessful(true);
> 		results.sampleEnd();
> 
> 		log.info("Finished runTest");
> 		
> 		return results;
> 	}
> 
> 
> 	public void teardownTest(JavaSamplerContext context) {
> 		getLogger().debug(whoAmI() + "\tteardownTest()");
> 		listParameters(context);
> 	}
> 
> 
> 	@SuppressWarnings("unchecked")
> 	private void listParameters(JavaSamplerContext context) {
> 		if (getLogger().isDebugEnabled()) {
> 			Iterator argsIt = context.getParameterNamesIterator();
> 			while (argsIt.hasNext()) {
> 				String name = (String) argsIt.next();
> 				getLogger().debug(name + "=" + context.getParameter(name));
> 			}
> 		}
> 	}
> 
> 
> 	private String whoAmI() {
> 		StringBuffer sb = new StringBuffer();
> 		sb.append(Thread.currentThread().toString());
> 		sb.append("@");
> 		sb.append(Integer.toHexString(hashCode()));
> 		return sb.toString();
> 	}
> 
> }
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
> 
> 
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org