.withLabel(Experiment.Label.valueOf((String) experimentMap.get("label"))) .withEndTime((Date) experimentMap.get("end_time")) .withDescription((String) experimentMap.get("description")) .withState(State.toExperimentState((String) experimentMap.get("state"))) .withModificationTime((Date) experimentMap.get("modification_time")) .withStartTime((Date) experimentMap.get("start_time")) .withCreationTime((Date) experimentMap.get("creation_time")) .withApplicationName(Application.Name.valueOf((String) experimentMap.get("app_name"))) .withSamplingPercent((Double) experimentMap.get("sampling_percent")) .build(); } catch (WasabiException e) { throw e;
builder.withState(updates.getState()); requiresUpdate = true; changeData = new ExperimentAuditInfo("state", experiment.getState().toString(), builder.withDescription(updates.getDescription()); requiresUpdate = true; changeData = new ExperimentAuditInfo("description", experiment.getDescription(), updates.getDescription()); builder.withHypothesisIsCorrect(updates.getHypothesisIsCorrect()); requiresUpdate = true; changeData = new ExperimentAuditInfo("hypothesis_is_correct", experiment.getHypothesisIsCorrect(), updates.getHypothesisIsCorrect()); builder.withResults(updates.getResults()); requiresUpdate = true; changeData = new ExperimentAuditInfo("results", experiment.getResults(), updates.getResults()); builder.withSamplingPercent(updates.getSamplingPercent()); requiresUpdate = true; changeData = new ExperimentAuditInfo("sampling_percent", experiment.getSamplingPercent().toString(), builder.withStartTime(updates.getStartTime()); requiresUpdate = true; changeData = new ExperimentAuditInfo("start_time", experiment.getStartTime().toString(), builder.withEndTime(updates.getEndTime()); requiresUpdate = true; changeData = new ExperimentAuditInfo("end_time", experiment.getEndTime().toString(), updates.getEndTime().toString()); builder.withIsPersonalizationEnabled(updates.getIsPersonalizationEnabled());
.withLabel(Experiment.Label.valueOf((String) experimentMap.get("label"))) .withEndTime((Date) experimentMap.get("end_time")) .withDescription((String) experimentMap.get("description")) .withState(State.toExperimentState((String) experimentMap.get("state"))) .withModificationTime((Date) experimentMap.get("modification_time")) .withStartTime((Date) experimentMap.get("start_time")) .withCreationTime((Date) experimentMap.get("creation_time")) .withApplicationName(Application.Name.valueOf((String) experimentMap.get("app_name"))) .withSamplingPercent((Double) experimentMap.get("sampling_percent")) .build();
.withDescription(experimentPojo.getDescription()) .withRule(experimentPojo.getRule()) .withSamplingPercent(experimentPojo.getSamplePercent()) .withStartTime(Preconditions.checkNotNull(experimentPojo.getStartTime())) .withCreationTime(Preconditions.checkNotNull(experimentPojo.getCreated())) .withEndTime(Preconditions.checkNotNull(experimentPojo.getEndTime())) .withState( State.valueOf( Preconditions.checkNotNull(experimentPojo.getState())) ).build();
/** * {@inheritDoc} */ public List<Experiment> getRecursiveMutualExclusions(Experiment experiment) { List<Experiment> visitedExperiments = new ArrayList<>(); Set<Experiment> unvisitedExperiments = new HashSet<>(); unvisitedExperiments.add(experiment); do { Set<Experiment> newUnvisitedExperiments = new HashSet<>(); for (Experiment tempExperiment : unvisitedExperiments) { visitedExperiments.add(tempExperiment); newUnvisitedExperiments.addAll( this.getExclusions(tempExperiment.getID()) .getExperiments() // Hack: We need to make experiments compatible, converting CassandraExperiments .parallelStream() .map(ce -> Experiment.from(ce).build()) .collect(Collectors.toList()) ); } unvisitedExperiments.addAll(newUnvisitedExperiments); unvisitedExperiments.removeAll(visitedExperiments); } while (!unvisitedExperiments.isEmpty()); return visitedExperiments; } }
/** * {@inheritDoc} */ @Override public Experiment updateExperimentState(Experiment experiment, State state) { LOGGER.debug("Updating experiment {} state {} ", new Object[]{experiment, state}); validator.validateExperiment(experiment); try { // Note that this timestamp gets serialized as mulliseconds from // the epoch, so timezone is irrelevant final Date NOW = new Date(); experimentAccessor.updateExperiment(state.name(), NOW, experiment.getID().getRawID()); experiment = Experiment.from(experiment).withState(state).build(); // Point the experiment index to this experiment updateExperimentLabelIndex(experiment.getID(), experiment.getApplicationName(), experiment.getLabel(), experiment.getStartTime(), experiment.getEndTime(), experiment.getState()); updateStateIndex(experiment); } catch (Exception e) { LOGGER.error("Error while updating experiment {} state {} ", new Object[]{experiment, state}, e); throw new RepositoryException("Could not update experiment with ID \"" + experiment.getID() + "\"" + " to state " + state.toString(), e); } return experiment; }
/** * Gets the experiment for a given ID and checks if the user has permission. * If the user has READ permissions, the experiment is returned. Otherwise the authorization throws an exception. * <p> * Throws an exception if the experiment is not found. * * @param experimentID the experiment ID * @param username the username * @return the experiment */ /*test*/ Experiment getAuthorizedExperimentOrThrow(Experiment.ID experimentID, Username username) { Experiment experiment; if ((experiment = experiments.getExperiment(experimentID)) == null) { throw new ExperimentNotFoundException(experimentID); } authorization.checkUserPermissions(username, experiment.getApplicationName(), READ); // Hack: We need to make experiments compatible, converting CassandraExperiment experiment = Experiment.from(experiment).build(); return experiment; }