update e164 experiments to use account enrollment percentage

This commit is contained in:
adel-signal 2024-11-04 13:00:25 -08:00 committed by GitHub
parent 7633a9b07a
commit 45fad7a6a9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 5 deletions

View File

@ -41,12 +41,11 @@ public class ExperimentEnrollmentManager {
.getConfiguration().getExperimentEnrollmentConfiguration(experimentName);
return maybeConfiguration
.map(config -> isAccountEnrolled(accountUuid, config)
.orElse(isEnrolled(accountUuid, config.getEnrollmentPercentage(), experimentName))
).orElse(false);
.map(config -> isAccountEnrolled(accountUuid, config, experimentName).orElse(false))
.orElse(false);
}
Optional<Boolean> isAccountEnrolled(final UUID accountUuid, DynamicExperimentEnrollmentConfiguration config) {
private Optional<Boolean> isAccountEnrolled(final UUID accountUuid, DynamicExperimentEnrollmentConfiguration config, String experimentName) {
if (config.getExcludedUuids().contains(accountUuid)) {
return Optional.of(false);
}
@ -55,6 +54,10 @@ public class ExperimentEnrollmentManager {
return Optional.of(r < config.getUuidSelector().getUuidEnrollmentPercentage());
}
if (isEnrolled(accountUuid, config.getEnrollmentPercentage(), experimentName)) {
return Optional.of(true);
}
return Optional.empty();
}
@ -64,7 +67,7 @@ public class ExperimentEnrollmentManager {
.getConfiguration().getExperimentEnrollmentConfiguration(experimentName);
return maybeConfiguration
.flatMap(config -> isAccountEnrolled(accountUuid, config))
.flatMap(config -> isAccountEnrolled(accountUuid, config, experimentName))
.orElse(isEnrolled(e164, experimentName));
}

View File

@ -133,6 +133,7 @@ class ExperimentEnrollmentManagerTest {
when(preRegistrationExperimentEnrollmentConfiguration.getExcludedE164s()).thenReturn(Collections.emptySet());
when(preRegistrationExperimentEnrollmentConfiguration.getExcludedCountryCodes()).thenReturn(Collections.emptySet());
// test UUID enrollment is prioritized
when(uuidSelector.getUuids()).thenReturn(Set.of(ACCOUNT_UUID));
when(uuidSelector.getUuidEnrollmentPercentage()).thenReturn(100);
assertTrue(experimentEnrollmentManager.isEnrolled(NOT_ENROLLED_164, account.getUuid(), E164_AND_UUID_EXPERIMENT_NAME));
@ -140,7 +141,14 @@ class ExperimentEnrollmentManagerTest {
assertFalse(experimentEnrollmentManager.isEnrolled(NOT_ENROLLED_164, account.getUuid(), E164_AND_UUID_EXPERIMENT_NAME));
assertFalse(experimentEnrollmentManager.isEnrolled(ENROLLED_164, account.getUuid(), E164_AND_UUID_EXPERIMENT_NAME));
// test fallback from UUID enrollment to general enrollment percentage
when(uuidSelector.getUuids()).thenReturn(Collections.emptySet());
when(experimentEnrollmentConfiguration.getEnrollmentPercentage()).thenReturn(100);
assertTrue(experimentEnrollmentManager.isEnrolled(NOT_ENROLLED_164, account.getUuid(), E164_AND_UUID_EXPERIMENT_NAME));
assertTrue(experimentEnrollmentManager.isEnrolled(ENROLLED_164, account.getUuid(), E164_AND_UUID_EXPERIMENT_NAME));
// test fallback from UUID/general enrollment to e164 enrollment
when(experimentEnrollmentConfiguration.getEnrollmentPercentage()).thenReturn(0);
assertTrue(experimentEnrollmentManager.isEnrolled(ENROLLED_164, account.getUuid(), E164_AND_UUID_EXPERIMENT_NAME));
assertFalse(experimentEnrollmentManager.isEnrolled(NOT_ENROLLED_164, account.getUuid(), E164_AND_UUID_EXPERIMENT_NAME));
when(preRegistrationExperimentEnrollmentConfiguration.getEnrollmentPercentage()).thenReturn(100);