Add an experiment enrollment manager.

This commit is contained in:
Jon Chambers
2021-01-26 12:40:41 -05:00
committed by Jon Chambers
parent 92f6a79e1f
commit 35fc98a188
6 changed files with 227 additions and 2 deletions

View File

@@ -1,5 +1,19 @@
package org.whispersystems.textsecuregcm.configuration.dynamic;
import com.fasterxml.jackson.annotation.JsonProperty;
import javax.validation.Valid;
import java.util.Collections;
import java.util.Map;
import java.util.Optional;
public class DynamicConfiguration {
@JsonProperty
@Valid
private Map<String, DynamicExperimentEnrollmentConfiguration> experiments = Collections.emptyMap();
public Optional<DynamicExperimentEnrollmentConfiguration> getExperimentEnrollmentConfiguration(final String experimentName) {
return Optional.ofNullable(experiments.get(experimentName));
}
}

View File

@@ -0,0 +1,37 @@
/*
* Copyright 2021 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.whispersystems.textsecuregcm.configuration.dynamic;
import com.fasterxml.jackson.annotation.JsonProperty;
import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
public class DynamicExperimentEnrollmentConfiguration {
@JsonProperty
@Valid
private Set<UUID> enrolledUuids = Collections.emptySet();
@JsonProperty
@Valid
@Min(0)
@Max(100)
private int enrollmentPercentage = 0;
public Set<UUID> getEnrolledUuids() {
return enrolledUuids;
}
public int getEnrollmentPercentage() {
return enrollmentPercentage;
}
}