You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by Milamber <mi...@apache.org> on 2012/08/26 18:17:37 UTC
Re: svn commit: r1377291 - in /jmeter/trunk: src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java
xdocs/changes.xml xdocs/usermanual/component_reference.xml
Le 25/08/2012 14:17, pmouawad@apache.org a ecrit :
> Author: pmouawad
> Date: Sat Aug 25 13:17:19 2012
> New Revision: 1377291
>
> URL: http://svn.apache.org/viewvc?rev=1377291&view=rev
> Log:
> Bug 53782 - Enhance JavaSampler handling of JavaSamplerClient cleanup to use less memory
> Only register instance of JavaSamplerClient that have overriden or implemented teardownTest
> Bugzilla Id: 53782
>
> Modified:
> jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java
Seems introduce regression in junit tests.
[client] ... end of run
[echo] BatchTestLocal output files compared OK
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@4430d82d
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@30384065
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@4cf7c31d
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@1e2acc65
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@2c79809
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@3794d372
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@bc5fde0
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@56c163f
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@2bb5340c
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@212bcd4b
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@60de1b8a
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@15e232b5
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@7dc05ffd
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@7f92c8d9
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@72e6f7d2
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@303bc257
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@2ec791b9
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@538f1d7e
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@2353f67e
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@40589e56
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@5fe0f2f6
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
[concat] 2012/08/26 16:15:48 WARN -
jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of
org.apache.jmeter.protocol.java.sampler.JavaSampler@5d3ad33d
java.lang.NullPointerException
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:303)
[concat] at
org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:308)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:220)
[concat] at
org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:423)
[concat] at java.lang.Thread.run(Thread.java:595)
BUILD FAILED
> jmeter/trunk/xdocs/changes.xml
> jmeter/trunk/xdocs/usermanual/component_reference.xml
>
> Modified: jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java?rev=1377291&r1=1377290&r2=1377291&view=diff
> ==============================================================================
> --- jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java (original)
> +++ jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java Sat Aug 25 13:17:19 2012
> @@ -18,10 +18,14 @@
>
> package org.apache.jmeter.protocol.java.sampler;
>
> +import java.lang.reflect.Method;
> import java.util.Arrays;
> import java.util.HashSet;
> +import java.util.Map;
> import java.util.Set;
> +import java.util.concurrent.ConcurrentHashMap;
>
> +import org.apache.commons.lang3.exception.ExceptionUtils;
> import org.apache.jmeter.config.Arguments;
> import org.apache.jmeter.config.ConfigTestElement;
> import org.apache.jmeter.samplers.AbstractSampler;
> @@ -74,6 +78,13 @@ public class JavaSampler extends Abstrac
> private transient JavaSamplerContext context = null;
>
> /**
> + * Cache of classname, boolean that holds information about a class and wether or not it should
> + * be registered for cleanup.
> + * This is done to avoid using reflection on each registration
> + */
> + private transient Map<String, Boolean> isToBeRegisteredCache = new ConcurrentHashMap<String, Boolean>();
> +
> + /**
> * Set used to register all JavaSamplerClient and JavaSamplerContext.
> * This is used so that the JavaSamplerClient can be notified when the test ends.
> */
> @@ -137,27 +148,72 @@ public class JavaSampler extends Abstrac
> * @param entry
> * the Entry for this sample
> * @return test SampleResult
> + * @throws NoSuchMethodException
> + * @throws SecurityException
> */
> - public SampleResult sample(Entry entry) {
> - Arguments args = getArguments();
> - args.addArgument(TestElement.NAME, getName()); // Allow Sampler access
> - // to test element name
> - context = new JavaSamplerContext(args);
> - if (javaClient == null) {
> - log.debug(whoAmI() + "\tCreating Java Client");
> - createJavaClient();
> - javaClientAndContextSet.add(new Object[]{javaClient, context});
> - javaClient.setupTest(context);
> + public SampleResult sample(Entry entry) {
> + try {
> + Arguments args = getArguments();
> + args.addArgument(TestElement.NAME, getName()); // Allow Sampler access
> + // to test element name
> + context = new JavaSamplerContext(args);
> + if (javaClient == null) {
> + log.debug(whoAmI() + "\tCreating Java Client");
> + createJavaClient();
> + registerForCleanup(javaClient, context);
> + javaClient.setupTest(context);
> + }
> +
> + SampleResult result = javaClient.runTest(context);
> +
> + // Only set the default label if it has not been set
> + if (result != null&& result.getSampleLabel().length() == 0) {
> + result.setSampleLabel(getName());
> + }
> +
> + return result;
> + } catch(Exception ex) {
> + SampleResult sampleResultIfError = new SampleResult();
> + sampleResultIfError.setSampleLabel(getName());
> + sampleResultIfError.setSuccessful(false);
> + sampleResultIfError.setResponseCode("500"); // $NON-NLS-1$
> + sampleResultIfError.setResponseMessage(ExceptionUtils.getRootCauseMessage(ex));
> + sampleResultIfError.setResponseData(ExceptionUtils.getStackTrace(ex), "UTF-8");
> + return sampleResultIfError;
> }
> + }
>
> - SampleResult result = javaClient.runTest(context);
> -
> - // Only set the default label if it has not been set
> - if (result != null&& result.getSampleLabel().length() == 0) {
> - result.setSampleLabel(getName());
> + /**
> + * Only register jsClient if it contains a custom teardownTest method
> + * @param jsClient JavaSamplerClient
> + * @param jsContext JavaSamplerContext
> + * @throws NoSuchMethodException
> + * @throws SecurityException
> + */
> + private final void registerForCleanup(JavaSamplerClient jsClient,
> + JavaSamplerContext jsContext) throws SecurityException, NoSuchMethodException {
> + if(isToBeRegistered(jsClient.getClass())) {
> + javaClientAndContextSet.add(new Object[]{jsClient, jsContext});
> }
> + }
>
> - return result;
> + /**
> + * Tests clazz to see if a custom teardown method has been written and caches the test result.
> + * If classes uses {@link AbstractJavaSamplerClient#teardownTest(JavaSamplerContext)} then it won't
> + * be registered for cleanup as it does nothing.
> + * @param clazz Class to be verified
> + * @return true if clazz should be registered for cleanup
> + * @throws SecurityException
> + * @throws NoSuchMethodException
> + */
> + private boolean isToBeRegistered(Class<? extends JavaSamplerClient> clazz) throws SecurityException, NoSuchMethodException {
> + Boolean isToBeRegistered = isToBeRegisteredCache.get(clazz.getName());
> + if(isToBeRegistered == null) {
> + Method method = clazz.getMethod("teardownTest", new Class[]{JavaSamplerContext.class});
> + isToBeRegistered = Boolean.valueOf(!method.getDeclaringClass().equals(AbstractJavaSamplerClient.class));
> + isToBeRegisteredCache.put(clazz.getName(), isToBeRegistered);
> + }
> + return isToBeRegistered.booleanValue();
> }
>
> /**
> @@ -244,6 +300,7 @@ public class JavaSampler extends Abstrac
> }
> javaClientAndContextSet.clear();
> }
> + isToBeRegisteredCache.clear();
> }
>
> /* Implements TestStateListener.testEnded(String) */
>
> Modified: jmeter/trunk/xdocs/changes.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1377291&r1=1377290&r2=1377291&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/changes.xml (original)
> +++ jmeter/trunk/xdocs/changes.xml Sat Aug 25 13:17:19 2012
> @@ -135,6 +135,7 @@ Shortcut for Function Helper Dialog is n
> <ul>
> <li><bugzilla>55310</bugzilla> - TestAction should implement Interruptible</li>
> <li><bugzilla>53318</bugzilla> - Add Embedded URL Filter to HTTP Request Defaults Control</li>
> +<li><bugzilla>53782</bugzilla> - Enhance JavaSampler handling of JavaSamplerClient cleanup to use less memory</li>
> </ul>
>
> <h3>Controllers</h3>
>
> Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1377291&r1=1377290&r2=1377291&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
> +++ jmeter/trunk/xdocs/usermanual/component_reference.xml Sat Aug 25 13:17:19 2012
> @@ -566,6 +566,9 @@ The fields allow variables to be used, s
> </p>
> </description>
>
> +<note>Since JMeter 2.8, if method teardownTest is not overriden by subclasses of AbstractJavaSamplerClient, then the method will not be called to optimise JMeter memory behaviour.
> +This will not have any impact on existing Test plans.
> +</note>
> <note>The Add/Delete buttons don't serve any purpose at present.</note>
>
> <properties>
>
>
>
Re: svn commit: r1377291 - in /jmeter/trunk: src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java
xdocs/changes.xml xdocs/usermanual/component_reference.xml
Posted by Philippe Mouawad <ph...@gmail.com>.
Thanks Milamber.
Fixed.
Regards
Philippe
On Sun, Aug 26, 2012 at 6:17 PM, Milamber <mi...@apache.org> wrote:
>
>
> Le 25/08/2012 14:17, pmouawad@apache.org a ecrit :
>
> Author: pmouawad
>> Date: Sat Aug 25 13:17:19 2012
>> New Revision: 1377291
>>
>> URL: http://svn.apache.org/viewvc?**rev=1377291&view=rev<http://svn.apache.org/viewvc?rev=1377291&view=rev>
>> Log:
>> Bug 53782 - Enhance JavaSampler handling of JavaSamplerClient cleanup to
>> use less memory
>> Only register instance of JavaSamplerClient that have overriden or
>> implemented teardownTest
>> Bugzilla Id: 53782
>>
>> Modified:
>> jmeter/trunk/src/protocol/**java/org/apache/jmeter/**
>> protocol/java/sampler/**JavaSampler.java
>>
>
> Seems introduce regression in junit tests.
>
>
> [client] ... end of run
> [echo] BatchTestLocal output files compared OK
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**4430d82d java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**30384065 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**4cf7c31d java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**1e2acc65 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**2c79809 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**3794d372 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**bc5fde0 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**56c163f java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**2bb5340c java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**212bcd4b java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**60de1b8a java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**15e232b5 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**7dc05ffd java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**7f92c8d9 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**72e6f7d2 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**303bc257 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**2ec791b9 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**538f1d7e java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**2353f67e java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**40589e56 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**5fe0f2f6 java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
> [concat] 2012/08/26 16:15:48 WARN - jmeter.engine.**StandardJMeterEngine:
> Error encountered during shutdown of org.apache.jmeter.protocol.**
> java.sampler.JavaSampler@**5d3ad33d java.lang.NullPointerException
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**303)
> [concat] at org.apache.jmeter.protocol.**java.sampler.JavaSampler.*
> *testEnded(JavaSampler.java:**308)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.**
> notifyTestListenersOfEnd(**StandardJMeterEngine.java:220)
> [concat] at org.apache.jmeter.engine.**StandardJMeterEngine.run(**
> StandardJMeterEngine.java:423)
> [concat] at java.lang.Thread.run(Thread.**java:595)
>
> BUILD FAILED
>
>
>
>
>
> jmeter/trunk/xdocs/changes.xml
>> jmeter/trunk/xdocs/usermanual/**component_reference.xml
>>
>> Modified: jmeter/trunk/src/protocol/**java/org/apache/jmeter/**
>> protocol/java/sampler/**JavaSampler.java
>> URL: http://svn.apache.org/viewvc/**jmeter/trunk/src/protocol/**
>> java/org/apache/jmeter/**protocol/java/sampler/**
>> JavaSampler.java?rev=1377291&**r1=1377290&r2=1377291&view=**diff<http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java?rev=1377291&r1=1377290&r2=1377291&view=diff>
>> ==============================**==============================**
>> ==================
>> --- jmeter/trunk/src/protocol/**java/org/apache/jmeter/**
>> protocol/java/sampler/**JavaSampler.java (original)
>> +++ jmeter/trunk/src/protocol/**java/org/apache/jmeter/**
>> protocol/java/sampler/**JavaSampler.java Sat Aug 25 13:17:19 2012
>> @@ -18,10 +18,14 @@
>>
>> package org.apache.jmeter.protocol.**java.sampler;
>>
>> +import java.lang.reflect.Method;
>> import java.util.Arrays;
>> import java.util.HashSet;
>> +import java.util.Map;
>> import java.util.Set;
>> +import java.util.concurrent.**ConcurrentHashMap;
>>
>> +import org.apache.commons.lang3.**exception.ExceptionUtils;
>> import org.apache.jmeter.config.**Arguments;
>> import org.apache.jmeter.config.**ConfigTestElement;
>> import org.apache.jmeter.samplers.**AbstractSampler;
>> @@ -74,6 +78,13 @@ public class JavaSampler extends Abstrac
>> private transient JavaSamplerContext context = null;
>>
>> /**
>> + * Cache of classname, boolean that holds information about a class
>> and wether or not it should
>> + * be registered for cleanup.
>> + * This is done to avoid using reflection on each registration
>> + */
>> + private transient Map<String, Boolean> isToBeRegisteredCache = new
>> ConcurrentHashMap<String, Boolean>();
>> +
>> + /**
>> * Set used to register all JavaSamplerClient and
>> JavaSamplerContext.
>> * This is used so that the JavaSamplerClient can be notified when
>> the test ends.
>> */
>> @@ -137,27 +148,72 @@ public class JavaSampler extends Abstrac
>> * @param entry
>> * the Entry for this sample
>> * @return test SampleResult
>> + * @throws NoSuchMethodException
>> + * @throws SecurityException
>> */
>> - public SampleResult sample(Entry entry) {
>> - Arguments args = getArguments();
>> - args.addArgument(TestElement.**NAME, getName()); // Allow
>> Sampler access
>> - // to test
>> element name
>> - context = new JavaSamplerContext(args);
>> - if (javaClient == null) {
>> - log.debug(whoAmI() + "\tCreating Java Client");
>> - createJavaClient();
>> - javaClientAndContextSet.add(**new Object[]{javaClient,
>> context});
>> - javaClient.setupTest(context);
>> + public SampleResult sample(Entry entry) {
>> + try {
>> + Arguments args = getArguments();
>> + args.addArgument(TestElement.**NAME, getName()); // Allow
>> Sampler access
>> + // to test
>> element name
>> + context = new JavaSamplerContext(args);
>> + if (javaClient == null) {
>> + log.debug(whoAmI() + "\tCreating Java Client");
>> + createJavaClient();
>> + registerForCleanup(javaClient, context);
>> + javaClient.setupTest(context);
>> + }
>> +
>> + SampleResult result = javaClient.runTest(context);
>> +
>> + // Only set the default label if it has not been set
>> + if (result != null&& result.getSampleLabel().**length() ==
>> 0) {
>>
>> + result.setSampleLabel(getName(**));
>> + }
>> +
>> + return result;
>> + } catch(Exception ex) {
>> + SampleResult sampleResultIfError = new SampleResult();
>> + sampleResultIfError.**setSampleLabel(getName());
>> + sampleResultIfError.**setSuccessful(false);
>> + sampleResultIfError.**setResponseCode("500"); // $NON-NLS-1$
>> + sampleResultIfError.**setResponseMessage(**ExceptionUtils.**
>> getRootCauseMessage(ex));
>> + sampleResultIfError.**setResponseData(**
>> ExceptionUtils.getStackTrace(**ex), "UTF-8");
>> + return sampleResultIfError;
>> }
>> + }
>>
>> - SampleResult result = javaClient.runTest(context);
>> -
>> - // Only set the default label if it has not been set
>> - if (result != null&& result.getSampleLabel().**length() == 0) {
>>
>> - result.setSampleLabel(getName(**));
>> + /**
>> + * Only register jsClient if it contains a custom teardownTest method
>> + * @param jsClient JavaSamplerClient
>> + * @param jsContext JavaSamplerContext
>> + * @throws NoSuchMethodException
>> + * @throws SecurityException
>> + */
>> + private final void registerForCleanup(**JavaSamplerClient jsClient,
>> + JavaSamplerContext jsContext) throws SecurityException,
>> NoSuchMethodException {
>> + if(isToBeRegistered(jsClient.**getClass())) {
>> + javaClientAndContextSet.add(**new Object[]{jsClient,
>> jsContext});
>> }
>> + }
>>
>> - return result;
>> + /**
>> + * Tests clazz to see if a custom teardown method has been written
>> and caches the test result.
>> + * If classes uses {@link AbstractJavaSamplerClient#**teardownTest(*
>> *JavaSamplerContext)} then it won't
>> + * be registered for cleanup as it does nothing.
>> + * @param clazz Class to be verified
>> + * @return true if clazz should be registered for cleanup
>> + * @throws SecurityException
>> + * @throws NoSuchMethodException
>> + */
>> + private boolean isToBeRegistered(Class<? extends JavaSamplerClient>
>> clazz) throws SecurityException, NoSuchMethodException {
>> + Boolean isToBeRegistered = isToBeRegisteredCache.get(**
>> clazz.getName());
>> + if(isToBeRegistered == null) {
>> + Method method = clazz.getMethod("teardownTest"**, new
>> Class[]{JavaSamplerContext.**class});
>> + isToBeRegistered = Boolean.valueOf(!method.**
>> getDeclaringClass().equals(**AbstractJavaSamplerClient.**class));
>> + isToBeRegisteredCache.put(**clazz.getName(),
>> isToBeRegistered);
>> + }
>> + return isToBeRegistered.booleanValue(**);
>> }
>>
>> /**
>> @@ -244,6 +300,7 @@ public class JavaSampler extends Abstrac
>> }
>> javaClientAndContextSet.clear(**);
>> }
>> + isToBeRegisteredCache.clear();
>> }
>>
>> /* Implements TestStateListener.testEnded(**String) */
>>
>> Modified: jmeter/trunk/xdocs/changes.xml
>> URL: http://svn.apache.org/viewvc/**jmeter/trunk/xdocs/changes.**
>> xml?rev=1377291&r1=1377290&r2=**1377291&view=diff<http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1377291&r1=1377290&r2=1377291&view=diff>
>> ==============================**==============================**
>> ==================
>> --- jmeter/trunk/xdocs/changes.xml (original)
>> +++ jmeter/trunk/xdocs/changes.xml Sat Aug 25 13:17:19 2012
>> @@ -135,6 +135,7 @@ Shortcut for Function Helper Dialog is n
>> <ul>
>> <li><bugzilla>55310</bugzilla> - TestAction should implement
>> Interruptible</li>
>> <li><bugzilla>53318</bugzilla> - Add Embedded URL Filter to HTTP
>> Request Defaults Control</li>
>> +<li><bugzilla>53782</**bugzilla> - Enhance JavaSampler handling of
>> JavaSamplerClient cleanup to use less memory</li>
>> </ul>
>>
>> <h3>Controllers</h3>
>>
>> Modified: jmeter/trunk/xdocs/usermanual/**component_reference.xml
>> URL: http://svn.apache.org/viewvc/**jmeter/trunk/xdocs/usermanual/**
>> component_reference.xml?rev=**1377291&r1=1377290&r2=1377291&**view=diff<http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1377291&r1=1377290&r2=1377291&view=diff>
>> ==============================**==============================**
>> ==================
>> --- jmeter/trunk/xdocs/usermanual/**component_reference.xml (original)
>> +++ jmeter/trunk/xdocs/usermanual/**component_reference.xml Sat Aug 25
>> 13:17:19 2012
>> @@ -566,6 +566,9 @@ The fields allow variables to be used, s
>> </p>
>> </description>
>>
>> +<note>Since JMeter 2.8, if method teardownTest is not overriden by
>> subclasses of AbstractJavaSamplerClient, then the method will not be called
>> to optimise JMeter memory behaviour.
>> +This will not have any impact on existing Test plans.
>> +</note>
>> <note>The Add/Delete buttons don't serve any purpose at present.</note>
>>
>> <properties>
>>
>>
>>
>>
>
--
Cordialement.
Philippe Mouawad.