You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@river.apache.org by Peter Firmstone <ji...@zeus.net.au> on 2009/11/12 22:49:18 UTC

qa tests

I'm running into problems with the following test, it doesn't have 
jsk-policy.jar on it's classpath

Anyone know where to set the classpath for this test?

The missing class file 
org.apache.river.security.concurrent.ConcurrentPermissions is in 
jsk-policy.jar

I haven't got jsk-policy installed in jre/lib/etc/

testClass=DelayDiscoveryAfterDiscard
testCategories=locatordiscovery,locatordiscovery_impl,impllocatordiscovery
include0=locatordiscovery.properties
include1=com/sun/jini/test/share/reggie1_0.properties
com.sun.jini.test.impl.locatordiscovery.discardDelayFirstWait=5000
com.sun.jini.test.impl.locatordiscovery.discardDelay=30000

This is where I'm running into difficulty:

Running 
com/sun/jini/test/impl/locatordiscovery/DelayDiscoveryAfterDiscard.td
Time is Fri Nov 13 04:46:43 EST 2009
Starting test in separate process with command:
/usr/jdk/instances/jdk1.6.0/jre/bin/java 
-Djava.security.policy=file:/opt/src/ApacheRiver/trunk/qa/harness/policy/defaulttest.policy 
-cp 
/opt/src/ApacheRiver/trunk/qa/lib/jiniharness.jar:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar:/opt/src/ApacheRiver/trunk/lib/jsk-platform.jar:/opt/src/ApacheRiver/trunk/lib/jsk-lib.jar 
-client -Dcom.sun.jini.jsk.port=8080 -Dcom.sun.jini.qa.port=8081 
-Dcom.sun.jini.jsk.home=/opt/src/ApacheRiver/trunk 
-Dcom.sun.jini.qa.home=/opt/src/ApacheRiver/trunk/qa 
-Dcom.sun.jini.qa.harness.harnessJar=/opt/src/ApacheRiver/trunk/qa/lib/jiniharness.jar 
-Dcom.sun.jini.qa.harness.testJar=/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar 
-Dcom.sun.jini.qa.harness.runjiniserver=true 
-Dcom.sun.jini.qa.harness.runkitserver=true 
-Djava.security.properties=file:/opt/src/ApacheRiver/trunk/qa/harness/trust/dynamic-policy.properties 
-Djava.util.logging.config.file=/opt/src/ApacheRiver/trunk/qa/src/com/sun/jini/test/resources/qa1.logging 
-Dcom.sun.jini.test.home=/opt/src/ApacheRiver/trunk/qa 
-Dcom.sun.jini.test.port=8082 
-Dcom.sun.jini.qa.harness.policies=jar:file:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar!/com/sun/jini/test/resources/jinitest.policy 
-Djava.ext.dirs=/usr/jdk/instances/jdk1.6.0/jre/lib/ext:/usr/jdk/packages/lib/ext:/opt/src/ApacheRiver/trunk/qa/lib-ext:/opt/src/ApacheRiver/trunk/lib-ext 
-Djava.security.debug=access com.sun.jini.qa.harness.MasterTest 
com/sun/jini/test/impl/locatordiscovery/DelayDiscoveryAfterDiscard.td

TIME: 04:46:45

MasterTest.doTest INFO:
============================== CALLING SETUP() 
==============================

13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/qa/lib/], port 8081]

13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/lib-dl/], port 8080]

13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/qa/lib/], port 8082]

NonActGrp-out: Exception in thread "main" 
java.lang.NoClassDefFoundError: 
org/apache/river/security/concurrent/ConcurrentPermissions
NonActGrp-out:     at java.lang.Class.forName0(Native Method)
NonActGrp-out:     at java.lang.Class.forName(Class.java:247)
NonActGrp-out:     at sun.misc.Service$LazyIterator.next(Service.java:271)
NonActGrp-out:     at 
java.rmi.server.RMIClassLoader.initializeProvider(RMIClassLoader.java:688)
NonActGrp-out:     at 
java.rmi.server.RMIClassLoader.access$000(RMIClassLoader.java:93)
NonActGrp-out:     at 
java.rmi.server.RMIClassLoader$1.run(RMIClassLoader.java:103)
NonActGrp-out:     at java.security.AccessController.doPrivileged(Native 
Method)
NonActGrp-out:     at 
java.rmi.server.RMIClassLoader.<clinit>(RMIClassLoader.java:100)
NonActGrp-out:     at 
sun.rmi.server.MarshalOutputStream.annotateClass(MarshalOutputStream.java:75)
NonActGrp-out:     at 
java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1250)
NonActGrp-out:     at 
java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1203)
NonActGrp-out:     at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1387)
NonActGrp-out:     at 
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
NonActGrp-out:     at 
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
NonActGrp-out:     at 
java.rmi.MarshalledObject.<init>(MarshalledObject.java:101)
NonActGrp-out:     at 
com.sun.jini.qa.harness.NonActivatableGroupImpl.main(Unknown Source)
NonActGrp-out: Caused by: java.lang.ClassNotFoundException: 
org.apache.river.security.concurrent.ConcurrentPermissions
NonActGrp-out:     at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
NonActGrp-out:     at java.security.AccessController.doPrivileged(Native 
Method)
NonActGrp-out:     at 
java.net.URLClassLoader.findClass(URLClassLoader.java:188)
NonActGrp-out:     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
NonActGrp-out:     at 
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
NonActGrp-out:     at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
NonActGrp-out:     at 
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
NonActGrp-out:     ... 16 more


