RFR: 8295153: java/util/Base64/TestEncodingDecodingLength.java ran out of memory [v2]
Naoto Sato
naoto at openjdk.org
Wed May 1 20:20:54 UTC 2024
On Wed, 1 May 2024 18:52:06 GMT, Justin Lu <jlu at 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
More information about the core-libs-dev
mailing list