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

Eric Wang yiming.wang at oracle.com
Sat Jan 25 09:24:59 UTC 2014


Hi Stuart,

I have made changes based on your comments. Can you please review again? 
Thanks a lot!
http://cr.openjdk.java.net/~ewang/JDK-8031179/webrev.01/ 
<http://cr.openjdk.java.net/%7Eewang/JDK-8031179/webrev.01/>

Eric
On 2014/1/25 8:53, Stuart Marks wrote:
> Hi Eric,
>
> OK, overall this looks good. There are a few adjustments I'd like you 
> to make before I push it for you. Part of this is to get you to do a 
> more complete job of preparing changesets, and part of it is to make 
> my job as a sponsor easier. :-) Oh, and there a couple style issues as 
> well.
>
> 1. In the LookupIPv6 test, REGISTRY_PORT is capitalized, making it 
> appear to be a constant, when in fact it's a variable that contains 
> the result of calling getUnusedRandomPort(). It's also unclear why it 
> needs to be a static. Just make it a local variable with a typical 
> variable name, e.g.
>
>     int port = TestLibrary.getUnusedRandomPort();
>
> and of course make corresponding name changes where it's used.
>
> 2. The creation of the URL string for Naming.lookup() concatenates two 
> string literals "]" + ":". It's probably better to combine these into 
> a single literal "]:". Actually I think it would be preferable to 
> create this URL string using String.format(), so please do this instead.
>
> 3. Prepare a complete changeset that's committed locally to your 
> repository before running webrev. This changeset should include 
> properly formatted commit comments, including the bugid line and 
> Reviewed-by line, and optionally a Summary line. Recent versions of 
> webrev will export a mercurial changeset and include it in the webrev 
> output, instead of just diffs. Using the changeset I can just import 
> and push it, instead of having to edit the changeset myself manually.
>
> 4. When you post the webrev, you should post updated webrevs under a 
> directory with an incremented sequence number (in this case, 
> webrev.01). That way, links to, and comments on, previous webrevs will 
> not be invalidated.
>
> Thanks,
>
> s'marks
>
> On 1/24/14 1:43 AM, Eric Wang wrote:
>> 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