RFR: 8325532: serviceability/dcmd/compiler/PerfMapTest.java leaves created files in the /tmp dir.
Chris Plummer
cjplummer at openjdk.org
Wed Feb 28 19:28:52 UTC 2024
On Fri, 23 Feb 2024 21:55:15 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:
> PerfMapTest.java issues the Compiler.perfmap jcmd with a filename argument to write the perfmap to. It does this in 3 different modes. 2 of the modes result in a perfmap file being left in the tmp directory that is not removed after the test executes (and should be removed). The 3rd mode creates the perfmap file in the directory specified by the test.dir property, and is ok to leave the file there. I've added code to delete the /tmp files that are created.
>
> I did a bit of extra testing by hand. I created `/tmp/perf-<pid>.map` as root. As expected the Files.deleteIfExists() call threw an exception due to the lack of permissions to delete the file. However, I then realized the file had a size of 0, which means the test was not even doing a proper job of testing that the perfrmap jcmd was working. In other words, the test should have failed long before getting to the Files.deleteIfExists(), so I added a size check to make sure it fails when the file is not written to.
Hmm. I'm starting to question everything I wrote in the 2nd paragraph of the description. I'm not sure how I came to that conclusion. If the file already exists and the current user does not have access to overwrite it, then as you point out, there will be an error message in stderr, and when stderr is not empty, the test fails. It would never hit the size check I added, and will never get an exception when calling `Files.deleteIfExists()` because the test would never get that far. Yet I'm sure at some point I got `Files.deleteIfExists()` to throw an exception. I need to figure out how I did that.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17992#issuecomment-1969692556
More information about the serviceability-dev
mailing list