/** * */ package net.sf.sahi.test; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Iterator; import net.sf.sahi.util.Utils; /** * @author narayan * */ public class SingleSessionTestRunner extends TestRunner { private String initJS; public SingleSessionTestRunner(String sessionName, String browserType, String base) { super(sessionName, browserType, Utils.replaceLocalhostWithMachineName(base), "1"); setIsSingleSession(true); this.sessionId = Utils.generateId(); } public void start() throws IOException, InterruptedException { String urlStr = buildURL("startSingleSession"); System.out.println(urlStr); Utils.readURL(urlStr); } public String stop() throws UnsupportedEncodingException, InterruptedException { StringBuffer urlStr = new StringBuffer(200).append("http://").append(sahiHost).append(":").append(port).append( "/_s_/dyn/Suite_stopSingleSession?sahisid=").append(encode(this.sessionId)); Utils.readURL(urlStr.toString()); return getStatus(); } public String executeSingleTest(String testName) throws UnsupportedEncodingException, InterruptedException { StringBuffer urlStr = new StringBuffer(200).append("http://").append(sahiHost).append(":").append(port) .append("/_s_/dyn/Suite_executeTestInSingleSession?sahisid=").append(encode(this.sessionId)) .append("&testName=").append(encode(testName)) .append("&startURL=").append(encode("")) .append("&initJS=").append((initJS == null) ? "" : encode(initJS)); return new String(Utils.readURL(urlStr.toString())); } public void setInitJS(String initJS){ this.initJS = initJS; } public void setInitJS(HashMap<String, Object> variableHashMap){ StringBuilder sb = new StringBuilder(); for (Iterator<String> iterator = variableHashMap.keySet().iterator(); iterator.hasNext();) { String key = iterator.next(); sb.append("var " + key).append(" = ").append(getJSValue(variableHashMap.get(key))).append(";"); } this.initJS = sb.toString(); } private Object getJSValue(Object object) { if (object instanceof String) return "\"" + Utils.escapeDoubleQuotesAndBackSlashes((String)object) + "\""; return object.toString(); } public String getInitJs(){ return this.initJS; } }