Re: qa tests

Posted by Sim IJskes - QCG <si...@qcg.nl>.
The doc target in the qa/build.xml complains about memory under linux as 
well. I've increased it stepwise to 256M and now it stopped complaining.

Do you want a patch, or can you fix it without? :-)

Gr. Sim

-- 
QCG, Software voor het MKB, 071-5890970, http://www.qcg.nl
Quality Consultancy Group b.v., Leiderdorp, Kvk Leiden: 28088397

Re: qa tests

Posted by Peter Firmstone <ji...@zeus.net.au>.
The patch is now available on River-323

Regards,

Peter.

Peter Firmstone wrote:
> Sim IJskes - QCG wrote:
>> Peter Firmstone wrote:
>>> I've also created a new interface RevokeablePermissionCollection, 
>>> with the ability to revoke(Permission ... permission) for read write 
>>> PermissionCollection's  and revokeAll(Permission permission) for 
>>> read only and read write PermissionCollection's.  My implementation 
>>> wraps any existing PermissionCollection, the wrapper is also using a 
>>> ReentrantReadWriteLock to allow concurrent reads and synchronized 
>>> writes.  I figured this would fit in nicely with DynamicPolicy.
>>
>> Am i right in thinking that this would help to make jini more 
>> 'embeddable'?
>>
>> Gr. Sim
>>
> I think so, it's still an early implementation, I don't understand the 
> full ramifications yet. It should benefit any environment where it is 
> undesirable to shut down the jvm to remove Permission's.
>
> Regards,
>
> Peter.
>


Re: qa tests

Posted by Peter Firmstone <ji...@zeus.net.au>.
Sim IJskes - QCG wrote:
> Peter Firmstone wrote:
>> I've also created a new interface RevokeablePermissionCollection, 
>> with the ability to revoke(Permission ... permission) for read write 
>> PermissionCollection's  and revokeAll(Permission permission) for read 
>> only and read write PermissionCollection's.  My implementation wraps 
>> any existing PermissionCollection, the wrapper is also using a 
>> ReentrantReadWriteLock to allow concurrent reads and synchronized 
>> writes.  I figured this would fit in nicely with DynamicPolicy.
>
> Am i right in thinking that this would help to make jini more 
> 'embeddable'?
>
> Gr. Sim
>
I think so, it's still an early implementation, I don't understand the 
full ramifications yet. It should benefit any environment where it is 
undesirable to shut down the jvm to remove Permission's.

Regards,

Peter.

Re: qa tests

Posted by Sim IJskes - QCG <si...@qcg.nl>.
Peter Firmstone wrote:
> I've also created a new interface RevokeablePermissionCollection, with 
> the ability to revoke(Permission ... permission) for read write 
> PermissionCollection's  and revokeAll(Permission permission) for read 
> only and read write PermissionCollection's.  My implementation wraps any 
> existing PermissionCollection, the wrapper is also using a 
> ReentrantReadWriteLock to allow concurrent reads and synchronized 
> writes.  I figured this would fit in nicely with DynamicPolicy.

Am i right in thinking that this would help to make jini more 'embeddable'?

Gr. Sim

Re: qa tests

Posted by Peter Firmstone <ji...@zeus.net.au>.
Peter Firmstone wrote:
> I'm implementing a replacement for java.security.Permissions called 
> ConcurrentPermissions.
>
> The majority of tests (jtreg) are passing, however I haven't committed 
> this due to the about to be released River 2.2.0 still supporting Java 
> 1.4 (we voted on this some time back) and my implementation using Java 
> 5 language and libraries.
>
> I've also created a new interface RevokeablePermissionCollection, 

I've changed my mind, it's now an abstract class, to reduce instanceof 
checks and upcasts.

> with the ability to revoke(Permission ... permission) for read write 
> PermissionCollection's  and revokeAll(Permission permission) for read 
> only and read write PermissionCollection's.  My implementation wraps 
> any existing PermissionCollection, the wrapper is also using a 
> ReentrantReadWriteLock to allow concurrent reads and synchronized 
> writes.  I figured this would fit in nicely with DynamicPolicy.
>
> Seeing its almost finished, I'd be prepared to commit it if no one has 
> any objections.  I'd like a way to make it's use optional but haven't 
> thought that part out yet.
>
> I'll post a patch update on jira River-323 soon, then I'll commit your 
> patches.
>
> Regards,
>
> Peter.
>
> Sim IJskes - QCG wrote:
>> Peter Firmstone wrote:
>>> I'm running into problems with the following test, it doesn't have 
>>> jsk-policy.jar on it's classpath
>>>
>>> Anyone know where to set the classpath for this test?
>>>
>>> The missing class file 
>>> org.apache.river.security.concurrent.ConcurrentPermissions is in 
>>> jsk-policy.jar
>>>
>>
>> I'm running the test from the trunk release (r834002) and a can't 
>> find a org.apache.river class. It doesn't either though.
>>
>> Where can i find the org.apache.river stuff?
>>
>> Gr. Sim
>>
>
>


