On 7/17/19 11:37 AM, Igor Ignatyev wrote:
Hi Severin,
the updated webrev looks good to me, please see a couple comments below.
Cheers,
-- Igor
On Jul 17, 2019, at 10:34 AM, Severin Gehwolf <sgehw...@redhat.com
<mailto:sgehw...@redhat.com>> wrote:
Hi Misha,
On Wed, 2019-07-17 at 10:22 -0700,mikhailo.seledt...@oracle.com
<mailto:mikhailo.seledt...@oracle.com>wrote:
Hi Severin,
On 7/17/19 5:44 AM, Severin Gehwolf wrote:
Hi Igor, Misha,
On Tue, 2019-07-16 at 11:49 -0700, Igor Ignatyev wrote:
Hi Severin,
I don't think that tests (or test libraries for that matter) should
be responsible for setting correct PATH value, it should be a part of
host configuration procedure (tests can/should check that all
required bins are available though). in other words, I'd prefer if
you remove 'env.put("PATH", ...)' lines from both DockerTestUtils and
TestJFREvents. the rest looks good to me.
Updated webrev:
http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8227642/02/webrev/
No more additions to PATH are being done.
I've discovered that VMProps.java which defines "docker.required", used
the "docker" binary even for podman test runs. This ended up not
running most of the tests even with -Djdk.test.docker.command=podman
specified.
Good catch.
should we rename docker.support and DOCKER_COMMAND to something more
abstract?
Now that more container technologies are coming online we could consider
more generic names for these properties/variables.
Here are some thoughts:
- container.support (CONTAINER_COMMAND) - may be too generic
- linux.container.support (LINUX_CONTAINER_COMMAND) - more narrow
- even more narrow/specific: oci.container.support
(OCI_CONTAINER_COMMAND)
OCI in this case is " Open Container Initiative", ( Linux
Foundation project to design open standards for Linux Container technology)
I believe both Docker and Podman are OCI compliant.
However, I would recommend to do this work as part of a new RFE. If we
agree, I will create an RFE, and we can continue discussion in the
context of that RFE.
Thank you,
Misha
I've fixed that by moving DOCKER_COMMAND to Platform.java so
that it can be used in both places.
Sounds good to me.
(of course, the alternative would be to import
jdk.test.lib.containers.docker.DockerTestUtils into VMProps.java -- not
sure if there are any potential problems doing it this way)
I've tried that but for some reason this was a problem and VMProps
failed to compile. I don't know exactly how those jtreg extensions work
and went with the Platform approach. Hope that's OK.
all files needed for VMProps (or other @requires expression class)
have to be listed in requires.extraPropDefns or
requires.extraPropDefns.bootlibs property in TEST.ROOT file in all the
test suites which use these extensions. we are trying to be very
cautious in what is used by VMProps (directly and indirectly) so these
lists won't grow and we won't require any modules other than
java.base, given DockerTestUtils has dependencies on a number of other
library classes, the Platform approach is much better from that point
of view.
Testing: Container tests with docker daemon running on Linux x86_64,
container tests without docker daemon running (podman is daemon-less)
via the podman binary on Linux x86_64 (with -e:PATH). All pass.
Sounds good.
Overall looks good to me.
Thanks for the review!
One minor nit: DockerTestUtils.java does not need "import
java.util.Map;" (no need to post updated webrev for this change)
OK, good catch. Fixed locally.
Thanks,
Severin
Thank you,
Misha
More thoughts?
Thanks,
Severin
Thanks,
-- Igor
On Jul 16, 2019, at 5:36 AM, Severin Gehwolf <sgehw...@redhat.com
<mailto:sgehw...@redhat.com>> wrote:
Hi,
I believe I still need a *R*eviewer for this. Any takers?
Thanks,
Severin
On Fri, 2019-07-12 at 15:19 -0700, mikhailo.seledt...@oracle.com
<mailto:mikhailo.seledt...@oracle.com> wrote:
Hi Severin,
The change looks good to me. Thank you for adding support for
Podman
container technology.
Testing: I ran both HotSpot and JDK container tests with your patch;
tests executed on Oracle Linux 7.6 using default container
engine (Docker):
test/hotspot/jtreg/containers/ AND
test/jdk/jdk/internal/platform/docker/
All PASS
Thanks,
Misha
On 7/12/19 11:08 AM, Severin Gehwolf wrote:
Hi,
There is an alternative container engine which is being used by
Fedora
and RHEL 8, called podman[1]. It's mostly compatible with
docker. It
looks like OpenJDK docker tests can be made podman compatible
with a
few little tweaks. One "interesting" one is to not assert
"Successfully
built" in the build output but only rely on the exit code,
which seems
to be OK for my testing. Interestingly the test would be skipped in
that case.
Bug: https://bugs.openjdk.java.net/browse/JDK-8227642
webrev:
http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8227642/01/webrev/
Adjustments I've done:
* Don't assert "Successfully built" in image build output[2].
* Add /usr/sbin to PATH as the podman binary relies on
iptables for it
to work which is in /usr/sbin on Fedora
* Allow for Metrics.getCpuSystemUsage() and
Metrics.getCpuUserUsage()
to be equal to the previous value. I've found those counters
to be
slowly increasing, which made the tests unreliable.
Testing:
Running docker tests with docker as engine. Did the same with
podman as
engine via -Djdk.test.docker.command=podman on Linux x86_64. Both
passed (non-trivially).
Thoughts?
Thanks,
Severin
[1] https://podman.io/
[2] Image builds with podman look
like ("COMMIT" over "Successfully built"):
STEP 1: FROM fedora:29
STEP 2: RUN dnf install -y java-11-openjdk-devel && dnf
clean all
--> Using cache
96f8b1a0dfe7dba581a64fc67a27002ddf52e032af55f9ddc765182a690afd9d
STEP 3: COPY TestMetrics.class TestMetrics.java /opt/
269042160f7a4e6a06789cd19640ea658a8f941bc53de0fd40a574dc3bdb49a8
STEP 4: CMD /usr/lib/jvm/java-11-openjdk/bin/java -cp /opt
--add-modules java.base --add-exports
java.base/jdk.internal.platform=ALL-UNNAMED TestMetrics
STEP 5: COMMIT fedora-metrics-11
d749088d6ce4510f212820ad4eca55a9b05e5c5c245f2372b6cfe91926e8cd7e