RFR: 8203491: [TESTBUG] Port heapdump tests into java

Jini George jini.george at oracle.com
Wed May 23 15:48:06 UTC 2018


Hi Leonid,

I have mostly looked at only the following file:

http://cr.openjdk.java.net/~lmesnik/8203491/webrev.00/test/hotspot/jtreg/serviceability/sa/TestJmapCore.java.html

* Would you be adding JMapMetaspaceCore testing to this? Other than 
this, I think the jhsdb heapdump testing from vmTestbase has been covered.

* You might want to increase the timeout factor for this test. The test 
times out on my machine.

* You might want to consider removing the corefile and the heapdump 
files after the test execution (in the cases where the test passes).

* The following imports:
import jdk.test.lib.classloader.GeneratingClassLoader;
import java.util.Arrays;
import java.util.stream.Collectors;

are not needed.

* Nit:
// If any arguments are set prints pid so main process coud find corefile

coud --> could

* "Has not been able to find coredump. Test skipped."

One suggestion is to check if /proc/sys/kernel/core_pattern has a line 
starting with '|' and print a warning that a crash reporting tool might 
be used (Something like in ClhsdbCDSCore.java). But it is just a 
suggestion and you are free to ignore it. In due course, we could 
include this test also as a part of the consolidation of SA's corefile 
testing effort (https://bugs.openjdk.java.net/browse/JDK-8202297).


 > I have verified that test  still could reproduce issue
 > https://bugs.openjdk.java.net/browse/JDK-8176557 if default heap size is
 > large enough. However I think that it make a sense to add variant of
 > this test which explicit heap settings as a regression fix for bug
 > JDK-8176557 <https://bugs.openjdk.java.net/browse/JDK-8176557>.
 >

Sounds good to me.

 > Also I haven't managed to reproduce following issues with neither
 > existing or new tests:
 > https://bugs.openjdk.java.net/browse/JDK-8001227
 > https://bugs.openjdk.java.net/browse/JDK-8023376
 > https://bugs.openjdk.java.net/browse/JDK-8051445
 > Corresponding  tests were excluded for a long time so there are no any
 > results for them. I also see comments in bugs with unsuccessful attempts
 > to reproduce issues.  I think that it makes a sense just to remove these
 > entries from problemlist and file new open bugs if any of failures 
happen.

Sounds good to me.

Thanks,
Jini (Not a Reviewer).


On 5/23/2018 6:45 AM, Leonid Mesnik wrote:
> Hi
> 
> Could you please review following patch which rewrite 
> vmTestbase/heapdump tests as a jtreg java tests.
> 
> These heapdump tests were developed as a shell tests which verify 
> heapdump functionality in JDK 5. They work fine but needs some refactoring.
> 
> webrev: http://cr.openjdk.java.net/~lmesnik/8203491/webrev.00/
> bug: https://bugs.openjdk.java.net/browse/JDK-8203491
> 
> Below is high-level overview of existing tests and changes:
> 
> 1) Tests vmTestbase/heapdump/OnOOM* verify that VM correctly generates 
> heapdump when OOME in heap or metaspace happens. Also they verify that 
> -XX:HeapDumpPath= works correctly.
> Re-written as:
> http://cr.openjdk.java.net/~lmesnik/8203491/webrev.00/test/hotspot/jtreg/runtime/ErrorHandling/TestHeapDumpOnOutOfMemoryError.java.html
> Test provokes OOME and verifies generated heapdump.
> Please note that new jtreg test is very similar and use same test 
> patterns as most of ErrorHandling tests in 
> http://hg.openjdk.java.net/jdk/jdk/file/tip/test/hotspot/jtreg/runtime/ErrorHandling
> The main goal is to verify error handling when OOME is happen so I used 
> the same way to provoke OOME as most of other tests in this directory.
> New test might takes more then minute to complete test so I removed from 
> tier1.
> 
> 2) Tests vmTestbase/heapdump/JMap* verify that jmap correctly generates 
> heapdump from live process and core/mdmp file.
> There are existing tests which verify that jmap could correctly dump 
> heap for live process:
> http://hg.openjdk.java.net/jdk/jdk/file/f4735ff8d17d/test/hotspot/jtreg/serviceability/sa/TestHeapDumpForInvokeDynamic.java
> http://hg.openjdk.java.net/jdk/jdk/file/f4735ff8d17d/test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
> I believe that they provide the same coverage as heapdump/JMapHeap 
> and heapdump/JMapMetaspace tests and no new tests is needed.
> 
> The new test which verifies that jmap generate heapdump for corefile is:
> http://cr.openjdk.java.net/~lmesnik/8203491/webrev.00/test/hotspot/jtreg/serviceability/sa/TestJmapCore.java.html
> 
> Test provokes OOME to generate corefile (or mdml), generate heapdump 
> with jhsdb jmap and verify it. Previously tests send signals to provoke 
> coredump. Since JDK9 option 'CreateCoredumpOnCrash' could be used to 
> easily dump core on all platforms. Please note that test silently pass 
> if it doesn't find core file. Even if test tries to set ulimit -c 
> unlimited there is no guarantee that core file is generated and could be 
> found.
> I have verified that test  still could reproduce issue 
> https://bugs.openjdk.java.net/browse/JDK-8176557 if default heap size is 
> large enough. However I think that it make a sense to add variant of 
> this test which explicit heap settings as a regression fix for bug 
> JDK-8176557 <https://bugs.openjdk.java.net/browse/JDK-8176557>.
> 
> Also I haven't managed to reproduce following issues with neither 
> existing or new tests:
> https://bugs.openjdk.java.net/browse/JDK-8001227
> https://bugs.openjdk.java.net/browse/JDK-8023376
> https://bugs.openjdk.java.net/browse/JDK-8051445
> Corresponding  tests were excluded for a long time so there are no any 
> results for them. I also see comments in bugs with unsuccessful attempts 
> to reproduce issues.  I think that it makes a sense just to remove these 
> entries from problemlist and file new open bugs if any of failures happen.
> 
> I quickly looked through all resolved bugs  found by heapdump/ tests. 
> Most of them are related with different size limits overflow.  It might 
> be make a sense also create test which fill heap with large amount of 
> small objects to possible overflow of sizes of records. The similar 
> functionality was removed by JDK-8144137 
> <https://bugs.openjdk.java.net/browse/JDK-8144137>.  But I would prefer 
> to have separate RFE since it is not supported by existing tests.
> 
> Please let me know if it is possible to lost test coverage during this 
> conversion and more tests are needed. The more conservative way might be 
> to left existing tests for some time to see if if they still found 
> different bugs.
> 
> Testing:
> Run new tests on linux-x64,windows-x64,macos-x64.
> Run tier1/2.
> 
> 
> Leonid
> 
> 
> 
> 
> 


More information about the serviceability-dev mailing list