diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java index 9d8d11198..d1349b206 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/dynamic/DynamicConfiguration.java @@ -33,7 +33,8 @@ public class DynamicConfiguration { @Valid private DynamicTwilioConfiguration twilio = new DynamicTwilioConfiguration(); - public Optional getExperimentEnrollmentConfiguration(final String experimentName) { + public Optional getExperimentEnrollmentConfiguration( + final String experimentName) { return Optional.ofNullable(experiments.get(experimentName)); } 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 08c080045..ec250783a 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/experiment/ExperimentEnrollmentManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/experiment/ExperimentEnrollmentManager.java @@ -15,29 +15,31 @@ import java.util.UUID; public class ExperimentEnrollmentManager { - private final DynamicConfigurationManager dynamicConfigurationManager; + private final DynamicConfigurationManager dynamicConfigurationManager; - public ExperimentEnrollmentManager(final DynamicConfigurationManager dynamicConfigurationManager) { - this.dynamicConfigurationManager = dynamicConfigurationManager; + public ExperimentEnrollmentManager(final DynamicConfigurationManager dynamicConfigurationManager) { + this.dynamicConfigurationManager = dynamicConfigurationManager; + } + + public boolean isEnrolled(final UUID accountUuid, final String experimentName) { + final Optional maybeConfiguration = dynamicConfigurationManager + .getConfiguration().getExperimentEnrollmentConfiguration(experimentName); + + final Set enrolledUuids = maybeConfiguration.map(DynamicExperimentEnrollmentConfiguration::getEnrolledUuids) + .orElse(Collections.emptySet()); + + final boolean enrolled; + + if (enrolledUuids.contains(accountUuid)) { + enrolled = true; + } else { + final int threshold = maybeConfiguration.map(DynamicExperimentEnrollmentConfiguration::getEnrollmentPercentage) + .orElse(0); + final int enrollmentHash = ((accountUuid.hashCode() ^ experimentName.hashCode()) & Integer.MAX_VALUE) % 100; + + enrolled = enrollmentHash < threshold; } - public boolean isEnrolled(final UUID accountUuid, final String experimentName) { - final Optional maybeConfiguration = dynamicConfigurationManager.getConfiguration().getExperimentEnrollmentConfiguration(experimentName); - - final Set enrolledUuids = maybeConfiguration.map(DynamicExperimentEnrollmentConfiguration::getEnrolledUuids) - .orElse(Collections.emptySet()); - - final boolean enrolled; - - if (enrolledUuids.contains(accountUuid)) { - enrolled = true; - } else { - final int threshold = maybeConfiguration.map(DynamicExperimentEnrollmentConfiguration::getEnrollmentPercentage).orElse(0); - final int enrollmentHash = ((accountUuid.hashCode() ^ experimentName.hashCode()) & Integer.MAX_VALUE) % 100; - - enrolled = enrollmentHash < threshold; - } - - return enrolled; - } + return enrolled; + } }