Skip to content

Commit d1261a9

Browse files
author
Julien Kronegg
committed
fix: added max retry on collision rate test for #2851
1 parent 2d20f52 commit d1261a9

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

cucumber-core/src/test/java/io/cucumber/core/eventbus/IncrementingUuidGeneratorTest.java

+22-15
Original file line numberDiff line numberDiff line change
@@ -185,23 +185,30 @@ private static UUID removeEpochTime(UUID uuid) {
185185
@Test
186186
void classloaderid_collision_rate_lower_than_two_percents_with_ten_classloaders()
187187
throws NoSuchFieldException, IllegalAccessException {
188-
// When I compute the classloaderId collision rate with multiple
189-
// classloaders
190-
Set<Long> classloaderIds = new HashSet<>();
191-
List<Integer> stats = new ArrayList<>();
192-
while (stats.size() < 100) {
193-
if (!classloaderIds
194-
.add(getStaticFieldValue(getUuidGeneratorFromOtherClassloader(null), CLASSLOADER_ID_FIELD_NAME))) {
195-
stats.add(classloaderIds.size() + 1);
196-
classloaderIds.clear();
188+
double collisionRateWhenUsingTenClassloaders;
189+
List<Double> collisionRatesWhenUsingTenClassloaders = new ArrayList<>();
190+
do {
191+
// When I compute the classloaderId collision rate with multiple
192+
// classloaders
193+
Set<Long> classloaderIds = new HashSet<>();
194+
List<Integer> stats = new ArrayList<>();
195+
while (stats.size() < 100) {
196+
if (!classloaderIds
197+
.add(getStaticFieldValue(getUuidGeneratorFromOtherClassloader(null),
198+
CLASSLOADER_ID_FIELD_NAME))) {
199+
stats.add(classloaderIds.size() + 1);
200+
classloaderIds.clear();
201+
}
197202
}
198-
}
199203

200-
// Then the classloaderId collision rate for 10 classloaders is less
201-
// than 2%
202-
double collisionRateWhenUsingTenClassloaders = stats.stream()
203-
.filter(x -> x < 10).count() * 100 / (double) stats.size();
204-
assertTrue(collisionRateWhenUsingTenClassloaders <= 2);
204+
// Then the classloaderId collision rate for 10 classloaders is less
205+
// than 2%
206+
collisionRateWhenUsingTenClassloaders = stats.stream()
207+
.filter(x -> x < 10).count() * 100 / (double) stats.size();
208+
collisionRatesWhenUsingTenClassloaders.add(collisionRateWhenUsingTenClassloaders);
209+
} while (collisionRateWhenUsingTenClassloaders > 2 && collisionRatesWhenUsingTenClassloaders.size() < 10);
210+
assertTrue(collisionRateWhenUsingTenClassloaders <= 2,
211+
"all retries exceed the expected collision rate : " + collisionRatesWhenUsingTenClassloaders);
205212
}
206213

207214
@Test

0 commit comments

Comments
 (0)