Question about the bug https://bugs.openjdk.java.net/browse/JDK-8031179

Eric Wang yiming.wang at oracle.com
Fri Jan 24 09:43:26 UTC 2014


Hi Stuart,

Please review the webrev 
http://cr.openjdk.java.net/~ewang/JDK-8031179/webrev.00/, if you are OK 
with the changes, could you please be my sponsor?

Thanks,
Eric
On 2014/1/24 15:14, Eric Wang wrote:
> Hi Stuart,
> Thanks for the suggestion! sorry for reply this mail late as i was 
> busy on other tasks
> The webrev has been in the internal review process. Based on the 
> suggestion, here is a summary of changes:
>
> 1. Add othervm options to tests:
> java/rmi/Naming/DefaultRegistryPort.java
> java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java
> java/rmi/Naming/LookupNameWithColon.java
> java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java
> sun/rmi/rmic/RMIGenerator/RmicDefault.java
> java/rmi/MarshalledObject/compare/Compare.java
> java/rmi/MarshalledObject/compare/HashCode.java
>
> 2. Remove java/rmi and sun/rmi from othervm.dirs of TEST.ROOT
>
> 3. Filed a another bug 
> https://bugs.openjdk.java.net/browse/JDK-8032629 for exclusiveAccess.dirs
>
> Thanks,
> Eric
>
> On 2014/1/18 8:45, Stuart Marks wrote:
>> Hi Eric,
>>
>> Thanks for doing the analysis of the tests that need /othervm. The 
>> list of tests that don't need /othervm looks good. One subtlety is 
>> this one:
>>
>> java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java 
>>
>>
>> Most activation tests do need /othervm, but this one doesn't, since 
>> all it does is create an ActivationGroupDesc instance, which has no 
>> side effects. This is unusual for the activation APIs, since most of 
>> them are quite intertwined with the rest of the activation subsystem. 
>> So, for this test, the lack of /othervm warrants a comment explaining 
>> why /othervm is unnecessary.
>>
>> Regarding merging of the tests 
>> java/rmi/MarshalledObject/compare/Compare.java and HashCode.java, 
>> this is fairly subtle and not obviously wrong, but it's not obviously 
>> right either. Note that different jtreg tests -- even in agentvm or 
>> samevm mode -- load the test class in a fresh classloader, which 
>> means that the statics are reinitialized. This provides some degree 
>> of isolation of the tests even when they're reusing the same JVM. By 
>> contrast, calling the two different methods from within the same test 
>> exposes the second one to initializations left from the first one. In 
>> addition (though I'm not too concerned about this) if the first test 
>> fails the second won't be run at all. Merging these tests is kind of 
>> out of scope for this particular bug, and since I wasn't fully able 
>> to convince myself that the merged tests have the same semantics as 
>> the unmerged tests, I'd prefer not to see the merging of these tests 
>> as part of this changeset.
>>
>> (Some cleanup of these two tests is probably warranted eventually. 
>> I'd take a different approach of merging and refactoring the sources 
>> but keeping them as separate test runs, using two @run tags. But we 
>> should work on that separately. Meanwhile, the overhead of having 
>> these as separate tests is minimal, especially if they're not run in 
>> /othervm mode.)
>>
>> I don't think the removal of java/rmi/Naming from 
>> exclusiveAccess.dirs is safe at this point. The 
>> DefaultRegistryPort.java test uses the default registry port, not a 
>> unique one. Conceptually it would need to be converted to use the 
>> TestLibrary unique port stuff, but the test is actually about using 
>> the default port. So, the solution here isn't obvious.
>>
>> In addition, the 
>> java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java test also 
>> uses the default registry port. It too will need to converted before 
>> java/rmi/Naming is removed from exclusiveAccess.dirs.
>>
>> The java/rmi/Naming/LookupIPv6.java test was converted to use the 
>> TestLibrary unique port technique, but only partially. The registry 
>> is created on the unique port, but the Naming.lookup() call on the 
>> last line of the test doesn't provide a port number, so it does the 
>> lookup on the default port instead. This will cause the test to fail 
>> in almost all cases.
>>
>> I have to ask, did you run this test with your modifications?
>>
>> (Well, the test would pass if IPv6 is not enabled on the machine 
>> running the test, but it only passes because the part of the test 
>> that creates and uses the registry is bypassed entirely if IPv6 is 
>> not enabled. If you're modifying code, you need to take 
>> responsibility for ensuring that the code being modified is actually 
>> being run and is doing what you expect.)
>>
>> LookupIPv6.java also needs to have these lines added to the test tags:
>>    * @bug 4402708
>> + * @library ../testlibrary
>> + * @build TestLibrary
>>    * @run main/othervm -Djava.net.preferIPv6Addresses=true LookupIPv6
>> (Their absence will cause the test also to fail in a clean build, but 
>> the test will find a TestLibrary class if one had been compiled by a 
>> previous test that had required it.)
>>
>> Maybe we should separate the othervm changes (removal of the rmi dirs 
>> from othervm.dirs, and addition of /othervm) from the 
>> exclusiveAccess.dirs changes. A separate bug would be filed for 
>> exclusiveAccess.dirs. I know this means the bug count won't go down, 
>> but dealing with exclusiveAccess.dirs means that the logic of various 
>> tests will need to be change to use the unique port mechanism. This 
>> is a fair chunk of work and it's logically distinct from the othervm 
>> work.
>>
>> If we also remove the merging of the MarshalledObject tests, I think 
>> we can proceed with the othervm changes.
>>
>> Eric, can you make these changes and send out another webrev?
>>
>> Thanks.
>>
>> s'marks
>>
>>
>>
>> On 1/16/14 7:18 AM, Eric Wang wrote:
>>> Hi Stuart,
>>>
>>> I have generated a webrev for review, can you please help to check 
>>> whether the changes are OK.
>>> http://cr.openjdk.java.net/~ewang/JDK-8031179/webrev.00/ 
>>> <http://cr.openjdk.java.net/%7Eewang/JDK-8031179/webrev.00/>
>>>
>>> Also need your help to confirm that the rest 9 tests in previous 
>>> mail don't need the /othervm option indeed.
>>>
>>> Thanks,
>>> Eric
>>> On 2014/1/16 22:55, Eric Wang wrote:
>>>> Hi Stuart,
>>>>
>>>> I'm working on the bug 
>>>> https://bugs.openjdk.java.net/browse/JDK-8031179 to add /othervm 
>>>> option to rmi tests, so they can removed from the item othervm.dir 
>>>> and exclusiveAccess.dirs.
>>>> By searching the directories java/rmi, sun/rmi and java/rmi/Naming, 
>>>> there are 14 tests without othervm option, but only 5 tests need to 
>>>> the /othervm tag. they are:
>>>>
>>>> Tests need /othervm option:
>>>> java/rmi/Naming/DefaultRegistryPort.java
>>>> java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java
>>>> java/rmi/Naming/LookupNameWithColon.java
>>>> java/rmi/server/UnicastRemoteObject/exportObject/GcDuringExport.java
>>>> sun/rmi/rmic/RMIGenerator/RmicDefault.java
>>>>
>>>> Tests don't need the /othervm option:
>>>> java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java 
>>>>
>>>> java/rmi/MarshalledObject/compare/Compare.java
>>>> java/rmi/MarshalledObject/compare/HashCode.java
>>>> java/rmi/MarshalledObject/compare/NullReference.java
>>>> java/rmi/server/Unmarshal/PrimitiveClasses.java
>>>> sun/rmi/log/ReliableLog/LogAlignmentTest.java
>>>> sun/rmi/log/ReliableLog/Recovery.java
>>>> sun/rmi/log/ReliableLog/SnapshotSize.java
>>>> sun/rmi/rmic/classpath/RMICClassPathTest.java
>>>>
>>>> Also i have a bit confuse about the test Compare.java and 
>>>> HashCode.java in java/rmi/MarshalledObject/compare directory, as 
>>>> they should be merged into one test so that we don't need to add 
>>>> additional /othervm option for 2 test.
>>>>
>>>> Thanks,
>>>> Eric
>>>>
>>>
>>
>




More information about the core-libs-dev mailing list