Re: qa tests

Posted by Peter Firmstone <ji...@zeus.net.au>.
I'm implementing a replacement for java.security.Permissions called 
ConcurrentPermissions.

The majority of tests (jtreg) are passing, however I haven't committed 
this due to the about to be released River 2.2.0 still supporting Java 
1.4 (we voted on this some time back) and my implementation using Java 5 
language and libraries.

I've also created a new interface RevokeablePermissionCollection, with 
the ability to revoke(Permission ... permission) for read write 
PermissionCollection's  and revokeAll(Permission permission) for read 
only and read write PermissionCollection's.  My implementation wraps any 
existing PermissionCollection, the wrapper is also using a 
ReentrantReadWriteLock to allow concurrent reads and synchronized 
writes.  I figured this would fit in nicely with DynamicPolicy.

Seeing its almost finished, I'd be prepared to commit it if no one has 
any objections.  I'd like a way to make it's use optional but haven't 
thought that part out yet.

I'll post a patch update on jira River-323 soon, then I'll commit your 
patches.

Regards,

Peter.

Sim IJskes - QCG wrote:
> Peter Firmstone wrote:
>> I'm running into problems with the following test, it doesn't have 
>> jsk-policy.jar on it's classpath
>>
>> Anyone know where to set the classpath for this test?
>>
>> The missing class file 
>> org.apache.river.security.concurrent.ConcurrentPermissions is in 
>> jsk-policy.jar
>>
>
> I'm running the test from the trunk release (r834002) and a can't find 
> a org.apache.river class. It doesn't either though.
>
> Where can i find the org.apache.river stuff?
>
> Gr. Sim
>


Re: qa tests

Posted by Sim IJskes - QCG <si...@qcg.nl>.
Peter Firmstone wrote:
> I'm running into problems with the following test, it doesn't have 
> jsk-policy.jar on it's classpath
> 
> Anyone know where to set the classpath for this test?
> 
> The missing class file 
> org.apache.river.security.concurrent.ConcurrentPermissions is in 
> jsk-policy.jar
> 

I'm running the test from the trunk release (r834002) and a can't find a 
org.apache.river class. It doesn't either though.

Where can i find the org.apache.river stuff?

Gr. Sim

-- 
QCG, Software voor het MKB, 071-5890970, http://www.qcg.nl
Quality Consultancy Group b.v., Leiderdorp, Kvk Leiden: 28088397

Re: qa tests - how to set client jvm classpath?

Posted by Peter Firmstone <ji...@zeus.net.au>.
I'm trying to figure out how to set the default classpath for client 
jvm's so they can see jsk-policy.jar

I've tried setting it in qa/build.xml

and

qaDefaults.properties

never mind will look into it further on the weekend.




