package org.zstack.test; import org.zstack.utils.ShellUtils; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; public class UnitTestUtils { public static void runTestCase(Class<?> clazz, String param) { if (param != null) { ShellUtils.runVerbose(String.format("mvn test -Dtest=%s %s", clazz.getSimpleName(), param), System.getProperty("user.dir"), false); } else { ShellUtils.runVerbose(String.format("mvn test -Dtest=%s", clazz.getSimpleName()), System.getProperty("user.dir"), false); } } public static void runTestCase(Class<?> clazz) { runTestCase(clazz, null); } public static void sleepRetry(Callable runnable, int interval, int retries, Class catchedException) { while (retries > 0) { try { runnable.call(); return; } catch (Throwable t) { if (catchedException.isAssignableFrom(t.getClass())) { retries--; try { TimeUnit.SECONDS.sleep(interval); } catch (InterruptedException e) { e.printStackTrace(); } } else { throw new RuntimeException(t); } } } } public static void sleepRetry(Callable runnable, int retries) { sleepRetry(runnable, 1, retries, Throwable.class); } }