package org.radargun.stages; import java.util.List; import org.radargun.DistStageAck; import org.radargun.StageResult; import org.radargun.config.Property; import org.radargun.config.Stage; import org.radargun.state.SlaveState; import org.radargun.utils.TimeConverter; /** * @author Radim Vansa <rvansa@redhat.com> */ @Stage(doc = "Example stage in different module") public class ExampleStage extends AbstractDistStage { @Property(doc = "Example property that must be set", optional = false) private String foo; @Property(doc = "Example property delaying the stage executions. Default is 5 seconds.", converter = TimeConverter.class) private long delay = 5000; @Override public DistStageAck executeOnSlave() { try { Thread.sleep(delay); } catch (InterruptedException e) { log.warn("Stage was interrupted!", e); } log.infof("Slave %d says: %s", slaveState.getSlaveIndex(), foo); return new ExampleAck(slaveState, String.format("Slave %d said: %s", slaveState.getSlaveIndex(), foo)); } @Override public StageResult processAckOnMaster(List<DistStageAck> acks) { StageResult result = super.processAckOnMaster(acks); if (!result.isError()) { for (ExampleAck ack : instancesOf(acks, ExampleAck.class)) { log.infof("Slave %d reports: %s", ack.getSlaveIndex(), ack.getExampleMessage()); } } return result; } private static class ExampleAck extends DistStageAck { private String exampleMessage; public ExampleAck(SlaveState slaveState, String exampleMessage) { super(slaveState); this.exampleMessage = exampleMessage; } public String getExampleMessage() { return exampleMessage; } } }