Peter Firmstone wrote:
> I'm running into problems with the following test, it doesn't have 
> jsk-policy.jar on it's classpath
>
> Anyone know where to set the classpath for this test?
>
> The missing class file 
> org.apache.river.security.concurrent.ConcurrentPermissions is in 
> jsk-policy.jar
>
> I haven't got jsk-policy installed in jre/lib/etc/
>
> testClass=DelayDiscoveryAfterDiscard
> testCategories=locatordiscovery,locatordiscovery_impl,impllocatordiscovery 
>
> include0=locatordiscovery.properties
> include1=com/sun/jini/test/share/reggie1_0.properties
> com.sun.jini.test.impl.locatordiscovery.discardDelayFirstWait=5000
> com.sun.jini.test.impl.locatordiscovery.discardDelay=30000
>
> This is where I'm running into difficulty:
>
> Running 
> com/sun/jini/test/impl/locatordiscovery/DelayDiscoveryAfterDiscard.td
> Time is Fri Nov 13 04:46:43 EST 2009
> Starting test in separate process with command:
> /usr/jdk/instances/jdk1.6.0/jre/bin/java 
> -Djava.security.policy=file:/opt/src/ApacheRiver/trunk/qa/harness/policy/defaulttest.policy 
> -cp 
> /opt/src/ApacheRiver/trunk/qa/lib/jiniharness.jar:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar:/opt/src/ApacheRiver/trunk/lib/jsk-platform.jar:/opt/src/ApacheRiver/trunk/lib/jsk-lib.jar 
> -client -Dcom.sun.jini.jsk.port=8080 -Dcom.sun.jini.qa.port=8081 
> -Dcom.sun.jini.jsk.home=/opt/src/ApacheRiver/trunk 
> -Dcom.sun.jini.qa.home=/opt/src/ApacheRiver/trunk/qa 
> -Dcom.sun.jini.qa.harness.harnessJar=/opt/src/ApacheRiver/trunk/qa/lib/jiniharness.jar 
> -Dcom.sun.jini.qa.harness.testJar=/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar 
> -Dcom.sun.jini.qa.harness.runjiniserver=true 
> -Dcom.sun.jini.qa.harness.runkitserver=true 
> -Djava.security.properties=file:/opt/src/ApacheRiver/trunk/qa/harness/trust/dynamic-policy.properties 
> -Djava.util.logging.config.file=/opt/src/ApacheRiver/trunk/qa/src/com/sun/jini/test/resources/qa1.logging 
> -Dcom.sun.jini.test.home=/opt/src/ApacheRiver/trunk/qa 
> -Dcom.sun.jini.test.port=8082 
> -Dcom.sun.jini.qa.harness.policies=jar:file:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar!/com/sun/jini/test/resources/jinitest.policy 
> -Djava.ext.dirs=/usr/jdk/instances/jdk1.6.0/jre/lib/ext:/usr/jdk/packages/lib/ext:/opt/src/ApacheRiver/trunk/qa/lib-ext:/opt/src/ApacheRiver/trunk/lib-ext 
> -Djava.security.debug=access com.sun.jini.qa.harness.MasterTest 
> com/sun/jini/test/impl/locatordiscovery/DelayDiscoveryAfterDiscard.td
>
> TIME: 04:46:45
>
> MasterTest.doTest INFO:
> ============================== CALLING SETUP() 
> ==============================
>
> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/qa/lib/], port 
> 8081]
>
> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/lib-dl/], port 
> 8080]
>
> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/qa/lib/], port 
> 8082]
>
> NonActGrp-out: Exception in thread "main" 
> java.lang.NoClassDefFoundError: 
> org/apache/river/security/concurrent/ConcurrentPermissions
> NonActGrp-out:     at java.lang.Class.forName0(Native Method)
> NonActGrp-out:     at java.lang.Class.forName(Class.java:247)
> NonActGrp-out:     at 
> sun.misc.Service$LazyIterator.next(Service.java:271)
> NonActGrp-out:     at 
> java.rmi.server.RMIClassLoader.initializeProvider(RMIClassLoader.java:688) 
>
> NonActGrp-out:     at 
> java.rmi.server.RMIClassLoader.access$000(RMIClassLoader.java:93)
> NonActGrp-out:     at 
> java.rmi.server.RMIClassLoader$1.run(RMIClassLoader.java:103)
> NonActGrp-out:     at 
> java.security.AccessController.doPrivileged(Native Method)
> NonActGrp-out:     at 
> java.rmi.server.RMIClassLoader.<clinit>(RMIClassLoader.java:100)
> NonActGrp-out:     at 
> sun.rmi.server.MarshalOutputStream.annotateClass(MarshalOutputStream.java:75) 
>
> NonActGrp-out:     at 
> java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1250) 
>
> NonActGrp-out:     at 
> java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1203)
> NonActGrp-out:     at 
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1387) 
>
> NonActGrp-out:     at 
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> NonActGrp-out:     at 
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> NonActGrp-out:     at 
> java.rmi.MarshalledObject.<init>(MarshalledObject.java:101)
> NonActGrp-out:     at 
> com.sun.jini.qa.harness.NonActivatableGroupImpl.main(Unknown Source)
> NonActGrp-out: Caused by: java.lang.ClassNotFoundException: 
> org.apache.river.security.concurrent.ConcurrentPermissions
> NonActGrp-out:     at 
> java.net.URLClassLoader$1.run(URLClassLoader.java:200)
> NonActGrp-out:     at 
> java.security.AccessController.doPrivileged(Native Method)
> NonActGrp-out:     at 
> java.net.URLClassLoader.findClass(URLClassLoader.java:188)
> NonActGrp-out:     at 
> java.lang.ClassLoader.loadClass(ClassLoader.java:306)
> NonActGrp-out:     at 
> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
> NonActGrp-out:     at 
> java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> NonActGrp-out:     at 
> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
> NonActGrp-out:     ... 16 more
>
>


Re: qa tests

Posted by Peter Firmstone <ji...@zeus.net.au>.
Note it would also be possible to utilise an OSGi service instead of 
ServiceLoader to manage this sort of pluggability.

