update e164 experiments to use account enrollment percentage
This commit is contained in:
parent
7633a9b07a
commit
45fad7a6a9
|
@ -41,12 +41,11 @@ public class ExperimentEnrollmentManager {
|
||||||
.getConfiguration().getExperimentEnrollmentConfiguration(experimentName);
|
.getConfiguration().getExperimentEnrollmentConfiguration(experimentName);
|
||||||
|
|
||||||
return maybeConfiguration
|
return maybeConfiguration
|
||||||
.map(config -> isAccountEnrolled(accountUuid, config)
|
.map(config -> isAccountEnrolled(accountUuid, config, experimentName).orElse(false))
|
||||||
.orElse(isEnrolled(accountUuid, config.getEnrollmentPercentage(), 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)) {
|
if (config.getExcludedUuids().contains(accountUuid)) {
|
||||||
return Optional.of(false);
|
return Optional.of(false);
|
||||||
}
|
}
|
||||||
|
@ -55,6 +54,10 @@ public class ExperimentEnrollmentManager {
|
||||||
return Optional.of(r < config.getUuidSelector().getUuidEnrollmentPercentage());
|
return Optional.of(r < config.getUuidSelector().getUuidEnrollmentPercentage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isEnrolled(accountUuid, config.getEnrollmentPercentage(), experimentName)) {
|
||||||
|
return Optional.of(true);
|
||||||
|
}
|
||||||
|
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +67,7 @@ public class ExperimentEnrollmentManager {
|
||||||
.getConfiguration().getExperimentEnrollmentConfiguration(experimentName);
|
.getConfiguration().getExperimentEnrollmentConfiguration(experimentName);
|
||||||
|
|
||||||
return maybeConfiguration
|
return maybeConfiguration
|
||||||
.flatMap(config -> isAccountEnrolled(accountUuid, config))
|
.flatMap(config -> isAccountEnrolled(accountUuid, config, experimentName))
|
||||||
.orElse(isEnrolled(e164, experimentName));
|
.orElse(isEnrolled(e164, experimentName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -133,6 +133,7 @@ class ExperimentEnrollmentManagerTest {
|
||||||
when(preRegistrationExperimentEnrollmentConfiguration.getExcludedE164s()).thenReturn(Collections.emptySet());
|
when(preRegistrationExperimentEnrollmentConfiguration.getExcludedE164s()).thenReturn(Collections.emptySet());
|
||||||
when(preRegistrationExperimentEnrollmentConfiguration.getExcludedCountryCodes()).thenReturn(Collections.emptySet());
|
when(preRegistrationExperimentEnrollmentConfiguration.getExcludedCountryCodes()).thenReturn(Collections.emptySet());
|
||||||
|
|
||||||
|
// test UUID enrollment is prioritized
|
||||||
when(uuidSelector.getUuids()).thenReturn(Set.of(ACCOUNT_UUID));
|
when(uuidSelector.getUuids()).thenReturn(Set.of(ACCOUNT_UUID));
|
||||||
when(uuidSelector.getUuidEnrollmentPercentage()).thenReturn(100);
|
when(uuidSelector.getUuidEnrollmentPercentage()).thenReturn(100);
|
||||||
assertTrue(experimentEnrollmentManager.isEnrolled(NOT_ENROLLED_164, account.getUuid(), E164_AND_UUID_EXPERIMENT_NAME));
|
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(NOT_ENROLLED_164, account.getUuid(), E164_AND_UUID_EXPERIMENT_NAME));
|
||||||
assertFalse(experimentEnrollmentManager.isEnrolled(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(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));
|
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));
|
assertFalse(experimentEnrollmentManager.isEnrolled(NOT_ENROLLED_164, account.getUuid(), E164_AND_UUID_EXPERIMENT_NAME));
|
||||||
when(preRegistrationExperimentEnrollmentConfiguration.getEnrollmentPercentage()).thenReturn(100);
|
when(preRegistrationExperimentEnrollmentConfiguration.getEnrollmentPercentage()).thenReturn(100);
|
||||||
|
|
Loading…
Reference in New Issue