RFR(S): 8179317: [TESTBUG] rewrite runtime shell tests in java
David Holmes
david.holmes at oracle.com
Tue Feb 4 04:50:17 UTC 2020
Hi Misha,
On 4/02/2020 2:35 pm, mikhailo.seledtsov at oracle.com wrote:
> 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
26 * @summary Linux kernel stack guard should not cause segfaults on
x86-32
27 * @modules java.base/jdk.internal.misc
Neither of those lines apply to the new test.
When do we run the testlibrary_tests tests?
---
/**
* Adds JVM library path to the native library path.
*
* @param pb ProcessBuilder to be updated with JVM library path.
*/
public static ProcessBuilder addJvmLib(ProcessBuilder pb) throws
Exception {
Please add @return doc comment.
No need to see updated webrev.
Thanks,
David
>
> 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