RFR (S): 7185591: jcmd-big-script.sh ERROR: could not find app's Java pid.

Yekaterina Kantserova yekaterina.kantserova at oracle.com
Wed Jan 15 01:13:42 PST 2014


Staffan, thank you for pointing out performance and test.src issues!

The webrev with fixes can be found here:
http://cr.openjdk.java.net/~ykantser/7185591/webrev.01/

Please, see my comments in-lined.

Thanks,
Katja



On 01/13/2014 01:19 PM, Staffan Larsen wrote:
> Katja,
>
> test/lib/testlibrary/jdk/testlibrary/JcmdBase.java
>   68      * Run jcmd standalone
>
> I think you should expand a bit on what “standalone” means here. It took me a while to understand the difference.
Fixed.
>
> test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java
> 423     public int indexOf(String pattern) {
>
> This seems very inefficient. Add all lines to an ArrayList and then walk through them one at a time to if it matches and then walk through them once again to find the index of that line.
>
> 469     public int shouldMatchByLine(String from, String to, String pattern) {
>
> Same inefficiency here, but worse because both asLines() and indexOf() does the same work.
>
> test/lib/testlibrary/jdk/testlibrary/Utils.java
> 65     public static final String TEST_SRC = System.getProperty("test.src").trim();
Fixed.
>
> I wonder if this really works. Isn’t “test.src” different for different tests? A property that jtreg changes
Yes, it is different.
> before invoking each test? Or does this work because each test is run in a different class loader and Utils.java will exist once in each class loader?
I've learned now it works because jtreg compiles all classes a test 
needs to a separate location. For example when I run TestJcmdDefaults 
there will be both TestJcmdDefaults.class and 
jdk/testlibrary/Utils.class under 
/tmp/jtreg/jtreg-workdir/classes/sun/tools/jcmd/. The class loader will 
load Utils for TestJcmdDefaults from 
/tmp/jtreg/jtreg-workdir/classes/sun/tools/jcmd/.

...
[Loaded jdk.testlibrary.Utils from 
file:/tmp/jtreg/jtreg-workdir/classes/sun/tools/jcmd/]
...

But I think it's better to declare TEST_SRC per test precisely because 
it's different for different tests.

>
>
> /Staffan
>
>
> On 10 jan 2014, at 13:50, Yekaterina Kantserova <yekaterina.kantserova at oracle.com> wrote:
>
>> Hi,
>>
>> Could I please have a review of this fix.
>>
>> In this fix I've rewritten sun/tools/jcmd/* tests in pure java to get rid of all intermittent failures depending on for example MKS or race conditions (test application has not yet started when the test start to run).
>>
>>
>> Webrev:
>> http://cr.openjdk.java.net/~ykantser/7185591/webrev.00/
>>
>> Primal bug:
>> https://bugs.openjdk.java.net/browse/JDK-7185591
>>
>> Similar bugs:
>> https://bugs.openjdk.java.net/browse/JDK-6977426
>> https://bugs.openjdk.java.net/browse/JDK-8020798
>> https://bugs.openjdk.java.net/browse/JDK-7130656 (this one is blocked by https://bugs.openjdk.java.net/browse/JDK-8031482 so far)
>>
>> Thanks,
>> Katja



More information about the serviceability-dev mailing list