On Wed, 1 May 2024 18:52:06 GMT, Justin Lu <j...@openjdk.org> wrote: >> Please review this PR which converts _TestEncodingDecodingLength.java_ into >> a whitebox test which allows for testing to be done without memory usage >> issues. >> >> Currently, the test requires about ~2.75 `Integer.MAX_VALUE` sized byte >> arrays worth of memory. (2 for the initial array allocation, .75 for the >> target array in `decode()`). While the `-Xms6g -Xmx8g` options should >> address this, there have been intermittent memory issues, as the underlying >> machine machine may be running other tests simultaneously. >> >> By converting this test to a white-box test not only does it get rid of >> memory issues, but it also gets rid of the need to decode 2GB of data 3 >> times. The change is done using reflection to test the private visibility >> methods `encodedOutLength` and `decodedOutLength`, which the public `encode` >> and `decode` overloaded methods call respectively. > > Justin Lu has updated the pull request incrementally with one additional > commit since the last revision: > > Reflect review comments
test/jdk/java/util/Base64/TestEncodingDecodingLength.java line 75: > 73: } catch (InvocationTargetException ex) { > 74: Throwable rootEx = ex.getCause(); > 75: assertEquals(OutOfMemoryError.class, rootEx.getClass(), "00ME > should be thrown"); Sorry if it is intentional, but I wonder if you meant "OOME" instead of "00ME" here? test/jdk/java/util/Base64/TestEncodingDecodingLength.java line 100: > 98: m.invoke(DECODER, src, -LARGE_MEM_SIZE + 1, 1); > 99: } catch (InvocationTargetException ex) { > 100: fail("Decode should neither throw NASE or OOME: " + > ex.getCause()); Should we check the cause is either NASE or OOME here? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/19036#discussion_r1586777571 PR Review Comment: https://git.openjdk.org/jdk/pull/19036#discussion_r1586781336