Peter Firmstone wrote:
> Initially I replaced all the instances of Permissions with 
> ConcurrentPermissions to maximise testing, but it's purpose is a 
> utility class for DynamicPolicyProvider which lives in jsk-policy.jar  
> However having said that, the class doesn't really need AllPermission, 
> it uses reflection on class constructors to resolve 
> UnresolvedPermission but that's about all it needs.
>
> ConcurrentPermissions totally destabilised GrantPermission, which uses 
> lazy construction and has fields that aren't synchronized, its current 
> stability is reliant on Permissions heavy synchronization and single 
> threadedness.
>
> Ideally, all PermissionCollection instances returned by 
> Permission.getPermissionCollection shouldn't use any internal 
> synchronization, unless implies() is a mutator method, since 
> ConcurrentPermissions manages this for us using a wrapper called 
> MultiReadPermissionCollection.  Last time I looked at Permissions, it 
> synchronized on all calls, it's unnecessary and hampers performance 
> for the average PermissionCollection to try and manage their own 
> synchronization.  A better solution would be similar to what was done 
> with Vector, ArrayList and Collections.
>
> After examining the code, I've decided to reimplement 
> DynamicPolicyProvider and GrantPermission.
>
> I'm writing a service utilising java.util.ServiceLoader called 
> DynamicPolicyProviderSpi so that my implementation is a pluggable 
> component, it  requires Java5, for more limited environments that 
> don't need concurrency, the earlier implementation is smaller and may 
> be more suitable, I intend to make it pluggable also.
>
> In addition, the new implementation will be able to revoke permissions 
> too, rather than just accumulating Permission's over time.
>
> So we'll end up with the choice of two implementations, jsk-policy.jar 
> and jsk-policy-concurrent.jar
>
> Cheers,
>
> Peter.
>
> Gregg Wonderly wrote:
>> I am curious why you put that into jsk-policy.jar?  That class 
>> doesn't have the same requirements for class loading that the 
>> contents of jsk-policy.jar once had does it?
>>
>> Gregg Wonderly
>>
>> Peter Firmstone wrote:
>>> I'm running into problems with the following test, it doesn't have 
>>> jsk-policy.jar on it's classpath
>>>
>>> Anyone know where to set the classpath for this test?
>>>
>>> The missing class file 
>>> org.apache.river.security.concurrent.ConcurrentPermissions is in 
>>> jsk-policy.jar
>>>
>>> I haven't got jsk-policy installed in jre/lib/etc/
>>>
>>> testClass=DelayDiscoveryAfterDiscard
>>> testCategories=locatordiscovery,locatordiscovery_impl,impllocatordiscovery 
>>>
>>> include0=locatordiscovery.properties
>>> include1=com/sun/jini/test/share/reggie1_0.properties
>>> com.sun.jini.test.impl.locatordiscovery.discardDelayFirstWait=5000
>>> com.sun.jini.test.impl.locatordiscovery.discardDelay=30000
>>>
>>> This is where I'm running into difficulty:
>>>
>>> Running 
>>> com/sun/jini/test/impl/locatordiscovery/DelayDiscoveryAfterDiscard.td
>>> Time is Fri Nov 13 04:46:43 EST 2009
>>> Starting test in separate process with command:
>>> /usr/jdk/instances/jdk1.6.0/jre/bin/java 
>>> -Djava.security.policy=file:/opt/src/ApacheRiver/trunk/qa/harness/policy/defaulttest.policy 
>>> -cp 
>>> /opt/src/ApacheRiver/trunk/qa/lib/jiniharness.jar:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar:/opt/src/ApacheRiver/trunk/lib/jsk-platform.jar:/opt/src/ApacheRiver/trunk/lib/jsk-lib.jar 
>>> -client -Dcom.sun.jini.jsk.port=8080 -Dcom.sun.jini.qa.port=8081 
>>> -Dcom.sun.jini.jsk.home=/opt/src/ApacheRiver/trunk 
>>> -Dcom.sun.jini.qa.home=/opt/src/ApacheRiver/trunk/qa 
>>> -Dcom.sun.jini.qa.harness.harnessJar=/opt/src/ApacheRiver/trunk/qa/lib/jiniharness.jar 
>>> -Dcom.sun.jini.qa.harness.testJar=/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar 
>>> -Dcom.sun.jini.qa.harness.runjiniserver=true 
>>> -Dcom.sun.jini.qa.harness.runkitserver=true 
>>> -Djava.security.properties=file:/opt/src/ApacheRiver/trunk/qa/harness/trust/dynamic-policy.properties 
>>> -Djava.util.logging.config.file=/opt/src/ApacheRiver/trunk/qa/src/com/sun/jini/test/resources/qa1.logging 
>>> -Dcom.sun.jini.test.home=/opt/src/ApacheRiver/trunk/qa 
>>> -Dcom.sun.jini.test.port=8082 
>>> -Dcom.sun.jini.qa.harness.policies=jar:file:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar!/com/sun/jini/test/resources/jinitest.policy 
>>> -Djava.ext.dirs=/usr/jdk/instances/jdk1.6.0/jre/lib/ext:/usr/jdk/packages/lib/ext:/opt/src/ApacheRiver/trunk/qa/lib-ext:/opt/src/ApacheRiver/trunk/lib-ext 
>>> -Djava.security.debug=access com.sun.jini.qa.harness.MasterTest 
>>> com/sun/jini/test/impl/locatordiscovery/DelayDiscoveryAfterDiscard.td
>>>
>>> TIME: 04:46:45
>>>
>>> MasterTest.doTest INFO:
>>> ============================== CALLING SETUP() 
>>> ==============================
>>>
>>> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
>>> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/qa/lib/], 
>>> port 8081]
>>>
>>> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
>>> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/lib-dl/], 
>>> port 8080]
>>>
>>> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
>>> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/qa/lib/], 
>>> port 8082]
>>>
>>> NonActGrp-out: Exception in thread "main" 
>>> java.lang.NoClassDefFoundError: 
>>> org/apache/river/security/concurrent/ConcurrentPermissions
>>> NonActGrp-out:     at java.lang.Class.forName0(Native Method)
>>> NonActGrp-out:     at java.lang.Class.forName(Class.java:247)
>>> NonActGrp-out:     at 
>>> sun.misc.Service$LazyIterator.next(Service.java:271)
>>> NonActGrp-out:     at 
>>> java.rmi.server.RMIClassLoader.initializeProvider(RMIClassLoader.java:688) 
>>>
>>> NonActGrp-out:     at 
>>> java.rmi.server.RMIClassLoader.access$000(RMIClassLoader.java:93)
>>> NonActGrp-out:     at 
>>> java.rmi.server.RMIClassLoader$1.run(RMIClassLoader.java:103)
>>> NonActGrp-out:     at 
>>> java.security.AccessController.doPrivileged(Native Method)
>>> NonActGrp-out:     at 
>>> java.rmi.server.RMIClassLoader.<clinit>(RMIClassLoader.java:100)
>>> NonActGrp-out:     at 
>>> sun.rmi.server.MarshalOutputStream.annotateClass(MarshalOutputStream.java:75) 
>>>
>>> NonActGrp-out:     at 
>>> java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1250) 
>>>
>>> NonActGrp-out:     at 
>>> java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1203)
>>> NonActGrp-out:     at 
>>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1387) 
>>>
>>> NonActGrp-out:     at 
>>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>>> NonActGrp-out:     at 
>>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
>>> NonActGrp-out:     at 
>>> java.rmi.MarshalledObject.<init>(MarshalledObject.java:101)
>>> NonActGrp-out:     at 
>>> com.sun.jini.qa.harness.NonActivatableGroupImpl.main(Unknown Source)
>>> NonActGrp-out: Caused by: java.lang.ClassNotFoundException: 
>>> org.apache.river.security.concurrent.ConcurrentPermissions
>>> NonActGrp-out:     at 
>>> java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>> NonActGrp-out:     at 
>>> java.security.AccessController.doPrivileged(Native Method)
>>> NonActGrp-out:     at 
>>> java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>> NonActGrp-out:     at 
>>> java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>>> NonActGrp-out:     at 
>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
>>> NonActGrp-out:     at 
>>> java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>> NonActGrp-out:     at 
>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>>> NonActGrp-out:     ... 16 more
>>>
>>>
>>
>>
>
>


