On Wed, 17 Jun 2026 20:16:55 GMT, Naoto Sato <[email protected]> wrote:

>> Can I please get a review of this test-only change which proposes to improve 
>> the debuggability of the `test/jdk/sun/nio/cs/TestStringCodingUTF8.java` 
>> test?
>> 
>> This test fails intermittently in our CI in older update releases with 
>> errors like:
>> 
>> java.lang.RuntimeException: getBytes(csn) failed
>>     at TestStringCodingUTF8.test(TestStringCodingUTF8.java:111)
>>     at TestStringCodingUTF8.test(TestStringCodingUTF8.java:85)
>>     at TestStringCodingUTF8.main(TestStringCodingUTF8.java:41) 
>> 
>> 
>> It's not clear from the failures whether this is a test specific issue or 
>> some genuine issue in some specific release of the JDK. Since the test uses 
>> a `Random` instance to generate the data to test, it isn't easy to reproduce 
>> it either.
>> 
>> The change in this PR proposes to use the `RandomFactory` test library which 
>> is equipped with printing the seed used by the `Random` instance. If the 
>> test fails in future, the seed should help reproduce the test data that ran 
>> into the failure. The change also improves the error messages in the test 
>> and updates the `Collections.shuffle()` call to pass it the same `Random` 
>> instance that's being used in the test.
>> 
>> The test continues to pass with this change.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> test/jdk/sun/nio/cs/TestStringCodingUTF8.java line 115:
> 
>> 113:         //getBytes(csn);
>> 114:         byte[] baStr = str.getBytes(cs.name());
>> 115:         if (!Arrays.equals(ba, baStr))
> 
> Maybe we could use `Arrays.mismatch()`, and prints the actual difference in 
> the exception.

Hello Naoto, I had considered that, but I then noticed that these tests use 
extremely large arrays in many cases. For example, `1000`, `0x10000`, `0x20000` 
`0x30000` etc... So although Arrays.mismatch might give the first mismatching 
index, printing the actual difference might be very large and may overflow the 
jtreg log message limit.

But let me give a bit more thought today.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/31548#discussion_r3432631825

Reply via email to