package com.intuit.tank.project;
/*
* #%L
* Intuit Tank data model
* %%
* 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.Map;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.MappedSuperclass;
import javax.validation.constraints.NotNull;
import com.intuit.tank.harness.StopBehavior;
import com.intuit.tank.logging.LoggingProfile;
import com.intuit.tank.vm.api.enumerated.IncrementStrategy;
import com.intuit.tank.vm.api.enumerated.Location;
import com.intuit.tank.vm.api.enumerated.TerminationPolicy;
import com.intuit.tank.vm.common.TankConstants;
import com.intuit.tank.vm.settings.TankConfig;
@MappedSuperclass
public abstract class BaseJob extends BaseEntity {
public static final String PROPERTY_WORKLOAD_ID = "workloadId";
public static final String PROPERTY_PROJECT_ID = "projectId";
private static final long serialVersionUID = 1L;
@Column(name = "workload_type", nullable = false)
@Enumerated(EnumType.STRING)
@NotNull
private IncrementStrategy incrementStrategy = IncrementStrategy.increasing;
@Column(name = "location")
private String location = Location.unspecified.name();
@Column(name = "termination_policy", nullable = false)
@Enumerated(EnumType.STRING)
@NotNull
private TerminationPolicy terminationPolicy = TerminationPolicy.time;
@Column(name = "ramp_time_seconds")
private int rampTimeSeconds;
@Column(name = "ramp_time_ms")
private Long rampTime;
@Column(name = "ramp_time_exp")
private String rampTimeExpression;
@Column(name = "baseline_virtual_users")
private int baselineVirtualUsers;
@Column(name = "vm_instance_type", columnDefinition = "varchar(255) NULL DEFAULT 'c3.2xlarge'")
private String vmInstanceType = "c3.2xlarge";
@Column(name = "num_users_per_agent", columnDefinition = "INT(11) NOT NULL DEFAULT '4000'")
private int numUsersPerAgent = 4000;
@Column(name = "logging_profile")
private String loggingProfile = LoggingProfile.STANDARD.name();
@Column(name = "stop_behavior")
private String stopBehavior = StopBehavior.END_OF_SCRIPT_GROUP.name();
@Column(name = "tank_client_class")
private String tankClientClass = "com.intuit.tank.httpclient4.TankHttpClient4";
@Column(name = "simulation_time")
private int simulationTimeSeconds;
@Column(name = "simulation_time_ms")
private Long simulationTime;
@Column(name = "execution_time_ms")
private Long executionTime;
@Column(name = "simulation_time_exp")
private String simulationTimeExpression;
@Column(name = "user_interval_increment_seconds")
private int userIntervalIncrement;
@Column(name = "reporting_mode", nullable = false)
private String reportingMode = TankConstants.RESULTS_NONE;
@Column(name = "allow_variable_override")
private Boolean allowOverride;
@Column(name = "use_eips")
private Boolean useEips;
/**
*
*/
public BaseJob() {
super();
}
/**
*
*/
public BaseJob(BaseJob copy) {
this.baselineVirtualUsers = copy.baselineVirtualUsers;
this.incrementStrategy = copy.incrementStrategy;
this.rampTime = copy.rampTime;
this.simulationTime = copy.simulationTime;
this.terminationPolicy = copy.terminationPolicy;
this.userIntervalIncrement = copy.userIntervalIncrement;
this.location = copy.location;
this.reportingMode = copy.reportingMode;
this.allowOverride = copy.allowOverride;
this.loggingProfile = copy.loggingProfile;
this.rampTimeExpression = copy.rampTimeExpression;
this.simulationTimeExpression = copy.simulationTimeExpression;
this.stopBehavior = copy.stopBehavior;
this.executionTime = copy.executionTime;
this.numUsersPerAgent = copy.numUsersPerAgent;
this.vmInstanceType = copy.vmInstanceType;
this.useEips = copy.useEips;
this.tankClientClass = copy.getTankClientClass();
}
public abstract Map<String, String> getVariables();
public abstract Set<Integer> getDataFileIds();
/**
* @return the tankClientClass
*/
public String getTankClientClass() {
return tankClientClass;
}
/**
* @param tankClientClass
* the tankClientClass to set
*/
public void setTankClientClass(String tankClientClass) {
this.tankClientClass = tankClientClass;
}
/**
* @return the allowOverride
*/
public boolean isAllowOverride() {
return allowOverride != null ? allowOverride : false;
}
/**
* @param allowOverride
* the allowOverride to set
*/
public void setAllowOverride(boolean allowOverride) {
this.allowOverride = allowOverride;
}
/**
* @return the allowOverride
*/
public boolean isUseEips() {
return useEips != null ? useEips : new TankConfig().getVmManagerConfig().isUseElasticIps();
}
/**
* @param allowOverride
* the allowOverride to set
*/
public void setUseEips(boolean useEips) {
this.useEips = useEips;
}
/**
*
* @return
*/
public String getLoggingProfile() {
return loggingProfile;
}
/**
*
* @param loggingProfile
*/
public void setLoggingProfile(String loggingProfile) {
this.loggingProfile = loggingProfile;
}
/**
* @return the stopBehavior
*/
public String getStopBehavior() {
return stopBehavior != null ? stopBehavior : StopBehavior.END_OF_SCRIPT_GROUP.name();
}
/**
* @param stopBehavior
* the stopBehavior to set
*/
public void setStopBehavior(String stopBehavior) {
this.stopBehavior = stopBehavior;
}
/**
* @return the incrementStrategy
*/
public IncrementStrategy getIncrementStrategy() {
return incrementStrategy;
}
/**
* @return the reportingMode
*/
public String getReportingMode() {
return reportingMode;
}
/**
* @param reportingMode
* the reportingMode to set
*/
public void setReportingMode(String reportingMode) {
if (reportingMode != null) {
this.reportingMode = reportingMode;
}
}
/**
* @param incrementStrategy
* the incrementStrategy to set
*/
public void setIncrementStrategy(IncrementStrategy incrementStrategy) {
if (incrementStrategy != null) {
this.incrementStrategy = incrementStrategy;
}
}
/**
* @return the terminationPolicy
*/
public TerminationPolicy getTerminationPolicy() {
return terminationPolicy;
}
/**
* @param terminationPolicy
* the terminationPolicy to set
*/
public void setTerminationPolicy(TerminationPolicy terminationPolicy) {
if (terminationPolicy != null) {
this.terminationPolicy = terminationPolicy;
}
}
/**
* @return the rampTime
*/
public long getRampTime() {
return rampTime != null ? rampTime : rampTimeSeconds * 1000;
}
/**
* @return the rampTimeExpression
*/
public String getRampTimeExpression() {
return rampTimeExpression;
}
/**
* @param rampTimeExpression
* the rampTimeExpression to set
*/
public void setRampTimeExpression(String rampTimeExpression) {
this.rampTimeExpression = rampTimeExpression;
}
/**
* @return the simulationTimeExpression
*/
public String getSimulationTimeExpression() {
return simulationTimeExpression;
}
/**
* @param simulationTimeExpression
* the simulationTimeExpression to set
*/
public void setSimulationTimeExpression(String simulationTimeExpression) {
this.simulationTimeExpression = simulationTimeExpression;
}
/**
* @return the vmInstanceType
*/
public String getVmInstanceType() {
return vmInstanceType;
}
/**
* @param vmInstanceType
* the vmInstanceType to set
*/
public void setVmInstanceType(String vmInstanceType) {
this.vmInstanceType = vmInstanceType;
}
/**
* @return the numUsersPerAgent
*/
public int getNumUsersPerAgent() {
return numUsersPerAgent;
}
/**
* @param numUsersPerAgent
* the numUsersPerAgent to set
*/
public void setNumUsersPerAgent(int numUsersPerAgent) {
this.numUsersPerAgent = numUsersPerAgent;
}
/**
* @return the location
*/
public String getLocation() {
return location;
}
/**
* @param location
* the location to set
*/
public void setLocation(String location) {
if (location != null) {
this.location = location;
}
}
/**
* @param rampTime
* the rampTime to set
*/
public void setRampTime(long rampTime) {
this.rampTime = rampTime;
}
/**
* @return the baselineVirtualUsers
*/
public int getBaselineVirtualUsers() {
return baselineVirtualUsers;
}
/**
* @param baselineVirtualUsers
* the baselineVirtualUsers to set
*/
public void setBaselineVirtualUsers(int baselineVirtualUsers) {
this.baselineVirtualUsers = baselineVirtualUsers;
}
/**
* @return the simulationTime
*/
public long getSimulationTime() {
return simulationTime != null ? simulationTime : simulationTimeSeconds * 1000L;
}
/**
* @param simulationTime
* the simulationTime to set
*/
public void setSimulationTime(long simulationTime) {
this.simulationTime = simulationTime;
}
/**
* @return the executionTime
*/
public Long getExecutionTime() {
return executionTime;
}
/**
* @param executionTime
* the executionTime to set
*/
public void setExecutionTime(Long executionTime) {
this.executionTime = executionTime;
}
/**
* @return the userIntervalIncrement
*/
public int getUserIntervalIncrement() {
return userIntervalIncrement;
}
/**
* @param userIntervalIncrement
* the userIntervalIncrement to set
*/
public void setUserIntervalIncrement(int userIntervalIncrement) {
this.userIntervalIncrement = userIntervalIncrement;
}
}