package com.loadimpact.resource;
import java.util.Arrays;
import java.util.List;
/**
* Enumerates all possible status types during a load test.
*
* @author jens
*/
public enum Status {
CREATED(-1), QUEUED(0), INITIALIZING(1), RUNNING(2), FINISHED(3), TIMED_OUT(4),
ABORTING_BY_USER(5), ABORTED_BY_USER(6), ABORTING_BY_SYSTEM(7), ABORTED_BY_SYSTEM(8), FAILED(99);
private static List<Status> WARMING_UP = Arrays.asList(CREATED, QUEUED, INITIALIZING);
private static List<Status> NOT_COMPLETED = Arrays.asList(CREATED, QUEUED, INITIALIZING, RUNNING);
private static List<Status> ABORTED = Arrays.asList(ABORTING_BY_USER, ABORTED_BY_USER, ABORTING_BY_SYSTEM, ABORTED_BY_SYSTEM);
final int code;
Status(int code) {
this.code = code;
}
public boolean isWarmingUp() {
return WARMING_UP.contains(this);
}
public boolean isInProgress() {
return NOT_COMPLETED.contains(this);
}
public boolean isCompleted() {
return !isInProgress();
}
public boolean isAborted() {
return ABORTED.contains(this);
}
public boolean isRunning() {
return this == RUNNING;
}
public boolean isSuccessful() {
return this == FINISHED;
}
public static Status valueOf(int status) {
// return values()[status + 1];
for (Status s : values()) {
if (s.code == status) return s;
}
throw new IllegalArgumentException("unknown status code " + status);
}
}