package com.loadimpact.eval;
import com.loadimpact.resource.Status;
import java.util.Arrays;
/**
* Tracks the state transitions for progress monitoring.
*
* @author jens
*/
@SuppressWarnings("UnusedDeclaration")
public enum LoadTestState {
notStarted, initializing, warmingUp, checkingThresholds, finishing, terminated;
public boolean isBeforeCheckingThresholds() {
return this == warmingUp;
}
public boolean isCheckingThresholds() {
return this == checkingThresholds;
}
public boolean isActive() {
return Arrays.asList(warmingUp, checkingThresholds).contains(this);
}
public LoadTestState moveToNext(Status status) {
return moveToNext(status, false);
}
public LoadTestState moveToNext(Status status, boolean shouldTransition) {
if (status == Status.CREATED || status == Status.QUEUED) return notStarted;
if (status == Status.INITIALIZING) return initializing;
if (status == Status.RUNNING && (this == notStarted || this == initializing)) return warmingUp;
if (status == Status.RUNNING && this == warmingUp && shouldTransition) return checkingThresholds;
if (status == Status.RUNNING && this == checkingThresholds && shouldTransition) return finishing;
if (status.isCompleted()) return terminated;
return this;
}
}