package beans;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import utils.Utils;
/**
* Created with IntelliJ IDEA.
* User: guym
* Date: 6/20/13
* Time: 1:52 PM
*/
public class ActiveWait implements Wait {
private long intervalMillis;
private long timeoutMillis;
private long startTimeMillis;
private static Logger logger = LoggerFactory.getLogger(ActiveWait.class);
@Override
public boolean waitUntil(Wait.Test resolved) {
startTimeMillis = System.currentTimeMillis();
// logger.info("waiting for serverId activation [{}]", serverId);
long startTime = System.currentTimeMillis();
logger.info("waiting for test [{}] while sleeping intervals of [{}]ms with timeout of [{}]ms", new Object[]{resolved.toString(), intervalMillis, timeoutMillis});
for ( long time = System.currentTimeMillis(); time - startTime < timeoutMillis ; Utils.threadSleep(intervalMillis), time = System.currentTimeMillis() )
{
// logger.info("Waiting for a server activation... Left timeout: {} sec", startTime + timeoutSeconds - time);
// if (serverApi.get(serverId).getStatus().equals(status)){
// return true; // active
if ( resolved.resolved() ){
return true;
}
}
return false;
}
public long getIntervalMillis() {
return intervalMillis;
}
public long getTimeLeftMillis(){
return startTimeMillis + timeoutMillis - System.currentTimeMillis();
}
public ActiveWait setIntervalMillis(long intervalMillis) {
this.intervalMillis = intervalMillis;
return this;
}
public long getTimeoutMillis() {
return timeoutMillis;
}
public ActiveWait setTimeoutMillis(long timeoutMillis) {
this.timeoutMillis = timeoutMillis;
return this;
}
}