[jboss-cvs] JBossAS SVN: r71730 - in trunk/testsuite/src/main/org/jboss/test/classloader/leak: test and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Apr 4 15:22:11 EDT 2008
Author: bstansberry at jboss.com
Date: 2008-04-04 15:22:11 -0400 (Fri, 04 Apr 2008)
New Revision: 71730
Modified:
trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java
trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/LeakAnalyzer.java
trunk/testsuite/src/main/org/jboss/test/classloader/leak/test/ClassloaderLeakTestBase.java
Log:
Sync classloader leak tests with 4.x branch
Modified: trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java 2008-04-04 19:09:21 UTC (rev 71729)
+++ trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/ClassLoaderStore.java 2008-04-04 19:22:11 UTC (rev 71730)
@@ -21,9 +21,14 @@
*/
package org.jboss.test.classloader.leak.clstore;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import java.io.PrintStream;
+import java.io.Serializable;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
@@ -167,10 +172,10 @@
private void fillMemory(WeakReference ref)
{
Runtime rt = Runtime.getRuntime();
-
- for (int i = 0; i < 15; i++)
+ int[] adds = { 0, 10, 20, 30, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 };
+ for (int i = 0; i < adds.length; i++)
{
- int toAdd = Math.min(i, 4);
+ int toAdd = adds[i];
System.gc();
if (ref.get() == null)
@@ -179,9 +184,10 @@
// create garbage, filling a larger and larger % of
// free memory on each loop
long avail = rt.freeMemory();
- int create = (int) (avail / 100 * (95 + toAdd));
+ int create = (int) (avail / 1000 * (950 + toAdd));
+ String pct = (95 + (toAdd/10)) + "." + (toAdd - ((toAdd/10) * 10));
int bucket = create / 1000;
- log.info("Filling " + (95 + toAdd) + "% of free memory. Free memory=" + avail +
+ log.info("Filling " + pct + "% of free memory. Free memory=" + avail +
" Total Memory=" + rt.totalMemory() + " Max Memory=" + rt.maxMemory());
try
@@ -197,6 +203,23 @@
}
}
+ try
+ {
+ ByteArrayOutputStream byteout = new ByteArrayOutputStream();
+ ObjectOutputStream out = new ObjectOutputStream(byteout);
+
+ out.writeObject(new Dummy());
+
+ ByteArrayInputStream byteInput = new ByteArrayInputStream(byteout.toByteArray());
+ ObjectInputStream input = new ObjectInputStream(byteInput);
+ input.readObject();
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
if (ref.get() != null)
System.gc();
}
@@ -205,4 +228,10 @@
{
classloaders.remove(key);
}
+
+ /** Used just to serialize anything and release SoftCache on java Serialization */
+ private static class Dummy implements Serializable
+ {
+ private static final long serialVersionUID = 1L;
+ }
}
Modified: trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/LeakAnalyzer.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/LeakAnalyzer.java 2008-04-04 19:09:21 UTC (rev 71729)
+++ trunk/testsuite/src/main/org/jboss/test/classloader/leak/clstore/LeakAnalyzer.java 2008-04-04 19:22:11 UTC (rev 71730)
@@ -58,6 +58,23 @@
super();
}
+ public boolean isActive()
+ {
+ // System.loadLibrary fails if it is called twice, which it will
+ // be if this class is redeployed. So, the first time we get a positive
+ // result, store it in a system property, and thereafter return
+ // the system property
+ String existing = System.getProperty("jboss.test.jbossAgent.avail");
+ if (existing != null)
+ return Boolean.parseBoolean(existing);
+
+ boolean active = super.isActive();
+ System.setProperty("jboss.test.jbossAgent.avail", Boolean.toString(active));
+ return active;
+ }
+
+
+
/**
* Show the reference holders tree of an object. This returns a report you
* can visualize through MBean.
Modified: trunk/testsuite/src/main/org/jboss/test/classloader/leak/test/ClassloaderLeakTestBase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/classloader/leak/test/ClassloaderLeakTestBase.java 2008-04-04 19:09:21 UTC (rev 71729)
+++ trunk/testsuite/src/main/org/jboss/test/classloader/leak/test/ClassloaderLeakTestBase.java 2008-04-04 19:22:11 UTC (rev 71730)
@@ -110,7 +110,7 @@
throws Exception
{
try
- {
+ {
undeploy(deployment);
deployments.remove(deployment);
}
@@ -119,7 +119,10 @@
if (propagateFailure)
throw e;
else
+ {
log.error("Exception during undeploy of " + deployment, e);
+ deployments.remove(deployment);
+ }
}
}
@@ -286,11 +289,18 @@
private void removeClassLoader(String key) throws Exception
{
- MBeanServerConnection adaptor = delegate.getServer();
- ObjectName on = new ObjectName(ClassLoaderTrackerMBean.OBJECT_NAME);
- Object[] params = { key };
- String[] signature = new String[] { String.class.getName() };
- adaptor.invoke(on, "removeClassLoader", params, signature);
+ try
+ {
+ MBeanServerConnection adaptor = delegate.getServer();
+ ObjectName on = new ObjectName(ClassLoaderTrackerMBean.OBJECT_NAME);
+ Object[] params = { key };
+ String[] signature = new String[] { String.class.getName() };
+ adaptor.invoke(on, "removeClassLoader", params, signature);
+ }
+ catch (Exception e)
+ {
+ log.error("Caught exception removing classloader under key " + key, e);
+ }
}
private void flushSecurityCache(String domain) throws Exception
More information about the jboss-cvs-commits
mailing list