Re: qa tests

Posted by Peter Firmstone <ji...@zeus.net.au>.
Initially I replaced all the instances of Permissions with 
ConcurrentPermissions to maximise testing, but it's purpose is a utility 
class for DynamicPolicyProvider which lives in jsk-policy.jar  However 
having said that, the class doesn't really need AllPermission, it uses 
reflection on class constructors to resolve UnresolvedPermission but 
that's about all it needs.

ConcurrentPermissions totally destabilised GrantPermission, which uses 
lazy construction and has fields that aren't synchronized, its current 
stability is reliant on Permissions heavy synchronization and single 
threadedness.

Ideally, all PermissionCollection instances returned by 
Permission.getPermissionCollection shouldn't use any internal 
synchronization, unless implies() is a mutator method, since 
ConcurrentPermissions manages this for us using a wrapper called 
MultiReadPermissionCollection.  Last time I looked at Permissions, it 
synchronized on all calls, it's unnecessary and hampers performance for 
the average PermissionCollection to try and manage their own 
synchronization.  A better solution would be similar to what was done 
with Vector, ArrayList and Collections.

After examining the code, I've decided to reimplement 
DynamicPolicyProvider and GrantPermission.

I'm writing a service utilising java.util.ServiceLoader called 
DynamicPolicyProviderSpi so that my implementation is a pluggable 
component, it  requires Java5, for more limited environments that don't 
need concurrency, the earlier implementation is smaller and may be more 
suitable, I intend to make it pluggable also.

In addition, the new implementation will be able to revoke permissions 
too, rather than just accumulating Permission's over time.

So we'll end up with the choice of two implementations, jsk-policy.jar 
and jsk-policy-concurrent.jar

Cheers,

Peter.

