[jboss-cvs] JBossAS SVN: r63656 - in trunk/testsuite/src/main/org/jboss/test/classloader: circularity/support/linkage and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jun 26 22:13:34 EDT 2007
Author: scott.stark at jboss.org
Date: 2007-06-26 22:13:34 -0400 (Tue, 26 Jun 2007)
New Revision: 63656
Added:
trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/
trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/X.java
trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/Xsub.java
trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/Y.java
Modified:
trunk/testsuite/src/main/org/jboss/test/classloader/test/BasicLoaderUnitTestCase.java
Log:
JBAS-4441, Force a LinkageError during loading of a class to validate that a legitimate LinkageError does not cause an infinite loop.
Added: trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/X.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/X.java (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/X.java 2007-06-27 02:13:34 UTC (rev 63656)
@@ -0,0 +1,10 @@
+package org.jboss.test.classloader.circularity.support.linkage;
+
+public class X
+{
+ private Y y;
+ X(Y y)
+ {
+ this.y = y;
+ }
+}
Property changes on: trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/X.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ native
Added: trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/Xsub.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/Xsub.java (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/Xsub.java 2007-06-27 02:13:34 UTC (rev 63656)
@@ -0,0 +1,9 @@
+package org.jboss.test.classloader.circularity.support.linkage;
+
+public class Xsub extends X
+{
+ Xsub(Y y)
+ {
+ super(y);
+ }
+}
Property changes on: trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/Xsub.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ native
Added: trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/Y.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/Y.java (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/Y.java 2007-06-27 02:13:34 UTC (rev 63656)
@@ -0,0 +1,6 @@
+package org.jboss.test.classloader.circularity.support.linkage;
+
+public class Y
+{
+
+}
Property changes on: trunk/testsuite/src/main/org/jboss/test/classloader/circularity/support/linkage/Y.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ native
Modified: trunk/testsuite/src/main/org/jboss/test/classloader/test/BasicLoaderUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/classloader/test/BasicLoaderUnitTestCase.java 2007-06-27 02:10:27 UTC (rev 63655)
+++ trunk/testsuite/src/main/org/jboss/test/classloader/test/BasicLoaderUnitTestCase.java 2007-06-27 02:13:34 UTC (rev 63656)
@@ -29,6 +29,8 @@
import junit.framework.TestSuite;
import junit.framework.Test;
+import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
+import org.jboss.mx.loading.UnifiedClassLoader3;
import org.jboss.mx.loading.UnifiedLoaderRepository3;
import org.jboss.mx.loading.RepositoryClassLoader;
import org.jboss.test.util.ClassMover;
@@ -283,6 +285,65 @@
}
}
+ /**
+ * Force a LinkageError during loading of a class to validate that
+ * a legitimate LinkageError does not cause an infinite loop.
+ * JBAS-4441
+ * @throws Exception
+ */
+ public void testLinkageError() throws Exception
+ {
+ log.info("Begin testLinkageError");
+ UnifiedLoaderRepository3 parentRepo = new UnifiedLoaderRepository3();
+ HeirarchicalLoaderRepository3 repo2 = new HeirarchicalLoaderRepository3(parentRepo);
+ repo2.setUseParentFirst(false);
+ File libDir = new File(jbosstestDeployDir);
+ URL origURL = libDir.toURL();
+ log.info("Lib origURL="+origURL);
+ URL j2 = new URL(origURL, "xsub2.jar");
+ log.info("j2 = "+j2);
+ URL j1 = new URL(origURL, "xsub1.jar");
+ log.info("j1 = "+j1);
+ ClassLoader parent = new ClassLoader()
+ {
+ @Override
+ protected synchronized Class<?> loadClass(String name, boolean resolve)
+ throws ClassNotFoundException
+ {
+ if( name.startsWith("java"))
+ return super.loadClass(name, resolve);
+ throw new ClassNotFoundException("No class loading");
+ }
+ };
+ final UnifiedClassLoader3 ucl0 = new UnifiedClassLoader3(j1, j1, parent, parentRepo);
+ parentRepo.addClassLoader(ucl0);
+ final UnifiedClassLoader3 ucl2 = new UnifiedClassLoader3(j2, j2, parent, repo2)
+ {
+ /**
+ * Throw a LinkageError to trigger the LoadMgr retry logic
+ */
+ @Override
+ public Class loadClassLocally(String name, boolean resolve) throws ClassNotFoundException
+ {
+ if( name.equals("org.jboss.test.classloader.circularity.support.linkage.X") )
+ throw new LinkageError("Cannot load X");
+ return super.loadClassLocally(name, resolve);
+ }
+ };
+ repo2.addClassLoader(ucl2);
+
+ try
+ {
+ Class c = ucl2.loadClass("org.jboss.test.classloader.circularity.support.linkage.Xsub");
+ fail("Was able to load Xsub");
+ }
+ catch(NoClassDefFoundError e)
+ {
+ log.info("Saw NoClassDefFoundError as expected", e);
+ }
+
+ }
+
public static Test suite()
{
TestSuite suite = new TestSuite();
@@ -291,7 +352,7 @@
suite.addTest(new BasicLoaderUnitTestCase("testDeadlockScenario1"));
suite.addTest(new BasicLoaderUnitTestCase("testDeadlockScenario2"));
suite.addTest(new BasicLoaderUnitTestCase("testClasspathOrdering"));
- suite.addTest(new BasicLoaderUnitTestCase("testClasspathOrdering"));
+ suite.addTest(new BasicLoaderUnitTestCase("testLinkageError"));
return suite;
}
}
More information about the jboss-cvs-commits
mailing list