package org.radargun.stages; import java.util.List; import org.radargun.DistStageAck; import org.radargun.StageResult; import org.radargun.config.Namespace; import org.radargun.config.Stage; import org.radargun.stages.test.Completion; import org.radargun.stages.test.TimeStressorCompletion; /** * A stage for REST operations running in background. * * @author Martin Gencur */ @Namespace(name = RESTOperationsTestStage.NAMESPACE) @Stage(doc = "Stage for starting REST operations in the background") public class BackgroundRESTOperationsStartStage extends RESTOperationsTestStage { //Override Init method from BaseTestStage in order to handle duration specifically @Override public void check() { if (duration > 0 || duration < 0) { duration = 0; log.warn("Parameter duration ignored in background stage. Stage will run indefinitely until " + "it is manually stopped from " + BackgroundRESTOperationsStopStage.class.getSimpleName()); } if (numOperations > 0) { numOperations = 0; log.warn("Parameter numOperations ignored in background stage."); } if (timeout > 0 || timeout < 0) { timeout = 0; log.warn("Parameter timeout ignored in background stage."); } } @Override protected Completion createCompletion() { return new TimeStressorCompletion(duration); } @Override public DistStageAck executeOnSlave() { if (!isServiceRunning()) { log.info("Not running test on this slave as service is not running."); return successfulResponse(); } try { log.info("Starting test " + testName + " in the background."); stressorsManager = setUpAndStartStressors(); slaveState.put(testName, this); return successfulResponse(); } catch (Exception e) { return errorResponse("Exception while initializing the test", e); } } @Override public StageResult processAckOnMaster(List<DistStageAck> acks) { StageResult result = StageResult.SUCCESS; logDurationInfo(acks); for (DistStageAck ack : acks) { if (ack.isError()) { log.warn("Received error ack " + ack); result = errorResult(); } else { if (log.isTraceEnabled()) { log.trace("Received success ack " + ack); } } } return result; } }