package com.redhat.qe.auto.testng;
import java.io.File;
import java.io.FileInputStream;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
import com.redhat.qe.tools.compare.CollectionSorter;
public class TestScript {
protected static boolean initialized = false;
protected static Logger log = Logger.getLogger(TestScript.class.getName());
protected static final String defaultAutomationPropertiesFile=System.getenv("HOME")+"/automation.properties";
protected static final String defaultLogPropertiesFile=System.getProperty("user.home")+ "/log.properties";
public TestScript() {
if (initialized) return; //only need to run this stuff once per jvm
String propFile ="";
//load log properties
try{
Thread.currentThread().setContextClassLoader(ClassLoader.getSystemClassLoader());
propFile = System.getProperty("log.propertiesfile", defaultLogPropertiesFile);
if (! new File(propFile).exists()) {
log.fine("No log.propertiesfile specified, nor found in HOME dir, trying to use default in project.");
propFile = "log.properties";
}
else{
log.info("Found log properties file: "+propFile);
}
LogManager.getLogManager().readConfiguration(new FileInputStream(propFile));
log.fine("Loaded logger configuration from log.propertiesfile: "+propFile);
} catch(Throwable e){
e.printStackTrace();
log.log(Level.SEVERE, "Could not load log properties from "+propFile, e);
}
//load automation properties
try{
propFile = (System.getProperty("automation.propertiesfile"));
if(propFile == null || propFile.length() == 0){
log.info("System property automation.propertiesfile is not set. Defaulting to "+ defaultAutomationPropertiesFile);
propFile = defaultAutomationPropertiesFile;
}
Properties p = new Properties();
p.load(new FileInputStream(propFile));
for (Object key: p.keySet()){
System.setProperty((String)key, p.getProperty((String)(key)));
}
log.fine("Loaded automation properties from automation.propertiesfile: "+propFile);
// default automation.dir to user.dir
if(System.getProperty("automation.dir") == null){
System.setProperty("automation.dir", System.getProperty("user.dir"));
}
} catch(Throwable e){
e.printStackTrace();
log.log(Level.SEVERE, "Could not load automation properties from "+propFile, e);
}
// echo all the system properties
Set<String> keySet = System.getProperties().stringPropertyNames();
List<String> keyList = CollectionSorter.asSortedList(keySet);
for (Object key: keyList){
String value = System.getProperty((String) key);
if (key.toString().toLowerCase().contains("password") ||
key.toString().toLowerCase().contains("passphrase"))
value = "********";
log.finer("Property("+key+")= "+ value);
}
initialized = true;
}
}