@GET @Path("/{experimentName}") public ExperimentDto getExperiment(@PathParam("experimentName") String experimentName) { return mapper.toDto( ensureExists(experiments.get(experimentName)), ExperimentDto.class ); }
@Test public void testGetActiveExperiments() { experiments .create("foo") .save(); assertFalse("should have no active experiments", experiments.getActiveExperiments().iterator().hasNext()); experiments .get("foo") .activate() .save(); assertTrue("should have an active experiment", experiments.getActiveExperiments().iterator().hasNext()); }
@DELETE @Path("/{experimentName}") public void removeExperiment(@PathParam("experimentName") String experimentName) { ensureExists(experiments.get(experimentName)) .delete(); } }
@GET @Path("/{treatmentName}") public TreatmentDto getTreatment(@PathParam("experimentName") String experimentName, @PathParam("treatmentName") String treatmentName) { return mapper.toDto( ensureExists( ensureExists(experiments.get(experimentName)).getTreatment(treatmentName) ), TreatmentDto.class ); }
@GET public Iterable<AllocationDto> getAllocations(@PathParam("experimentName") String experimentName) { return mapper.toDto( ensureExists(experiments.get(experimentName)).getAllocations(), AllocationDto.class ); }
@DELETE public void clearAllocations(@PathParam("experimentName") String experimentName) { ensureExists(experiments.get(experimentName)) .deallocateAll() .save(); } }
@GET public Iterable<TreatmentOverrideDto> getOverrides(@PathParam("experimentName") String experimentName) { return mapper.toDto( ensureExists(experiments.get(experimentName)).getOverrides(), TreatmentOverrideDto.class ); }
@DELETE public void clearTreatments(@PathParam("experimentName") String experimentName) { ensureExists(experiments.get(experimentName)) .clearTreatments() .save(); } }
@DELETE public void clearOverrides(@PathParam("experimentName") String experimentName) { ensureExists(experiments.get(experimentName)) .clearOverrides() .save(); }
@GET public Iterable<TreatmentDto> getTreatments(@PathParam("experimentName") String experimentName) { return mapper.toDto( ensureExists(experiments.get(experimentName)).getTreatments(), TreatmentDto.class ); }
@GET @Path("/{overrideName}") public TreatmentOverrideDto getOverride(@PathParam("experimentName") String experimentName, @PathParam("overrideName") String overrideName) { return mapper.toDto( ensureExists( ensureExists( experiments.get(experimentName) ).getOverride(overrideName) ), TreatmentOverrideDto.class ); }
@Test public void testGetReturnsNull() { assertNull("should return null when experiment not found", experiments.get("foo")); }
@DELETE @Path("/{overrideName}") public void removeOverride(@PathParam("experimentName") String experimentName, @PathParam("overrideName") String overrideName) { final Experiment experiment = ensureExists(experiments.get(experimentName)); ensureExists(experiment.getOverride(overrideName)); experiment .removeOverride(overrideName) .save(); } }
@DELETE @Path("/{treatmentName}") public void removeTreatment(@PathParam("experimentName") String experimentName, @PathParam("treatmentName") String treatmentName) { final Experiment experiment = ensureExists(experiments.get(experimentName)); ensureExists(experiment.getTreatment(treatmentName)); experiment .removeTreatment(treatmentName) .save(); }
@POST @Path("/{treatmentName}") public void updateTreatment(@PathParam("experimentName") String experimentName, @PathParam("treatmentName") String treatmentName, @Valid UpdateTreatmentRequest request) { final Experiment experiment = ensureExists(experiments.get(experimentName)); final Treatment treatment = ensureExists(ensureExists(experiment).getTreatment(treatmentName)); if (request.getDescription() != null) { treatment.setDescription(request.getDescription().orNull()); } experiment.save(); }
@PUT public Response addTreatment(@PathParam("experimentName") String experimentName, @Valid TreatmentDto treatmentDto) { ensureExists(experiments.get(experimentName)) .addTreatment(treatmentDto.getName(), treatmentDto.getDescription()) .save(); return created(); }
@PUT public Response addOverride(@PathParam("experimentName") String experimentName, @Valid TreatmentOverrideRequest request) { ensureExists(experiments.get(experimentName)) .addOverride( request.getName(), request.getTreatment(), request.getFilter() ) .save(); return created(); }
@POST public void updateAllocations(@PathParam("experimentName") String experimentName, @Valid List<AllocationRequest> requests) { final Experiment experiment = ensureExists(experiments.get(experimentName)); for (AllocationRequest request : requests) { if (request instanceof AllocationRequest.Deallocate) { experiment.deallocate(request.getTreatment(), request.getSize()); } else if (request instanceof AllocationRequest.Reallocate) { final AllocationRequest.Reallocate reallocation = (AllocationRequest.Reallocate) request; experiment.reallocate(reallocation.getTreatment(), reallocation.getTarget(), reallocation.getSize()); } else { experiment.allocate(request.getTreatment(), request.getSize()); } } experiment.save(); }