You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2012/08/28 21:54:09 UTC

svn commit: r1378286 - /jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java

Author: pmouawad
Date: Tue Aug 28 19:54:09 2012
New Revision: 1378286

URL: http://svn.apache.org/viewvc?rev=1378286&view=rev
Log:
Bug 53782 - Enhance JavaSampler handling of JavaSamplerClient cleanup to use less memory
Changes following sebb remarks on dev mailing list:

http://mail-archives.apache.org/mod_mbox/jmeter-dev/201208.mbox/%3CCAH9fUpZfe2Jg589tEbUfNrFygSo1mUbvv-tCZ5QEWs5fBZOsXw%40mail.gmail.com%3E
Bugzilla Id: 53782

Modified:
    jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java

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=1378286&r1=1378285&r2=1378286&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 Tue Aug 28 19:54:09 2012
@@ -25,7 +25,6 @@ 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;
@@ -82,7 +81,7 @@ public class JavaSampler extends Abstrac
      * be registered for cleanup.
      * This is done to avoid using reflection on each registration
      */
-    private Map<String, Boolean> isToBeRegisteredCache = new ConcurrentHashMap<String, Boolean>();
+    private static Map<String, Boolean> isToBeRegisteredCache = new ConcurrentHashMap<String, Boolean>();
 
     /**
      * Set used to register all JavaSamplerClient and JavaSamplerContext. 
@@ -148,39 +147,26 @@ public class JavaSampler extends Abstrac
      * @param entry
      *            the Entry for this sample
      * @return test SampleResult
-     * @throws NoSuchMethodException 
-     * @throws SecurityException 
      */
     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;
+        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();
+            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;
     }
 
     /**
@@ -191,7 +177,7 @@ public class JavaSampler extends Abstrac
      * @throws SecurityException 
      */
     private final void registerForCleanup(JavaSamplerClient jsClient,
-            JavaSamplerContext jsContext) throws SecurityException, NoSuchMethodException {
+            JavaSamplerContext jsContext) throws SecurityException, NoSuchMethodException  {
         if(isToBeRegistered(jsClient.getClass())) {
             javaClientAndContextSet.add(new Object[]{jsClient, jsContext});
         }
@@ -237,6 +223,8 @@ public class JavaSampler extends Abstrac
                     log.debug(whoAmI() + "\tCreated:\t" + getClassname() + "@"
                             + Integer.toHexString(javaClient.hashCode()));
                 }
+                
+                registerForCleanup(javaClient, context);
             } catch (Exception e) {
                 log.error(whoAmI() + "\tException creating: " + getClassname(), e);
                 javaClient = new ErrorSamplerClient();