package org.arquillian.cube.docker.impl.await;
import org.arquillian.cube.Sleep;
import org.arquillian.cube.impl.util.ReflectionUtil;
import org.arquillian.cube.impl.util.Timespan;
import org.jboss.arquillian.core.api.annotation.Observes;
import org.jboss.arquillian.test.spi.TestClass;
import org.jboss.arquillian.test.spi.event.suite.BeforeClass;
import java.util.concurrent.TimeUnit;
public class SleepBeforeClassObserver {
public void executeSleep(@Observes BeforeClass beforeClass) {
final TestClass testClass = beforeClass.getTestClass();
if (ReflectionUtil.isClassWithAnnotation(testClass.getJavaClass(), Sleep.class)) {
final Sleep sleep = testClass.getAnnotation(Sleep.class);
executeSleep(sleep);
}
}
private void executeSleep(Sleep sleep) {
final long milliseconds = Timespan.toMilliseconds(sleep.value());
try {
TimeUnit.MILLISECONDS.sleep(milliseconds);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}