RFR: 8308803: Improve java/util/UUID/UUIDTest.java [v2]
Aleksey Shipilev
shade at openjdk.org
Wed May 31 07:41:58 UTC 2023
On Tue, 30 May 2023 20:55:39 GMT, Roger Riggs <rriggs at openjdk.org> wrote:
>> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Review comments
>
> test/jdk/java/util/UUID/UUIDTest.java line 79:
>
>> 77: }
>> 78: if (!set.add(u)) {
>> 79: throw new Exception("UUID collision: " + u);
>
> I would be concerned that if this failure was reported, it would be intermittent, hard to track down, and not reproducible. Without a hook for the generator and the seed, its just going to be noise in the testing.
This is a non-practical concern, IMO. By spec, `UUID.randomUUID` is generated from the cryptographically secure random, with >120 bits of randomness, so the collision is extremely unlikely. Collision math involves birthday paradox, but Wikipedia article on UUIDs fortunately gives us the approximated solutions already: https://en.wikipedia.org/wiki/Universally_unique_identifier#Collisions
Quote: "Thus, the probability to find a duplicate within 103 trillion version-4 UUIDs is one in a billion."
In other words, finding a collision in this test with 1M UUIDs points to the implementation issue, not a test bug, with a very high probability. In yet another words, if a unit test with 1M UUIDs is able to find a collision, then this is a strong signal that many production systems that assume extremely low collision probability are up for subtle misbehavior.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14134#discussion_r1211223450
More information about the core-libs-dev
mailing list