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

Staffan Larsen staffan.larsen at oracle.com
Wed Jan 15 02:37:42 PST 2014


Katja,

test/lib/testlibrary/jdk/testlibrary/JcmdBase.java
The toolArgs parameter should be renamed jcmdArgs.

test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java
423     public int indexOf(String pattern) {
You don’t have to convert the List to an array before iterating through it. Use lLines.get(i).matches(…) instead.

470     public int shouldMatchByLine(String from, String to, String pattern) {
This method still reads the lines into an ArrayList (at most) three times. It calls asLines() once and indexOf() twice. There could be a version of indexOf() that takes a List<String>. Actually indexOf could be private and always take a List<String>.


Otherwise ok!

/Staffan



On 15 jan 2014, at 10:13, Yekaterina Kantserova <yekaterina.kantserova at oracle.com> wrote:

> 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20140115/c7e6cdc0/attachment.html 


More information about the serviceability-dev mailing list