package com.intuit.tank.script;
/*
* #%L
* JSF Support Beans
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import java.util.HashSet;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import com.intuit.tank.common.ScriptUtil;
import com.intuit.tank.http.AuthScheme;
import com.intuit.tank.project.RequestData;
import com.intuit.tank.project.ScriptStep;
import com.intuit.tank.script.ScriptConstants;
public class ScriptStepFactory {
public static ScriptStep createVariable(String key, String value) {
ScriptStep step = new ScriptStep();
step.setType(ScriptConstants.VARIABLE);
RequestData reqData = new RequestData();
reqData.setKey(key);
reqData.setValue(value);
Set<RequestData> set = new HashSet<RequestData>();
set.add(reqData);
step.setData(set);
return step;
}
public static ScriptStep createThinkTime(String minTime, String maxTime) {
ScriptStep think = new ScriptStep();
think.setType(ScriptConstants.THINK_TIME);
RequestData minRD = new RequestData();
minRD.setType(ScriptConstants.THINK_TIME);
minRD.setKey(ScriptConstants.MIN_TIME);
minRD.setValue(minTime);
RequestData maxRD = new RequestData();
maxRD.setType(ScriptConstants.THINK_TIME);
maxRD.setKey(ScriptConstants.MAX_TIME);
maxRD.setValue(maxTime);
Set<RequestData> ds = new HashSet<RequestData>();
ds.add(minRD);
ds.add(maxRD);
think.setData(ds);
think.setComments("ThinkTime " + minRD.getValue() + "-" + maxRD.getValue());
return think;
}
public static ScriptStep createAuthentication(String userName, String password, String realm, AuthScheme scheme, String host, String port) {
ScriptStep ret = new ScriptStep();
ret.setType(ScriptConstants.AUTHENTICATION);
Set<RequestData> ds = new HashSet<RequestData>();
RequestData rd = new RequestData();
rd.setType(ScriptConstants.AUTHENTICATION);
rd.setKey(ScriptConstants.AUTH_USER_NAME);
rd.setValue(userName);
ds.add(rd);
rd = new RequestData();
rd.setType(ScriptConstants.AUTHENTICATION);
rd.setKey(ScriptConstants.AUTH_PASSWORD);
rd.setValue(password);
ds.add(rd);
rd = new RequestData();
rd.setType(ScriptConstants.AUTHENTICATION);
rd.setKey(ScriptConstants.AUTH_REALM);
rd.setValue(realm);
ds.add(rd);
rd = new RequestData();
rd.setType(ScriptConstants.AUTHENTICATION);
rd.setKey(ScriptConstants.AUTH_SCHEME);
rd.setValue(scheme.name());
ds.add(rd);
rd = new RequestData();
rd.setType(ScriptConstants.AUTHENTICATION);
rd.setKey(ScriptConstants.AUTH_HOST);
rd.setValue(host);
ds.add(rd);
rd = new RequestData();
rd.setType(ScriptConstants.AUTHENTICATION);
rd.setKey(ScriptConstants.AUTH_PORT);
rd.setValue(port);
ds.add(rd);
ret.setData(ds);
ScriptUtil.updateStepLabel(ret);
ret.setComments("Authenticator " + scheme.name() + " " + host);
return ret;
}
public static ScriptStep createSleepTime(String delay) {
ScriptStep sleep = new ScriptStep();
sleep.setType(ScriptConstants.SLEEP);
sleep.setComments("SLEEP " + delay);
RequestData data = new RequestData();
data.setType(ScriptConstants.SLEEP);
data.setKey(ScriptConstants.TIME);
data.setValue(delay);
Set<RequestData> ds = new HashSet<RequestData>();
ds.add(data);
sleep.setData(ds);
return sleep;
}
public static ScriptStep createLogic(String name, String script) {
ScriptStep ret = new ScriptStep();
ret.setType(ScriptConstants.LOGIC);
ret.setComments("Logic Step: " + name);
ret.setName(name);
RequestData data = new RequestData();
data.setType(ScriptConstants.LOGIC);
data.setKey(ScriptConstants.SCRIPT);
data.setValue(script);
Set<RequestData> ds = new HashSet<RequestData>();
ds.add(data);
ret.setData(ds);
return ret;
}
public static ScriptStep createCookie(String name, String value, String domain, String path) {
ScriptStep ret = new ScriptStep();
Set<RequestData> ds = new HashSet<RequestData>();
ret.setData(ds);
ret.setType(ScriptConstants.COOKIE);
RequestData data = new RequestData();
data.setType(ScriptConstants.COOKIE);
data.setKey(ScriptConstants.COOKIE_NAME);
data.setValue(name);
ds.add(data);
data = new RequestData();
data.setType(ScriptConstants.COOKIE);
data.setKey(ScriptConstants.COOKIE_VALUE);
data.setValue(value);
ds.add(data);
data = new RequestData();
data.setType(ScriptConstants.COOKIE);
data.setKey(ScriptConstants.COOKIE_DOMAIN);
data.setValue(domain);
ds.add(data);
data = new RequestData();
data.setType(ScriptConstants.COOKIE);
data.setKey(ScriptConstants.COOKIE_PATH);
data.setValue(StringUtils.isNotBlank(path) ? path : "/");
ds.add(data);
ret.setComments("Cookie Step: " + name + " = " + value);
return ret;
}
public static ScriptStep createClearCookies() {
ScriptStep clear = new ScriptStep();
clear.setType(ScriptConstants.CLEAR);
// clear.setData(new HashSet<RequestData>().add(arg0))
clear.setComments("Clear Cookies");
return clear;
}
}