Gregg Wonderly wrote:
> I am curious why you put that into jsk-policy.jar?  That class doesn't 
> have the same requirements for class loading that the contents of 
> jsk-policy.jar once had does it?
>
> Gregg Wonderly
>
> Peter Firmstone wrote:
>> I'm running into problems with the following test, it doesn't have 
>> jsk-policy.jar on it's classpath
>>
>> Anyone know where to set the classpath for this test?
>>
>> The missing class file 
>> org.apache.river.security.concurrent.ConcurrentPermissions is in 
>> jsk-policy.jar
>>
>> I haven't got jsk-policy installed in jre/lib/etc/
>>
>> testClass=DelayDiscoveryAfterDiscard
>> testCategories=locatordiscovery,locatordiscovery_impl,impllocatordiscovery 
>>
>> include0=locatordiscovery.properties
>> include1=com/sun/jini/test/share/reggie1_0.properties
>> com.sun.jini.test.impl.locatordiscovery.discardDelayFirstWait=5000
>> com.sun.jini.test.impl.locatordiscovery.discardDelay=30000
>>
>> This is where I'm running into difficulty:
>>
>> Running 
>> com/sun/jini/test/impl/locatordiscovery/DelayDiscoveryAfterDiscard.td
>> Time is Fri Nov 13 04:46:43 EST 2009
>> Starting test in separate process with command:
>> /usr/jdk/instances/jdk1.6.0/jre/bin/java 
>> -Djava.security.policy=file:/opt/src/ApacheRiver/trunk/qa/harness/policy/defaulttest.policy 
>> -cp 
>> /opt/src/ApacheRiver/trunk/qa/lib/jiniharness.jar:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar:/opt/src/ApacheRiver/trunk/lib/jsk-platform.jar:/opt/src/ApacheRiver/trunk/lib/jsk-lib.jar 
>> -client -Dcom.sun.jini.jsk.port=8080 -Dcom.sun.jini.qa.port=8081 
>> -Dcom.sun.jini.jsk.home=/opt/src/ApacheRiver/trunk 
>> -Dcom.sun.jini.qa.home=/opt/src/ApacheRiver/trunk/qa 
>> -Dcom.sun.jini.qa.harness.harnessJar=/opt/src/ApacheRiver/trunk/qa/lib/jiniharness.jar 
>> -Dcom.sun.jini.qa.harness.testJar=/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar 
>> -Dcom.sun.jini.qa.harness.runjiniserver=true 
>> -Dcom.sun.jini.qa.harness.runkitserver=true 
>> -Djava.security.properties=file:/opt/src/ApacheRiver/trunk/qa/harness/trust/dynamic-policy.properties 
>> -Djava.util.logging.config.file=/opt/src/ApacheRiver/trunk/qa/src/com/sun/jini/test/resources/qa1.logging 
>> -Dcom.sun.jini.test.home=/opt/src/ApacheRiver/trunk/qa 
>> -Dcom.sun.jini.test.port=8082 
>> -Dcom.sun.jini.qa.harness.policies=jar:file:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar!/com/sun/jini/test/resources/jinitest.policy 
>> -Djava.ext.dirs=/usr/jdk/instances/jdk1.6.0/jre/lib/ext:/usr/jdk/packages/lib/ext:/opt/src/ApacheRiver/trunk/qa/lib-ext:/opt/src/ApacheRiver/trunk/lib-ext 
>> -Djava.security.debug=access com.sun.jini.qa.harness.MasterTest 
>> com/sun/jini/test/impl/locatordiscovery/DelayDiscoveryAfterDiscard.td
>>
>> TIME: 04:46:45
>>
>> MasterTest.doTest INFO:
>> ============================== CALLING SETUP() 
>> ==============================
>>
>> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
>> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/qa/lib/], port 
>> 8081]
>>
>> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
>> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/lib-dl/], port 
>> 8080]
>>
>> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
>> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/qa/lib/], port 
>> 8082]
>>
>> NonActGrp-out: Exception in thread "main" 
>> java.lang.NoClassDefFoundError: 
>> org/apache/river/security/concurrent/ConcurrentPermissions
>> NonActGrp-out:     at java.lang.Class.forName0(Native Method)
>> NonActGrp-out:     at java.lang.Class.forName(Class.java:247)
>> NonActGrp-out:     at 
>> sun.misc.Service$LazyIterator.next(Service.java:271)
>> NonActGrp-out:     at 
>> java.rmi.server.RMIClassLoader.initializeProvider(RMIClassLoader.java:688) 
>>
>> NonActGrp-out:     at 
>> java.rmi.server.RMIClassLoader.access$000(RMIClassLoader.java:93)
>> NonActGrp-out:     at 
>> java.rmi.server.RMIClassLoader$1.run(RMIClassLoader.java:103)
>> NonActGrp-out:     at 
>> java.security.AccessController.doPrivileged(Native Method)
>> NonActGrp-out:     at 
>> java.rmi.server.RMIClassLoader.<clinit>(RMIClassLoader.java:100)
>> NonActGrp-out:     at 
>> sun.rmi.server.MarshalOutputStream.annotateClass(MarshalOutputStream.java:75) 
>>
>> NonActGrp-out:     at 
>> java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1250) 
>>
>> NonActGrp-out:     at 
>> java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1203)
>> NonActGrp-out:     at 
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1387) 
>>
>> NonActGrp-out:     at 
>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>> NonActGrp-out:     at 
>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
>> NonActGrp-out:     at 
>> java.rmi.MarshalledObject.<init>(MarshalledObject.java:101)
>> NonActGrp-out:     at 
>> com.sun.jini.qa.harness.NonActivatableGroupImpl.main(Unknown Source)
>> NonActGrp-out: Caused by: java.lang.ClassNotFoundException: 
>> org.apache.river.security.concurrent.ConcurrentPermissions
>> NonActGrp-out:     at 
>> java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>> NonActGrp-out:     at 
>> java.security.AccessController.doPrivileged(Native Method)
>> NonActGrp-out:     at 
>> java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>> NonActGrp-out:     at 
>> java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>> NonActGrp-out:     at 
>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
>> NonActGrp-out:     at 
>> java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>> NonActGrp-out:     at 
>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>> NonActGrp-out:     ... 16 more
>>
>>
>
>


Re: qa tests

Posted by Gregg Wonderly <gr...@wonderly.org>.
I am curious why you put that into jsk-policy.jar?  That class doesn't have the 
same requirements for class loading that the contents of jsk-policy.jar once had 
does it?

Gregg Wonderly

