/** * {@inheritDoc} */ @Override public Experiment getExperiment(Experiment.ID id) { return cassandraRepository.getExperiment(id); }
/** * {@inheritDoc} */ @Override public Experiment getExperiment(Application.Name appName, Experiment.Label label) { return cassandraRepository.getExperiment(appName, label); }
public Experiment getExperiment(Experiment.ID id) { return databaseRepository.getExperiment(id); }
@Override public boolean doSegmentTest(Application.Name applicationName, Experiment.Label experimentLabel, Context context, SegmentationProfile segmentationProfile, HttpHeaders headers) { Experiment experiment = repository.getExperiment(applicationName, experimentLabel); if (experiment == null) { throw new IllegalArgumentException(new StringBuilder("Experiment not found for application \"") .append(applicationName).append("\" and label \"").append(experimentLabel).append("\"").toString()); } return doesProfileMatch(experiment, segmentationProfile, headers, context, true); }
/** * {@inheritDoc} */ @Override public AssignmentCounts getAssignmentCounts(Experiment.ID experimentID, Context context) { // Uses counters Experiment experiment = cassandraRepository.getExperiment(experimentID); if (Objects.isNull(experiment)) { throw new ExperimentNotFoundException(experimentID); } return assignmentRepository.getBucketAssignmentCount(experiment); }
/** * Get the experiment label based on experiment ID * If metadata cache is enabled then fetch from cache else fetch from database. * * @param experimentID * @return */ protected Experiment.Label getExperimentLabel(Experiment.ID experimentID) { if (isNull(experimentID)) return null; Experiment.Label label = null; Experiment exp = null; if (metadataCacheEnabled) { Optional<Experiment> expOptional = metadataCache.getExperimentById(experimentID); exp = expOptional.isPresent() ? expOptional.get() : null; } else { exp = repository.getExperiment(experimentID); } if (nonNull(exp)) { label = exp.getLabel(); } return label; }
List<Date> getDateHourRangeList(Experiment.ID experimentID, Parameters parameters) { final Experiment id = experimentRepository.getExperiment(experimentID); if (isNull(id)) { throw new ExperimentNotFoundException(experimentID); } final Optional<Date> from_ts = Optional.ofNullable(parameters.getFromTime()); final Optional<Date> to_ts = Optional.ofNullable(parameters.getToTime()); // Fetches the relevant partitions for a given time window where the user assignments data resides. return getUserAssignmentPartitions( from_ts.orElseGet(id::getCreationTime), to_ts.orElseGet(Date::new) ); }
/** * {@inheritDoc} */ @Override public StreamingOutput getAssignmentStream(Experiment.ID experimentID, Context context, Parameters parameters, Boolean ignoreNullBucket) { Experiment experiment = repository.getExperiment(experimentID); if (experiment == null) { throw new ExperimentNotFoundException(experimentID); } return assignmentsRepository.getAssignmentStream(experimentID, context, parameters, ignoreNullBucket); }
/** * 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; }