On Fri, 23 Feb 2024 21:55:15 GMT, Chris Plummer <cjplum...@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

Reply via email to