Author: peter_firmstone Date: Sun Apr 27 11:37:40 2014 New Revision: 1590379
URL: http://svn.apache.org/r1590379 Log: RIVER-336 Update to ClassLoading. Convert remaining tests to utilise the new java.rmi.server.RMIClassLoaderSpi provider in ClassLoading Reduce number of tasks executed in RandomStressTest to avoid OOME on 32 bit platforms. Updated configuration.policy to ensure that all configuration files had sufficient permission to be tested, broken.prop wasn't being tested, not sure how long this has been the case, but it's fixed now. Added: river/jtsk/skunk/qa_refactor/trunk/qa/src/manifest/qa1-io-tests/META-INF/services/java.rmi.server.RMIClassLoaderSpi Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mahalo/RandomStressTest.td river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/config/configurationfile/configurationfile.policy river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/LoadClass_ExceptionTest.td river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/Resolve_LoadClassExceptionTest.td river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/Resolve_LoadClassTest.td river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalledinstance/ObjectMethodsTest.td river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/transport/resources/ssl.policy river/jtsk/skunk/qa_refactor/trunk/qa/src/manifest/qa1/META-INF/services/java.rmi.server.RMIClassLoaderSpi river/jtsk/skunk/qa_refactor/trunk/src/net/jini/loader/ClassLoading.java Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mahalo/RandomStressTest.td URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mahalo/RandomStressTest.td?rev=1590379&r1=1590378&r2=1590379&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mahalo/RandomStressTest.td (original) +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mahalo/RandomStressTest.td Sun Apr 27 11:37:40 2014 @@ -6,4 +6,4 @@ testCategories=txnmanager,txnmanager_imp # value specified in seconds com.sun.jini.qa.harness.timeout=10800 com.sun.jini.test.impl.mahalo.RandomStressTest.parts=200 -com.sun.jini.test.impl.mahalo.RandomStressTest.tasks=10000 +com.sun.jini.test.impl.mahalo.RandomStressTest.tasks=5000 Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/config/configurationfile/configurationfile.policy URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/config/configurationfile/configurationfile.policy?rev=1590379&r1=1590378&r2=1590379&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/config/configurationfile/configurationfile.policy (original) +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/config/configurationfile/configurationfile.policy Sun Apr 27 11:37:40 2014 @@ -17,6 +17,8 @@ grant { permission java.lang.RuntimePermission "setSecurityManager"; permission java.lang.RuntimePermission "setIO"; permission java.lang.RuntimePermission "getProtectionDomain"; + permission java.lang.RuntimePermission "setFactory"; + permission java.lang.RuntimePermission "getenv.SOUL"; permission javax.security.auth.AuthPermission "createLoginContext.com.sun.jini.Test"; permission javax.security.auth.AuthPermission "doAs"; @@ -61,6 +63,7 @@ grant { permission java.io.FilePermission "${java.io.tmpdir}${/}valid.prop", "read,write,delete"; permission java.io.FilePermission "${java.io.tmpdir}${/}valid.prop1","read,write,delete"; permission java.io.FilePermission "${java.io.tmpdir}${/}unexist.prop","read,write,delete"; + permission java.io.FilePermission "${java.io.tmpdir}${/}broken.prop","read,write,delete"; permission java.io.FilePermission "c:\\temp", "read,write,delete"; permission java.io.FilePermission "c:\\temp\\-", "write,delete"; Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/LoadClass_ExceptionTest.td URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/LoadClass_ExceptionTest.td?rev=1590379&r1=1590378&r2=1590379&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/LoadClass_ExceptionTest.td (original) +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/LoadClass_ExceptionTest.td Sun Apr 27 11:37:40 2014 @@ -1,7 +1,7 @@ testClass=LoadClass_ExceptionTest testCategories=io,io_spec testClasspath=${altClasspath}$:<file:lib/qa1-io-marshalinputstream-test.jar> -testjvmargs=-Djava.rmi.server.RMIClassLoaderSpi=com.sun.jini.test.spec.io.util.FakeRMIClassLoaderSpi +testjvmargs=-Dnet.jini.loader.ClassLoading.provider=com.sun.jini.test.spec.io.util.FakeRMIClassLoaderSpi com.sun.jini.test.spec.io.util.fakeArgumentJar=http://${HOST}:${com.sun.jini.test.port}/qa1-io-util-dl.jar com.sun.jini.qa.harness.runkitserver=false Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/Resolve_LoadClassExceptionTest.td URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/Resolve_LoadClassExceptionTest.td?rev=1590379&r1=1590378&r2=1590379&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/Resolve_LoadClassExceptionTest.td (original) +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/Resolve_LoadClassExceptionTest.td Sun Apr 27 11:37:40 2014 @@ -1,7 +1,7 @@ testClass=Resolve_LoadClassExceptionTest testCategories=io,io_spec testClasspath=${altClasspath}$:<file:lib/qa1-io-marshalinputstream-test.jar> -testjvmargs=-Djava.rmi.server.RMIClassLoaderSpi=com.sun.jini.test.spec.io.util.FakeRMIClassLoaderSpi +testjvmargs=-Dnet.jini.loader.ClassLoading.provider=com.sun.jini.test.spec.io.util.FakeRMIClassLoaderSpi com.sun.jini.test.spec.io.util.fakeArgumentJar=http://${HOST}:${com.sun.jini.test.port}/qa1-io-util-dl.jar com.sun.jini.qa.harness.runkitserver=false Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/Resolve_LoadClassTest.td URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/Resolve_LoadClassTest.td?rev=1590379&r1=1590378&r2=1590379&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/Resolve_LoadClassTest.td (original) +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalinputstream/Resolve_LoadClassTest.td Sun Apr 27 11:37:40 2014 @@ -1,7 +1,7 @@ testClass=Resolve_LoadClassTest testCategories=io,io_spec testClasspath=${altClasspath}$:<file:lib/qa1-io-marshalinputstream-test.jar> -testjvmargs=-Djava.rmi.server.RMIClassLoaderSpi=com.sun.jini.test.spec.io.util.FakeRMIClassLoaderSpi +testjvmargs=-Dnet.jini.loader.ClassLoading.provider=com.sun.jini.test.spec.io.util.FakeRMIClassLoaderSpi com.sun.jini.qa.harness.runkitserver=false com.sun.jini.qa.harness.runjiniserver=false include0=../io.properties Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalledinstance/ObjectMethodsTest.td URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalledinstance/ObjectMethodsTest.td?rev=1590379&r1=1590378&r2=1590379&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalledinstance/ObjectMethodsTest.td (original) +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/io/marshalledinstance/ObjectMethodsTest.td Sun Apr 27 11:37:40 2014 @@ -1,7 +1,7 @@ testClass=ObjectMethodsTest testCategories=io,io_spec testClasspath=${altClasspath}$:<file:lib/qa1-io-marshalledinstance-test.jar> -testjvmargs=-Djava.rmi.server.RMIClassLoaderSpi=com.sun.jini.test.spec.io.util.FakeRMIClassLoaderSpi +testjvmargs=-Dnet.jini.loader.ClassLoading.provider=com.sun.jini.test.spec.io.util.FakeRMIClassLoaderSpi com.sun.jini.qa.harness.runkitserver=false com.sun.jini.qa.harness.runjiniserver=false include0=../io.properties Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/transport/resources/ssl.policy URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/transport/resources/ssl.policy?rev=1590379&r1=1590378&r2=1590379&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/transport/resources/ssl.policy (original) +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/jeri/transport/resources/ssl.policy Sun Apr 27 11:37:40 2014 @@ -19,6 +19,8 @@ grant codebase "file:${com.sun.jini.qa.h permission javax.security.auth.AuthPermission "*"; permission java.lang.RuntimePermission "createSecurityManager"; permission java.lang.RuntimePermission "accessClassInPackage.sun.util.logging.resources"; + permission java.lang.RuntimePermission "createClassLoader"; + permission java.lang.RuntimePermission "setFactory"; }; grant codebase "file:${com.sun.jini.qa.harness.testJar}" { @@ -27,6 +29,8 @@ grant codebase "file:${com.sun.jini.qa.h permission java.util.PropertyPermission "*", "read,write"; permission javax.security.auth.AuthPermission "*"; permission java.lang.RuntimePermission "createSecurityManager"; + permission java.lang.RuntimePermission "createClassLoader"; + permission java.lang.RuntimePermission "setFactory"; }; grant codebase "file:${com.sun.jini.jsk.home}${/}lib/jsk-platform.jar" { Added: river/jtsk/skunk/qa_refactor/trunk/qa/src/manifest/qa1-io-tests/META-INF/services/java.rmi.server.RMIClassLoaderSpi URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/manifest/qa1-io-tests/META-INF/services/java.rmi.server.RMIClassLoaderSpi?rev=1590379&view=auto ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/qa/src/manifest/qa1-io-tests/META-INF/services/java.rmi.server.RMIClassLoaderSpi (added) +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/manifest/qa1-io-tests/META-INF/services/java.rmi.server.RMIClassLoaderSpi Sun Apr 27 11:37:40 2014 @@ -0,0 +1 @@ +com.sun.jini.test.spec.io.util.FakeRMIClassLoaderSpi Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/manifest/qa1/META-INF/services/java.rmi.server.RMIClassLoaderSpi URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/manifest/qa1/META-INF/services/java.rmi.server.RMIClassLoaderSpi?rev=1590379&r1=1590378&r2=1590379&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/qa/src/manifest/qa1/META-INF/services/java.rmi.server.RMIClassLoaderSpi (original) +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/manifest/qa1/META-INF/services/java.rmi.server.RMIClassLoaderSpi Sun Apr 27 11:37:40 2014 @@ -1 +1 @@ -com.sun.jini.test.spec.loader.util.QATestPreferredClassProvider \ No newline at end of file +com.sun.jini.test.spec.loader.util.QATestPreferredClassProvider Modified: river/jtsk/skunk/qa_refactor/trunk/src/net/jini/loader/ClassLoading.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/net/jini/loader/ClassLoading.java?rev=1590379&r1=1590378&r2=1590379&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/src/net/jini/loader/ClassLoading.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/src/net/jini/loader/ClassLoading.java Sun Apr 27 11:37:40 2014 @@ -39,6 +39,9 @@ import java.util.concurrent.ExecutionExc import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.FutureTask; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import net.jini.security.Security; @@ -166,7 +169,7 @@ public final class ClassLoading { ); } } - logger.log(Level.CONFIG, "uable to find {0}" , providerName); + logger.log(Level.CONFIG, "uable to find {0}" , name); return null; } }); @@ -577,7 +580,15 @@ public final class ClassLoading { if (loader == null) return Class.forName(name, initialize, loader); ExecutorService exec = loaderMap.get(loader); if (exec == null){ - exec = Executors.newSingleThreadExecutor(new NamedThreadFactory(loader.toString(),true)); + exec = new ThreadPoolExecutor( + 1, + 1, + 0, + TimeUnit.SECONDS, + new LinkedBlockingQueue(), + new NamedThreadFactory(loader.toString(),true), + new ThreadPoolExecutor.CallerRunsPolicy() + ); ExecutorService existed = loaderMap.putIfAbsent(loader, exec); if (existed != null){ exec = existed; @@ -598,6 +609,7 @@ public final class ClassLoading { if (t instanceof SecurityException) throw (SecurityException) t; if (t instanceof ClassNotFoundException ) throw (ClassNotFoundException) t; + if (t instanceof NullPointerException) throw (NullPointerException) t; throw new ClassNotFoundException("Unable to find Class:" + name, t); } }
