Code Review Request JDK-8161106 Improve SSLSocket test template
Xuelei Fan
xuelei.fan at oracle.com
Wed Jul 13 05:36:37 UTC 2016
Thanks for the feedback, Artem. Here is the updated webrev per your
suggestions:
http://cr.openjdk.java.net/~xuelei/8161106/webrev.02/
On 7/13/2016 1:03 AM, Artem Smotrakov wrote:
> Hi Xuelei,
>
> I am not an official reviewer, but I have a couple of comments.
>
> 1. line 149: would it be better to check this condition in a loop?
>
clientCondition.await() will wait for 30 seconds. Need no loop any
more. If adding a loop, it may become a potential deadloop and cause
timeout issue.
> 2. Using try-with-resources blocks might simplify doServerSide() a
> little bit (no need to call close() on sockets, and a couple of "try"
> blocks might be probably removed)
>
I considered to use try-with-resources. But as the lock is introduced.
and we want to support socket accept timeout, it more convenient to me
to use the traditional try-finally clauses.
> 3. Minor: it might be better to define timeout values as constants with
> meaningful names.
>
Maybe. Normally, if a number is used only once, I may not define a
field for it.
> 4. Minor: lines 268-273 seem to work, but I am wondering if it would be
> better to use File.separator instead of "/" (someone may run the test on
> Windows, but without Cygwin).
>
I think JDK file I/O would take care of this file separator
interoperability. It's good to use File.separator, but as the path may
contains a few separator in test case following this template, for example:
pathToStores = "../../../../../javax/net/ssl";
Using File.separator would not make nice line.
> 5. SSLSocketSample() constructor, startServer() and startClient() methods:
>
> Recently we've had a couple of test issue where no exception was printed
> on client/server sides. It happened because exceptions were caught and
> stored, but then tests waited infinitely for another thread to finish.
> Then, jtreg just killed the tests. As a result, no exception was printed
> out. It might be better to simplify this code to print out an exception
> right after it's caught, and then throw a runtime exception if
> serverException or clientException are not null. Probably there is a
> side effect that logs may be a little messy sometimes because of lack of
> synchronization, but maybe something like synchronized(System.out) may
> help.
>
This update should be able to avoid the infinitely waiting. Updated to
print the exception message right after it is caught.
> 6. Minor: it might be better to make class constants uppercase
>
> http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367
>
Good to use uppercase. I plan to modify this template to a overridable
one so that test case can extend this template. By then, those fields
will not be declared as constants any more. Let's use the current names
for a while.
Thanks,
Xuelei
>
> Artem
>
> On 07/10/2016 10:16 PM, Xuelei Fan wrote:
>> There is a nice catch of the timeout miss-match during the handling of
>> serverIsReady in doClientSide(). Here is the updated webrev:
>>
>> http://cr.openjdk.java.net/~xuelei/8161106/webrev.01/
>>
>> Thanks,
>> Xuelei
>>
>> On 7/11/2016 11:44 AM, Xuelei Fan wrote:
>>> Hi,
>>>
>>> Please review this enhancement of SSLSocket test template:
>>> http://cr.openjdk.java.net/~xuelei/8161106/webrev.00/
>>>
>>> There are some known issues with the current SSLSocket test template
>>> (test/javax/net/ssl/templates/SSLSocketTemplate.java) in the automation
>>> testing environment:
>>> 1. the client or server can be blocked if the peer run into problems, as
>>> may result in intermittent timeout failure.
>>> 2. the server accepted connection may be not linked to the expected
>>> client. For example, some other test case may try to use and connect to
>>> a free server socket port, unfortunately this port can be actually
>>> opened by the server of SSLSocketTemplate because there is no
>>> synchronization about the free socket port between test cases. It's OK
>>> to run the test singly, but may result in weird intermittent failure in
>>> the automation testing environment.
>>>
>>> The new test template in this update considers the noises above.
>>>
>>> Thanks,
>>> Xuelei
>>>
>
More information about the security-dev
mailing list