Peter Firmstone wrote:
> I'm running into problems with the following test, it doesn't have 
> jsk-policy.jar on it's classpath
> 
> Anyone know where to set the classpath for this test?
> 
> The missing class file 
> org.apache.river.security.concurrent.ConcurrentPermissions is in 
> jsk-policy.jar
> 
> I haven't got jsk-policy installed in jre/lib/etc/
> 
> testClass=DelayDiscoveryAfterDiscard
> testCategories=locatordiscovery,locatordiscovery_impl,impllocatordiscovery
> include0=locatordiscovery.properties
> include1=com/sun/jini/test/share/reggie1_0.properties
> com.sun.jini.test.impl.locatordiscovery.discardDelayFirstWait=5000
> com.sun.jini.test.impl.locatordiscovery.discardDelay=30000
> 
> This is where I'm running into difficulty:
> 
> Running 
> com/sun/jini/test/impl/locatordiscovery/DelayDiscoveryAfterDiscard.td
> Time is Fri Nov 13 04:46:43 EST 2009
> Starting test in separate process with command:
> /usr/jdk/instances/jdk1.6.0/jre/bin/java 
> -Djava.security.policy=file:/opt/src/ApacheRiver/trunk/qa/harness/policy/defaulttest.policy 
> -cp 
> /opt/src/ApacheRiver/trunk/qa/lib/jiniharness.jar:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar:/opt/src/ApacheRiver/trunk/lib/jsk-platform.jar:/opt/src/ApacheRiver/trunk/lib/jsk-lib.jar 
> -client -Dcom.sun.jini.jsk.port=8080 -Dcom.sun.jini.qa.port=8081 
> -Dcom.sun.jini.jsk.home=/opt/src/ApacheRiver/trunk 
> -Dcom.sun.jini.qa.home=/opt/src/ApacheRiver/trunk/qa 
> -Dcom.sun.jini.qa.harness.harnessJar=/opt/src/ApacheRiver/trunk/qa/lib/jiniharness.jar 
> -Dcom.sun.jini.qa.harness.testJar=/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar 
> -Dcom.sun.jini.qa.harness.runjiniserver=true 
> -Dcom.sun.jini.qa.harness.runkitserver=true 
> -Djava.security.properties=file:/opt/src/ApacheRiver/trunk/qa/harness/trust/dynamic-policy.properties 
> -Djava.util.logging.config.file=/opt/src/ApacheRiver/trunk/qa/src/com/sun/jini/test/resources/qa1.logging 
> -Dcom.sun.jini.test.home=/opt/src/ApacheRiver/trunk/qa 
> -Dcom.sun.jini.test.port=8082 
> -Dcom.sun.jini.qa.harness.policies=jar:file:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar!/com/sun/jini/test/resources/jinitest.policy 
> -Djava.ext.dirs=/usr/jdk/instances/jdk1.6.0/jre/lib/ext:/usr/jdk/packages/lib/ext:/opt/src/ApacheRiver/trunk/qa/lib-ext:/opt/src/ApacheRiver/trunk/lib-ext 
> -Djava.security.debug=access com.sun.jini.qa.harness.MasterTest 
> com/sun/jini/test/impl/locatordiscovery/DelayDiscoveryAfterDiscard.td
> 
> TIME: 04:46:45
> 
> MasterTest.doTest INFO:
> ============================== CALLING SETUP() 
> ==============================
> 
> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/qa/lib/], port 8081]
> 
> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/lib-dl/], port 8080]
> 
> 13/11/2009 04:46:46 com.sun.jini.tool.ClassServer run
> INFO: ClassServer started [[/opt/src/ApacheRiver/trunk/qa/lib/], port 8082]
> 
> NonActGrp-out: Exception in thread "main" 
> java.lang.NoClassDefFoundError: 
> org/apache/river/security/concurrent/ConcurrentPermissions
> NonActGrp-out:     at java.lang.Class.forName0(Native Method)
> NonActGrp-out:     at java.lang.Class.forName(Class.java:247)
> NonActGrp-out:     at sun.misc.Service$LazyIterator.next(Service.java:271)
> NonActGrp-out:     at 
> java.rmi.server.RMIClassLoader.initializeProvider(RMIClassLoader.java:688)
> NonActGrp-out:     at 
> java.rmi.server.RMIClassLoader.access$000(RMIClassLoader.java:93)
> NonActGrp-out:     at 
> java.rmi.server.RMIClassLoader$1.run(RMIClassLoader.java:103)
> NonActGrp-out:     at java.security.AccessController.doPrivileged(Native 
> Method)
> NonActGrp-out:     at 
> java.rmi.server.RMIClassLoader.<clinit>(RMIClassLoader.java:100)
> NonActGrp-out:     at 
> sun.rmi.server.MarshalOutputStream.annotateClass(MarshalOutputStream.java:75) 
> 
> NonActGrp-out:     at 
> java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1250)
> NonActGrp-out:     at 
> java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1203)
> NonActGrp-out:     at 
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1387) 
> 
> NonActGrp-out:     at 
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> NonActGrp-out:     at 
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> NonActGrp-out:     at 
> java.rmi.MarshalledObject.<init>(MarshalledObject.java:101)
> NonActGrp-out:     at 
> com.sun.jini.qa.harness.NonActivatableGroupImpl.main(Unknown Source)
> NonActGrp-out: Caused by: java.lang.ClassNotFoundException: 
> org.apache.river.security.concurrent.ConcurrentPermissions
> NonActGrp-out:     at 
> java.net.URLClassLoader$1.run(URLClassLoader.java:200)
> NonActGrp-out:     at java.security.AccessController.doPrivileged(Native 
> Method)
> NonActGrp-out:     at 
> java.net.URLClassLoader.findClass(URLClassLoader.java:188)
> NonActGrp-out:     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
> NonActGrp-out:     at 
> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
> NonActGrp-out:     at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> NonActGrp-out:     at 
> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
> NonActGrp-out:     ... 16 more
> 
>