diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/experiment/ExperimentEnrollmentManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/experiment/ExperimentEnrollmentManager.java index e51c76771..fc50daadb 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/experiment/ExperimentEnrollmentManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/experiment/ExperimentEnrollmentManager.java @@ -10,6 +10,8 @@ import java.util.Optional; import java.util.Random; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; +import java.util.function.Supplier; + import org.whispersystems.textsecuregcm.configuration.dynamic.DynamicConfiguration; import org.whispersystems.textsecuregcm.configuration.dynamic.DynamicExperimentEnrollmentConfiguration; import org.whispersystems.textsecuregcm.configuration.dynamic.DynamicE164ExperimentEnrollmentConfiguration; @@ -19,18 +21,18 @@ import org.whispersystems.textsecuregcm.util.Util; public class ExperimentEnrollmentManager { private final DynamicConfigurationManager dynamicConfigurationManager; - private final Random random; + private final Supplier random; public ExperimentEnrollmentManager( final DynamicConfigurationManager dynamicConfigurationManager) { - this(dynamicConfigurationManager, ThreadLocalRandom.current()); + this(dynamicConfigurationManager, ThreadLocalRandom::current); } @VisibleForTesting ExperimentEnrollmentManager( final DynamicConfigurationManager dynamicConfigurationManager, - final Random random) { + final Supplier random) { this.dynamicConfigurationManager = dynamicConfigurationManager; this.random = random; } @@ -50,7 +52,7 @@ public class ExperimentEnrollmentManager { return Optional.of(false); } if (config.getUuidSelector().getUuids().contains(accountUuid)) { - final int r = random.nextInt(100); + final int r = random.get().nextInt(100); return Optional.of(r < config.getUuidSelector().getUuidEnrollmentPercentage()); } diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/experiment/ExperimentEnrollmentManagerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/experiment/ExperimentEnrollmentManagerTest.java index cc801651c..a490c48e1 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/experiment/ExperimentEnrollmentManagerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/experiment/ExperimentEnrollmentManagerTest.java @@ -56,10 +56,11 @@ class ExperimentEnrollmentManagerTest { @BeforeEach void setUp() { - final DynamicConfigurationManager dynamicConfigurationManager = mock(DynamicConfigurationManager.class); + @SuppressWarnings("unchecked") + final DynamicConfigurationManager dynamicConfigurationManager = mock(DynamicConfigurationManager.class); final DynamicConfiguration dynamicConfiguration = mock(DynamicConfiguration.class); random = spy(new Random()); - experimentEnrollmentManager = new ExperimentEnrollmentManager(dynamicConfigurationManager, random); + experimentEnrollmentManager = new ExperimentEnrollmentManager(dynamicConfigurationManager, () -> random); uuidSelector = mock(DynamicExperimentEnrollmentConfiguration.UuidSelector.class); when(uuidSelector.getUuidEnrollmentPercentage()).thenReturn(100);