Add validation annotations to DynamicExperimentEnrollmentConfiguration

This commit is contained in:
Chris Eager 2024-05-23 13:28:34 -05:00 committed by Jon Chambers
parent 9ec4f0b2f5
commit f6d1e566e7
2 changed files with 24 additions and 6 deletions

View File

@ -6,14 +6,13 @@
package org.whispersystems.textsecuregcm.configuration.dynamic; package org.whispersystems.textsecuregcm.configuration.dynamic;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.annotations.VisibleForTesting;
import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.util.Collections; import java.util.Collections;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
public class DynamicExperimentEnrollmentConfiguration { public class DynamicExperimentEnrollmentConfiguration {
@ -21,6 +20,7 @@ public class DynamicExperimentEnrollmentConfiguration {
@JsonProperty @JsonProperty
@Valid @Valid
@NotNull
private Set<UUID> uuids = Collections.emptySet(); private Set<UUID> uuids = Collections.emptySet();
/** /**
@ -45,7 +45,9 @@ public class DynamicExperimentEnrollmentConfiguration {
} }
private UuidSelector uuidSelector = new UuidSelector(); @Valid
@NotNull
private final UuidSelector uuidSelector = new UuidSelector();
/** /**
* If the UUID is not enrolled via {@link UuidSelector#uuids}, what is the percentage chance it should be enrolled. * If the UUID is not enrolled via {@link UuidSelector#uuids}, what is the percentage chance it should be enrolled.

View File

@ -44,6 +44,22 @@ class DynamicConfigurationTest {
assertFalse(emptyConfig.getExperimentEnrollmentConfiguration("test").isPresent()); assertFalse(emptyConfig.getExperimentEnrollmentConfiguration("test").isPresent());
} }
{
final String invalid = REQUIRED_CONFIG.concat("""
experiments:
percentageOnly:
enrollmentPercentage: 12
uuidsAndPercentage:
uuidSelector:
# the below results in uuids = null
uuids:
""");
final Optional<DynamicConfiguration> maybeConfig =
DynamicConfigurationManager.parseConfiguration(invalid, DynamicConfiguration.class);
assertFalse(maybeConfig.isPresent());
}
{ {
final String experimentConfigYaml = REQUIRED_CONFIG.concat(""" final String experimentConfigYaml = REQUIRED_CONFIG.concat("""
experiments: experiments: