RFR: 8336240: Test com/sun/crypto/provider/Cipher/DES/PerformanceTest.java fails with java.lang.ArithmeticException [v5]
duke
duke at openjdk.org
Fri Jul 26 08:06:35 UTC 2024
On Thu, 25 Jul 2024 09:46:48 GMT, Fernando Guallini <fguallini at openjdk.org> wrote:
>> The manual test Cipher/DES/PerformanceTest.java fails with ArithmeticException due to potential division by zero. The issue arises when calculating the elapsed time using end - start, which could result in zero milliseconds if start and end are identical due to the high speed of execution. This leads to a division error in the following code snippet:
>>
>>
>> start = System.currentTimeMillis();
>> end = System.currentTimeMillis();
>> int speed = (int)((data.length * count)/(end - start));
>>
>> This issue is easily reproducible on platforms where System.currentTimeMillis() has low granularity, such as many versions of Windows, end and start can be equal when obtaining System.currentTimeMillis() if the test runs very quickly.
>>
>> The fix is to use System.nanoTime() instead, which is designed to measure elapsed time with very high precision. This value is then converted to microseconds so the tests can properly calculate the throughput (bytes processed per microsecond) for the report. Example output:
>>
>>
>> Algorithm DataSize Rounds Bytes/microsec
>> DES/ECB/NoPadding 1024 100 66
>> DES/ECB/NoPadding 1024 1000 50
>> DES/ECB/NoPadding 8192 100 70
>> DES/ECB/NoPadding 8192 1000 70
>> Average: 64
>
> Fernando Guallini has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains eight additional commits since the last revision:
>
> - converted to automated test
> - Merge branch 'master' into 8336240
> - adding back the validation to avoid dividing by zero
> - byter per microsec
> - use microseconds as time unit
> - remove unused imports
> - tiny refactor
> - avoid dividing by zero
@fguallini
Your change (at version 98a91557aff642c3ad31625974ddeb63b85c6768) is now ready to be sponsored by a Committer.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/20135#issuecomment-2252195747
More information about the security-dev
mailing list