package org.infinispan.test.integration.security.utils;
import java.net.URL;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.SystemUtils;
import org.jboss.as.arquillian.container.ManagementClient;
import org.jboss.as.test.integration.security.common.CoreUtils;
import org.jboss.logging.Logger;
/**
* Common utilities for JDG security tests.
*
* @author Jan Lanik
* @author Josef Cacek
* @author Vitalii Chepeliuk
*/
public class Utils extends CoreUtils {
private static final Logger LOGGER = Logger.getLogger(Utils.class);
public static final boolean IBM_JDK = StringUtils.startsWith(SystemUtils.JAVA_VENDOR, "IBM");
public static URL getResource(String name) {
ClassLoader tccl = Thread.currentThread().getContextClassLoader();
return tccl.getResource(name);
}
private static final long STOP_DELAY_DEFAULT = 0;
/**
* stops execution of the program indefinitely useful in testsuite debugging
*/
public static void stop() {
stop(STOP_DELAY_DEFAULT);
}
/**
* stop test execution for a given time interval useful for debugging
*
* @param delay interval (milliseconds), if delay<=0, interval is considered to be infinite (Long.MAX_VALUE)
*/
public static void stop(long delay) {
long currentTime = System.currentTimeMillis();
long remainingTime = 0 < delay ? currentTime + delay - System.currentTimeMillis() : Long.MAX_VALUE;
while (remainingTime > 0) {
try {
Thread.sleep(remainingTime);
} catch (InterruptedException ex) {
remainingTime = currentTime + delay - System.currentTimeMillis();
continue;
}
}
}
/**
* Sets or removes (in case value==null) a system property. It's only a helper method, which avoids
* {@link NullPointerException} thrown from {@link System#setProperty(String, String)} method, when the value is
* <code>null</code>.
*
* @param key property name
* @param value property value
* @return the previous string value of the system property
*/
public static String setSystemProperty(final String key, final String value) {
return value == null ? System.clearProperty(key) : System.setProperty(key, value);
}
/**
* Returns canonical hostname retrieved from management address of the givem
* {@link org.jboss.as.arquillian.container.ManagementClient}.
*
* @param managementClient
* @return
*/
public static final String getCannonicalHost(final ManagementClient managementClient) {
return getCannonicalHost(managementClient.getMgmtAddress());
}
}