.append(id, other.getID()) .append(creationTime, other.getCreationTime()) .append(modificationTime, other.getModificationTime()) .append(description, other.getDescription()) .append(samplingPercent, other.getSamplingPercent()) .append(rule, other.getRule()) .append(startTime, other.getStartTime()) .append(endTime, other.getEndTime()) .append(state, other.getState()) .append(label, other.getLabel()) .append(applicationName, other.getApplicationName()) .append(priority, other.getPriority()) .append(isPersonalizationEnabled, other.getIsPersonalizationEnabled()) .append(modelName, other.getModelName()) .append(modelVersion, other.getModelVersion()) .append(userCap, other.getUserCap()) .append(isRapidExperiment, other.getIsRapidExperiment()) .append(creatorID, other.getCreatorID()) .append(tags, other.getTags()) .isEquals();
private Builder(Experiment.ID id) { super(); instance = new PrioritizedExperiment(); instance.id = Preconditions.checkNotNull(id); }
appPriorities.getPrioritizedExperiments() .stream() .filter(experiment -> (null != experiment.getIsRapidExperiment() && experiment.getIsRapidExperiment()) && experiment.getState().equals(Experiment.State.RUNNING)) .map(experiment -> experiment.getID()) .collect(Collectors.toList()); if (experimentBatch.getLabels().contains(experiment.getLabel())) { LOGGER.debug("Experiment ({}) is part of given ExperimentBatch....", experiment.getLabel()); String labelStr = experiment.getLabel().toString(); Experiment.Label label = Experiment.Label.valueOf(labelStr); Assignment assignment = null; try { boolean experimentCreateAssignment = allowAssignmentsOptional.isPresent() ? (allowAssignmentsOptional.get().get(experiment.getID())) : createAssignment; context, experimentCreateAssignment, forceInExperiment, segmentationProfile, headers, experimentMap.get(experiment.getID()), bucketMap.get(experiment.getID()), userAssignments, exclusionMap, rapidExperimentToAssignmentCounts, forceProfileCheck); userAssignments.put(experiment.getID(), experiment.getLabel(), assignment.getBucketLabel() != null ? assignment.getBucketLabel().toString() : "null"); assignmentPairs.add(new ImmutablePair<Experiment, Assignment>(experimentMap.get(experiment.getID()), assignment)); assignment = nullAssignment(userID, applicationName, experiment.getID(), label, ASSIGNMENT_FAILED);
/** * Get the experiment object for given application & experiment label. * <p> * If metadata cache is enabled then fetch from cache else fetch from database. * * @param applicationName * @param experimentLabel * @return experiment object */ protected Experiment getExperiment(Application.Name applicationName, Experiment.Label experimentLabel) { Experiment result = null; if (metadataCacheEnabled) { //First fetch experiment list sorted by priorities (contains non-deleted experiment-ids). //This experiment-priority list is the source of truth for ALL assignment flows while looking up experiment... Optional<PrioritizedExperimentList> prioritizedExperimentListOptional = metadataCache.getPrioritizedExperimentListMap(applicationName); if (prioritizedExperimentListOptional.isPresent()) { //Iterate as per experiment priority and look for the matching experiment by their label for (PrioritizedExperiment prioritizedExperiment : prioritizedExperimentListOptional.get().getPrioritizedExperiments()) { if (experimentLabel.equals(prioritizedExperiment.getLabel())) { //Upon match, get the complete experiment object from cache result = metadataCache.getExperimentById(prioritizedExperiment.getID()).orElse(null); break; } } } } else { result = repository.getExperiment(applicationName, experimentLabel); } return result; }
for (PrioritizedExperiment prioritizedExperiment : prioritizedExperiments.getPrioritizedExperiments()) { if (prioritizedExperiment.getID().equals(experiment.getID())) { experiment.setPriority(prioritizedExperiment.getPriority());
prioritizedExperimentList .addPrioritizedExperiment(PrioritizedExperiment .from(ExperimentHelper .makeExperiment(experimentPojo), priorityValue).build());
Experiment exp = experimentMap.get(Experiment.ID.valueOf(uuid)); if (nonNull(exp)) { prioritizedExperimentList.addPrioritizedExperiment(PrioritizedExperiment.from(exp, priorityValue).build()); priorityValue += 1; } else {
.append(id, other.getID()) .append(creationTime, other.getCreationTime()) .append(modificationTime, other.getModificationTime()) .append(description, other.getDescription()) .append(samplingPercent, other.getSamplingPercent()) .append(rule, other.getRule()) .append(startTime, other.getStartTime()) .append(endTime, other.getEndTime()) .append(state, other.getState()) .append(label, other.getLabel()) .append(applicationName, other.getApplicationName()) .append(priority, other.getPriority()) .append(isPersonalizationEnabled, other.getIsPersonalizationEnabled()) .append(modelName, other.getModelName()) .append(modelVersion, other.getModelVersion()) .append(userCap, other.getUserCap()) .append(isRapidExperiment, other.getIsRapidExperiment()) .append(creatorID, other.getCreatorID()) .append(tags, other.getTags()) .isEquals();
for (UUID uuid : priority.getPriorities()) { Experiment exp = experimentMap.get(Experiment.ID.valueOf(uuid)); prioritizedExperimentList.addPrioritizedExperiment(PrioritizedExperiment.from(exp, priorityValue).build()); priorityValue += 1;
private Builder(Experiment.ID id) { super(); instance = new PrioritizedExperiment(); instance.id = Preconditions.checkNotNull(id); }