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

Robbin Ehn robbin.ehn at oracle.com
Tue Mar 21 15:36:56 UTC 2017


Thanks Marcus!

/Robbin

On 03/21/2017 04:36 PM, Marcus Larsson wrote:
> Hi,
>
> Looks good to me!
>
> Thanks,
> Marcus
>
>
> On 2017-03-21 11:00, David Holmes wrote:
>> 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