RFR(S): 8181592: [TESTBUG] Docker test utils and docker jdk basic test

Leonid Mesnik leonid.mesnik at oracle.com
Wed Oct 4 18:19:36 UTC 2017


Hi

Overall looks good. There few comments:
http://cr.openjdk.java.net/~mseledtsov/8181592.02/test/jtreg-ext/requires/VMProps.java.sdiff.html <http://cr.openjdk.java.net/~mseledtsov/8181592.02/test/jtreg-ext/requires/VMProps.java.sdiff.html>

 307             System.err.println("dockerSupprt() threw exception: " + e);
Missed ‘o’ in Support.

316         p.waitFor();
I think that it is needed to guard execution with timeout. I am not sure that jtreg is going to run properties with timeout.

http://cr.openjdk.java.net/~mseledtsov/8181592.02/test/hotspot/jtreg/runtime/containers/docker/DockerBasicTest.java.html <http://cr.openjdk.java.net/~mseledtsov/8181592.02/test/hotspot/jtreg/runtime/containers/docker/DockerBasicTest.java.html>
28  * @requires (sun.arch.data.model != "32") & (os.family == "linux")
Is it possible to check this inside docker.support and use only “docker.support” property?

http://cr.openjdk.java.net/~mseledtsov/8181592.02/test/lib/jdk/test/lib/containers/docker/DockerRunOptions.java.html <http://cr.openjdk.java.net/~mseledtsov/8181592.02/test/lib/jdk/test/lib/containers/docker/DockerRunOptions.java.html>
44     public DockerRunOptions(){}
Why this empty constructor is needed? 
Does it make also to make this class immutable i.e. init all properties in constructors and have them read-only.

Leonid

> On Sep 28, 2017, at 3:11 PM, Mikhailo Seledtsov <mikhailo.seledtsov at oracle.com> wrote:
> 
> Here is the updated webrev:
>    http://cr.openjdk.java.net/~mseledtsov/8181592.02/
> 
> 
> Leonid, George - thank you for your comments.
> In addition to addressing your feedback, I also did:
>  - implemented @requires docker.support
>  - added dockerRunJava() method and associated data structure DockerRunOptions, for running Java tests inside
>     docker environment, and to account for java opts, test java opts, docker opts, classes and class params
>  - added a simple HelloWorld test case that runs HelloWorld inside a container
>  - ran jtreg with extra Java options, make sure they are added correctly to the docker run command
>  - added docker image cleanup after testing is done
> 
> 
> Please review.
> 
> Misha
> 
> 
> On 9/27/17, 11:00 AM, mikhailo wrote:
>> Leonid,
>> 
>> Thank you for review and constructive feedback. See my comment in line.
>> 
>> 
>> On 09/26/2017 11:19 AM, Leonid Mesnik wrote:
>>> Misha
>>> 
>>> http://cr.openjdk.java.net/~mseledtsov/8181592.00/test/hotspot/jtreg/runtime/containers/docker/DockerBasicTest.java.html <http://cr.openjdk.java.net/%7Emseledtsov/8181592.00/test/hotspot/jtreg/runtime/containers/docker/DockerBasicTest.java.html> 
>>> Copyright is incorrect, need to updated it for GPL.
>> Fixed
>>> 
>>> The Hotspot is Oracle VM name only so test might fail for OpenJDK. I think you need to fix this check.
>> I see. I fixed this by using Platform.vmName which should be correct in all cases. I double-checked with OpenJDK also.
>>> 
>>> The requires checks only that test is executed only on the 64-bit linux. Does it make a sense to introduce more docker-specific check?
>> I agree this is a better way. I will do some prototyping; if such check is feasible and efficient in at requires then I will add it.
>>> 
>>> 
>>> http://cr.openjdk.java.net/~mseledtsov/8181592.00/test/hotspot/jtreg/runtime/containers/docker/Dockerfile-BasicTest.html <http://cr.openjdk.java.net/%7Emseledtsov/8181592.00/test/hotspot/jtreg/runtime/containers/docker/Dockerfile-BasicTest.html> 
>>> Could you please explain why oraclelinux 7.0 is used as a base image for test.
>> I have upgraded to Oracle Linux 7.2. If we have specific requirement I will change it to that. If we have requirements in the future to support multiple OS, I can add Dockerfile generation.
>> For this basic sanity tests I think this should suffice.
>>> 
>>> http://cr.openjdk.java.net/~mseledtsov/8181592.00/test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java.html <http://cr.openjdk.java.net/%7Emseledtsov/8181592.00/test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java.html> 
>>> The content looks fine.
>>> 
>>> I don’t see anything to clean up docker images on the system. Could you please explain how tests are going to cleanup images.
>> To clean up containers I will add "--rm" to the 'docker run' command. This should ensure that container data is removed after container stops.
>> As for the image - I use the same image name. The image will stay in the local registry unless manually removed. I should probably do 'docker rmi' at the end of the test to clean this up.
>> 
>> 
>> Once I implement these changes I will send the updated webrev.
>> 
>> Thank you,
>> Misha
>>> 
>>> Leonid
>>> 
>>> 
>>>> On Sep 21, 2017, at 5:58 PM, mikhailo <mikhailo.seledtsov at oracle.com <mailto:mikhailo.seledtsov at oracle.com>> wrote:
>>>> 
>>>> Please review this initial drop of Docker test utils and a sanity test. This change lays ground
>>>> for further test development and test utils improvement in this area.
>>>> 
>>>>    JBS: https://bugs.openjdk.java.net/browse/JDK-8181592
>>>>    Webrev: http://cr.openjdk.java.net/~mseledtsov/8181592.00/ <http://cr.openjdk.java.net/%7Emseledtsov/8181592.00/>
>>>>    Testing:
>>>>       - run this test on machine with Docker enabled - works
>>>>       - run this test on Linux-x64 with no Docker engine or Docker disabled - test skipped (as expected)
>>>>       - run this test on automated system - in progress
>>>> 
>>>> 
>>>> Thank you,
>>>> Misha
>>>> 
>>> 
>> 



More information about the hotspot-runtime-dev mailing list