RFR(9): 8177092: [TESTBUG] JMX test on MinimalVM fails after fix for 8176533

David Holmes david.holmes at oracle.com
Tue Mar 21 10:00:43 UTC 2017


On 21/03/2017 7:53 PM, Robbin Ehn wrote:
> Hi David,
>
> On 03/21/2017 10:48 AM, David Holmes wrote:
>> Hi Robbin,
>>
>> On 21/03/2017 7:22 PM, Robbin Ehn wrote:
>>>> +                .shouldNotContain("^" +
>>> Long.toString(ProcessTools.getProcessId()) + "\\s+.*$");
>>
>> Maybe I'm looking at the wrong version but OutputAnalyzer.*Contain
>> only take a string for a substring match, and you need to use
>> *Match(String pattern) to pass in a regexp?
>
> No you are looking at the correct version. I was looking at
> shouldNotMatch, but never changed it, thanks for catching this!
>
> +                .shouldNotMatch("^" +
> Long.toString(ProcessTools.getProcessId()) + "\\s+.*$");

Okay looks good!

Thanks,
David
-----

> /Robbin
>
>
>>
>> David
>>
>>> Missed space after + sign
>>>
>>> /Robbin
>>>
>>> On 03/21/2017 10:19 AM, Robbin Ehn wrote:
>>>> Hi David, thanks for looking at this!
>>>>
>>>> On 03/21/2017 02:32 AM, David Holmes wrote:
>>>>> Hi Robbin,
>>>>>
>>>>> The approach seems reasonable, but my concern is that you may get a
>>>>> false match if there is some java process running that happens to
>>>>> have a numeric argument that matches
>>>>> the target PID, or perhaps more likely (though still remote) your
>>>>> target PID is a small number and then becomes a substring of another
>>>>> PID.
>>>>
>>>> Since I never even see even 3-digits pid, it kinda slip my mind.
>>>>
>>>>>
>>>>> Can you actually parse the list and check the PID value for an exact
>>>>> match? Or perhaps simply use shouldNotMatch with a pattern that only
>>>>> matches an exact numeric value at
>>>>> the start of a line?
>>>>
>>>> Yes of course!
>>>>
>>>> /Robbin
>>>>
>>>> diff -r 03f4b62f3562 test/runtime/MinimalVM/JMX.java
>>>> --- a/test/runtime/MinimalVM/JMX.java    Wed Mar 15 18:18:04 2017 -0700
>>>> +++ b/test/runtime/MinimalVM/JMX.java    Tue Mar 21 10:11:47 2017 +0100
>>>> @@ -49,6 +49,5 @@
>>>>
>>>> -        pb.command(new String[] { JDKToolFinder.getJDKTool("jcmd"),
>>>> Long.toString(ProcessTools.getProcessId()), "VM.print_threads"});
>>>> +        pb.command(new String[] { JDKToolFinder.getJDKTool("jcmd"),
>>>> "-l"});
>>>>          new OutputAnalyzer(pb.start())
>>>> -                .shouldContain("Could not find any processes
>>>> matching ")
>>>> -                .shouldHaveExitValue(1);
>>>> +                .shouldNotContain("^"
>>>> +Long.toString(ProcessTools.getProcessId()) + "\\s+.*$");
>>>>      }
>>>>
>>>>
>>>>
>>>>>
>>>>> Thanks,
>>>>> David
>>>>>
>>>>> On 21/03/2017 12:40 AM, Robbin Ehn wrote:
>>>>>> Hi all, please review,
>>>>>>
>>>>>> 8156537 added a verification that <pid> was an attachable VM.
>>>>>> The verification caused a regression because of an underlying bug
>>>>>> in an
>>>>>> AttachProvider.
>>>>>> So the verification was removed for pid case in 8176533.
>>>>>> It will be put back when we have fixed: 8176828 (the faulty
>>>>>> AttachProvider)
>>>>>>
>>>>>> This test was written when we had the verification of VM before
>>>>>> blasting
>>>>>> SIGQUIT and waiting for socket to open.
>>>>>> Since we do not verify that the process is suppose to be attachable,
>>>>>> jcmd will think that socket should open, which leads to timeout in
>>>>>> jcmd
>>>>>> for all non-attachable processes.
>>>>>>
>>>>>> The test is suppose to verify that the minimal VM do not have attach
>>>>>> API.
>>>>>> I change the test to just list attachable VM's and verify that this
>>>>>> minimal VM is not among them.
>>>>>>
>>>>>> Issue: https://bugs.openjdk.java.net/browse/JDK-8177092
>>>>>>
>>>>>> Tested locally and with rbt.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> /Robbin
>>>>>>
>>>>>> diff -r 03f4b62f3562 test/runtime/MinimalVM/JMX.java
>>>>>> --- a/test/runtime/MinimalVM/JMX.java    Wed Mar 15 18:18:04 2017
>>>>>> -0700
>>>>>> +++ b/test/runtime/MinimalVM/JMX.java    Mon Mar 20 15:22:44 2017
>>>>>> +0100
>>>>>> @@ -49,6 +49,5 @@
>>>>>>
>>>>>> -        pb.command(new String[] { JDKToolFinder.getJDKTool("jcmd"),
>>>>>> Long.toString(ProcessTools.getProcessId()), "VM.print_threads"});
>>>>>> +        pb.command(new String[] { JDKToolFinder.getJDKTool("jcmd"),
>>>>>> "-l"});
>>>>>>          new OutputAnalyzer(pb.start())
>>>>>> -                .shouldContain("Could not find any processes
>>>>>> matching ")
>>>>>> -                .shouldHaveExitValue(1);
>>>>>> +
>>>>>> .shouldNotContain(Long.toString(ProcessTools.getProcessId()));


More information about the hotspot-runtime-dev mailing list