private static final Logger LOG = LoggerFactory.getLogger(ScenarioHandler.class);
private Deque<ClientEvent> scenario;
- private BlockingQueue<byte[]> ofMsg;
+ private final BlockingQueue<byte[]> ofMsg;
private ChannelHandlerContext ctx;
private int eventNumber;
private boolean scenarioFinished = false;
+ private int freeze = 2;
+ private long sleepBetweenTries = 100L;
+ private boolean finishedOK = true;
/**
*
- * @param scenario
+ * @param scenario {@link Deque}
*/
public ScenarioHandler(Deque<ClientEvent> scenario) {
this.scenario = scenario;
ofMsg = new LinkedBlockingQueue<>();
}
+ public ScenarioHandler(Deque<ClientEvent> scenario, int freeze, long sleepBetweenTries){
+ this.scenario = scenario;
+ ofMsg = new LinkedBlockingQueue<>();
+ this.sleepBetweenTries = sleepBetweenTries;
+ this.freeze = freeze;
+ }
+
@Override
public void run() {
int freezeCounter = 0;
event.setCtx(ctx);
}
if (peek.eventExecuted()) {
+ LOG.info("Scenario step finished OK, moving to next step.");
scenario.removeLast();
eventNumber++;
freezeCounter = 0;
+ finishedOK = true;
} else {
freezeCounter++;
}
- if (freezeCounter > 2) {
+ if (freezeCounter > freeze) {
LOG.warn("Scenario frozen: {}", freezeCounter);
+ LOG.warn("Scenario step not finished NOT OK!", freezeCounter);
+ this.finishedOK = false;
break;
}
try {
- sleep(100);
+ sleep(sleepBetweenTries);
} catch (InterruptedException e) {
LOG.error(e.getMessage(), e);
}
public boolean isScenarioFinished() {
return scenarioFinished;
}
+
+ public boolean isFinishedOK() {
+ return finishedOK;
+ }
}