RFR: 8227642: [TESTBUG] Make docker tests podman compatible

mikhailo.seledtsov at oracle.com mikhailo.seledtsov at oracle.com
Tue Jul 16 21:29:01 UTC 2019


On 7/16/19 1:32 PM, Igor Ignatyev wrote:
> Hi Misha,
>
> I understand that it doesn't alter the host system. my concern is that we move problem of host-configuration into tests. let's say tomorrow a new container engine will require something from /usr/local/sbin, or /usr/local/Cellar/docker/bin on another OS, or, god forbid, C:\Program Files(x86)\podman\bin. it has nothing to do w/ tests, it's a question of configuring a host, as I said, should be handled at another level by "scripts" run (once) prior test execution.
OK, it makes sense now.

Thank you,

Misha

>
> -- Igor
>
>> On Jul 16, 2019, at 1:23 PM, mikhailo.seledtsov at oracle.com wrote:
>>
>> Hi Igor,
>>
>>     In both cases the environment variable is set for the Docker/Podman container process, not the host system. This will not affect the host system in any way. The docker process has its own namespace for environment variables. Does this alleviate your concerns?
>>
>>
>> Thank you,
>>
>> Misha
>>
>> On 7/16/19 11:49 AM, 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.
>>>
>>> Thanks,
>>> -- Igor
>>>
>>>> On Jul 16, 2019, at 5:36 AM, Severin Gehwolf <sgehwolf at 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.seledtsov at 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
>>>>>>


More information about the core-libs-dev mailing list