RFR(S): 8179317: [TESTBUG] rewrite runtime shell tests in java
mikhailo.seledtsov at oracle.com
mikhailo.seledtsov at oracle.com
Tue Feb 4 04:35:30 UTC 2020
Here is the updated webrev:
http://cr.openjdk.java.net/~mseledtsov/8179317.02/
I have addressed comments from Igor, as well as a concern from David
about testing.
I have added a native test: ||
test/hotspot/jtreg/testlibrary_tests/process/TestNativeProcessBuilder.java
Misha
*
*
*
*
On 1/31/20 4:34 PM, mikhailo.seledtsov at oracle.com wrote:
> David,
>
> Thank you for your feedback.
>
> On 1/30/20 9:25 PM, David Holmes wrote:
>> Hi Misha,
>>
>> Overall this is looking quite good.
>>
>> On 31/01/2020 2:58 pm, Igor Ignatyev wrote:
>>> Hi Misha,
>>>
>>> I have a two comments regarding ProcessTools.java:
>>> 1. in createNativeTestProcessBuilder, shouldn't ".exe" be added to
>>> executableName if we are on windows?
>>
>> More generally the only tests that use these new APIs are limited to
>> Linux, so AFAICS these new test library APIs are untested on other
>> platforms - is that the case?
>
> I am looking into creating a simple test for
> createNativeTestProcessBuilder(), which will also indirectly test its
> dependency methods in Platform.java.
>
> The test I have in mind will launch a native executable, which will in
> turn launch a simple Test class. The main test will check for success
> exit code.
>
>> One query below ...
>>
>>> 2. making addJvmLib to return the instance of ProcessBuilder might
>>> make this API more akin to the builder pattern, which ProcessBuilder
>>> follows, so it will seem more natural
>>>
>>> the rest looks good to me.
>>>
>>> -- Igor
>>>
>>>
>>>> On Jan 30, 2020, at 8:41 PM, mikhailo.seledtsov at oracle.com wrote:
>>>>
>>>> Here is the updated webrev:
>>>> http://cr.openjdk.java.net/~mseledtsov/8179317.01/
>>>>
>>>> I did the following since last webrev:
>>>>
>>>> - addressed feedback from Igor and Leonid
>>>>
>>>> - tests StackGap, StackGuard and TLS launch a native executable,
>>>> which in turn loads and starts JVM via JNI.
>>>> This requires additional setup, such as native library path
>>>> and full path to test executable, all platform
>>>> dependent.
>>>>
>>>> - I have found similar code in runtime/signal. I have identified
>>>> common code and methods, and placed them
>>>> with the test library. The code identifying a path to JVM
>>>> shared lib now lives in Platform.java, and
>>>> helper methods for native process builder went to
>>>> ProcessTools.java
>>>>
>>>> - these are new methods in the test library, no changes to
>>>> existing API or behavior, which limits the
>>>> risk for the users of the test libraries.
>>
>> That all seems fine modulo the cross-platform testing.
>>
>>>> - I have retrofitted runtime/signal/SigTestDriver.java to use
>>>> these new library methods.
>>>>
>>>> - Also I had to explicitly set the CLASSPATH to
>>>> Utils.TEST_CLASS_PATH for StackGap, StackGuard and TLS tests
>>>> W/o this, each test will fail in a following manner:
>>>>
>>>> # Internal Error
>>>> (open/src/hotspot/share/runtime/jniHandles.inline.hpp:91),
>>>> pid=13075, tid=13075
>>>> # assert(handle != __null) failed: JNI handle should not be null
>>>> # V [libjvm.so+0x8944e5]
>>>> JNIHandles::resolve_non_null(_jobject*)+0x1c5
>>
>> I'm curious about this. Can you send me a hs_err file via email. This
>> looks like a bug to me.
>
> Will do.
>
>
> Thanks,
>
> Misha
>
>>
>> Thanks,
>> David
>> -----
>>
>>>>
>>>>
>>>> Testing:
>>>> - run the affected tests on Linux-x64: All PASS
>>>> - run the affected tests on other platforms: in progress...
>>>> - run tier1,2,3: in progress
>>>>
>>>>
>>>> Thank you,
>>>> Misha
>>>>
>>>> On 1/27/20 12:08 PM, mikhailo.seledtsov at oracle.com wrote:
>>>>>
>>>>> On 1/24/20 10:33 PM, Leonid Mesnik wrote:
>>>>>> Looks good for me also.
>>>>>
>>>>> Thank you Leonid.
>>>>>
>>>>> I will make changes recommended by Igor, and post an updated webrev.
>>>>>
>>>>>
>>>>> Misha
>>>>>
>>>>>>
>>>>>> And I agree that it would be better to rename TestDescription.java.
>>>>>>
>>>>>> Leonid
>>>>>>
>>>>>> On 1/24/20 7:14 PM, Igor Ignatyev wrote:
>>>>>>> Hi Misha,
>>>>>>>
>>>>>>> in general looks good to me, I have two comments though:
>>>>>>> - why did you put 'new OutputAnalyzer(pb.start())' into
>>>>>>> parentheses?
>>>>>>> - in vmTestbase, TestDescription.java was originally used to be
>>>>>>> just that a test description w/o any test logic inside, and I'd
>>>>>>> prefer it stays that way. in other words, I'd recommend you to
>>>>>>> rename
>>>>>>> test/hotspot/jtreg/vmTestbase/metaspace/flags/maxMetaspaceSize/TestDescription.java
>>>>>>> to
>>>>>>> test/hotspot/jtreg/vmTestbase/metaspace/flags/maxMetaspaceSize/Test.java
>>>>>>> for example. this will require the corresponding change in
>>>>>>> test/hotspot/jtreg/TEST.groups
>>>>>>>
>>>>>>> Thanks,
>>>>>>> -- Igor
>>>>>>>
>>>>>>>> On Jan 24, 2020, at 5:56 PM, mikhailo.seledtsov at oracle.com wrote:
>>>>>>>>
>>>>>>>> Please review this change that converts HotSpot/Runtime shell
>>>>>>>> tests to Java
>>>>>>>>
>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8179317
>>>>>>>> Webrev: http://cr.openjdk.java.net/~mseledtsov/8179317.00/
>>>>>>>> Testing:
>>>>>>>> Ran the affected tests
>>>>>>>>
>>>>>>>>
>>>>>>>> Thank you,
>>>>>>>> Misha
>>>>>>>>
>>>
More information about the hotspot-runtime-dev
mailing list