package com.runner.util;
import com.runner.exception.TimeoutException;
import org.junit.runner.Description;
import java.util.concurrent.TimeUnit;
public class ConditionWaiter {
public static void wait(Condition condition, String message, final int maxCount, final Runnable runnable) {
int current = 0;
while (!condition.check()) {
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
}
current++;
if (current > maxCount) {
if (runnable != null) {
runnable.run();
}
throw new TimeoutException(message);
}
}
}
public static void wait(Condition condition, String message, final int maxCount) {
wait(condition, message, maxCount, null);
}
public static void wait(Condition condition, Description description, final int maxCount, final Runnable runnable) {
wait(condition, "timeout! " + description.toString(), maxCount, runnable);
}
}