RFR: JDK-8276892: Provide a way to emulate exceptional situations in FileManager when using JavadocTester

Pavel Rappo prappo at openjdk.java.net
Wed Nov 17 13:20:38 UTC 2021


On Tue, 16 Nov 2021 18:24:15 GMT, Jonathan Gibbons <jjg at openjdk.org> wrote:

> > After having looked at this change, I think I might have fallen prey to the famous "XY problem". Instead of asking on how to emulate error conditions in a black-box fashion first, I asked to provide white-box support for those through JavadocTester.
> 
> I didn't see the question this way, and I thought the JBS issue was well stated.
> 
> Setting aside `JavadocTester` for a moment, there were two ways to solve the general problem of triggering exceptions to emulate weird conditions.
> 
> 1. Build back doors into the main system `JavaFileManager` ... i..e. `JavacFileManager` (note `Javac`), such that the code can be triggered by backdoor access, either reflective, or breaking abstraction or system properties.
> 2. Provide a new file manager to do the job.
>
> [...]

I should've asked an even more general question before creating JDK-8276892: How can I _trigger_ an error from specific operations on a FileManager and a FileObject returned from that FileManager?

A simulation through a custom implementation of these types that this PR proposes would be one answer. However, such a simulation is the white-box approach, and as far as I understand, JDK contributors traditionally prefer the black-box approach.

In the black-box approach, one seeks ways to emulate the environment that would yield the desired effect. For example, to trigger IOException on an attempt to delete a file, I would ensure that the path does not exist or that the JVM has insufficient file-system permissions to access that path. Here's another example. To achieve socket blocking on write, I would fill it in with as much data as possible (SO_SNDBUF) while simultaneously ensuring that no one reads from it.

If you say that a black-box approach is impossible or impractical here, I'll be fine with the white-box approach along the lines of what this PR suggests.

-------------

PR: https://git.openjdk.java.net/jdk/pull/6404


More information about the javadoc-dev mailing list