com.intuit.tank.vm.vmManager.JobRequestImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.intuit.tank.vm.vmManager.JobRequestImpl.java

Source

package com.intuit.tank.vm.vmManager;

/*
 * #%L
 * Intuit Tank Api
 * %%
 * 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.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

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.JobQueueStatus;
import com.intuit.tank.vm.api.enumerated.TerminationPolicy;
import com.intuit.tank.vm.common.TankConstants;
import com.intuit.tank.vm.vmManager.JobRequestImpl.Builder;
import com.intuit.tank.vm.vmManager.JobRequestImpl.JobRequestBuilderBase;

/**
 * 
 * JobInstance
 * 
 * @author dangleton
 * 
 */
public final class JobRequestImpl implements Serializable, JobRequest {

    private static final long serialVersionUID = 1L;

    private String id;

    private IncrementStrategy incrementStrategy = IncrementStrategy.increasing;
    private String location;
    private TerminationPolicy terminationPolicy = TerminationPolicy.time;
    private long rampTime;
    private int baselineVirtualUsers;
    private long simulationTime;
    private boolean useEips;
    private int userIntervalIncrement;
    private String reportingMode = TankConstants.RESULTS_NONE;
    private String loggingProfile = LoggingProfile.STANDARD.name();
    private String stopBehavior = StopBehavior.END_OF_SCRIPT_GROUP.name();
    private JobQueueStatus status = JobQueueStatus.Created;
    private Set<? extends RegionRequest> regions = new HashSet<RegionRequest>();
    private Set<? extends Notification> notifications = new HashSet<Notification>();
    private Set<Integer> dataFileIds = new HashSet<Integer>();
    private String vmInstanceType;
    private int numUsersPerAgent;

    private String scriptsXmlUrl;

    public static Builder builder() {
        return new Builder();
    }

    /**
     * 
     */
    private JobRequestImpl() {
        super();
    }

    public String getLoggingProfile() {
        return loggingProfile;
    }

    /**
     * @return the useEips
     */
    public boolean isUseEips() {
        return useEips;
    }

    /**
     * @return the stopBehavior
     */
    public String getStopBehavior() {
        return stopBehavior;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public String getId() {
        return id;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public IncrementStrategy getIncrementStrategy() {
        return incrementStrategy;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public String getLocation() {
        return location;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public TerminationPolicy getTerminationPolicy() {
        return terminationPolicy;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public long getRampTime() {
        return rampTime;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public int getBaselineVirtualUsers() {
        return baselineVirtualUsers;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public long getSimulationTime() {
        return simulationTime;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public int getUserIntervalIncrement() {
        return userIntervalIncrement > 0 ? userIntervalIncrement : 1;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public String getReportingMode() {
        return reportingMode;
    }

    /**
     * @return the scriptsXml
     */
    public String getScriptsXmlUrl() {
        return scriptsXmlUrl;
    }

    /**
     * @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;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public int getTotalVirtualUsers() {
        int result = 0;
        for (RegionRequest region : regions) {
            result += JobUtil.parseUserString(region.getUsers());
        }
        return result;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public JobQueueStatus getStatus() {
        return status;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public Set<? extends RegionRequest> getRegions() {
        return regions;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public Set<? extends Notification> getNotifications() {
        return notifications;
    }

    /**
     * @{inheritDoc
     */
    @Override
    public Set<Integer> getDataFileIds() {
        return dataFileIds;
    }

    /**
     * @{inheritDoc private String id;
     * 
     *              private IncrementStrategy incrementStrategy = IncrementStrategy.increasing; private Location
     *              location = Location.san_diego; private TerminationPolicy terminationPolicy = TerminationPolicy.time;
     *              private int rampTime; private int baselineVirtualUsers; private int simulationTime; private int
     *              userIntervalIncrement; private ReportingMode reportingMode = ReportingMode.None; private
     *              JobQueueStatus status = JobQueueStatus.Created; private Set<? extends RegionRequest> regions = new
     *              HashSet<RegionRequest>(); private Set<? extends Notification> notifications = new
     *              HashSet<Notification>(); private Set<Integer> dataFileIds = new HashSet<Integer>();
     */
    @Override
    public String toString() {
        return new ToStringBuilder(this).append("id", id).append("location", location)
                .append("terminationPolicy", terminationPolicy).append("rampTime", rampTime)
                .append("loggingProfile", LoggingProfile.fromString(loggingProfile).getDisplayName())
                .append("stopBehavior", StopBehavior.fromString(stopBehavior).getDisplay())
                .append("simulationTime", simulationTime).append("useEips", useEips)
                .append("baselineVirtualUsers", baselineVirtualUsers)
                .append("userIntervalIncrement", userIntervalIncrement).append("reportingMode", reportingMode)
                .append("regions", ToStringBuilder.reflectionToString(regions)).toString();
    }

    /**
     * @{inheritDoc
     */
    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof JobRequestImpl)) {
            return false;
        }
        JobRequest o = (JobRequest) obj;
        return new EqualsBuilder().append(o.getId(), getId()).isEquals();
    }

    /**
     * @{inheritDoc
     */
    @Override
    public int hashCode() {
        return new HashCodeBuilder(29, 45).append(getId()).toHashCode();
    }

    /**
     * Fluent Builder for JobRequests
     * 
     * @author dangleton
     * 
     */
    public static class Builder extends JobRequestBuilderBase<Builder> {

        public Builder() {
            super(new JobRequestImpl());
        }

        public JobRequest build() {
            return getInstance();
        }

    }

    /**
     * 
     * JobRequestImpl JobRequestBuilderBase
     * 
     * @author dangleton
     * 
     * @param <GeneratorT>
     */
    static class JobRequestBuilderBase<GeneratorT extends JobRequestBuilderBase<GeneratorT>> {
        private JobRequestImpl instance;

        protected JobRequestBuilderBase(JobRequestImpl aInstance) {
            instance = aInstance;
        }

        protected JobRequest getInstance() {
            return instance;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withId(String aValue) {
            instance.id = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withStopBehavior(String aValue) {
            instance.stopBehavior = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withVmInstanceType(String aValue) {
            instance.vmInstanceType = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withnumUsersPerAgent(int aValue) {
            instance.numUsersPerAgent = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withUseEips(boolean aValue) {
            instance.useEips = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withLoggingProfile(String aValue) {
            instance.loggingProfile = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withIncrementStrategy(IncrementStrategy aValue) {
            instance.incrementStrategy = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withLocation(String aValue) {
            instance.location = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withTerminationPolicy(TerminationPolicy aValue) {
            instance.terminationPolicy = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withRampTime(long aValue) {
            instance.rampTime = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withBaselineVirtualUsers(int aValue) {
            instance.baselineVirtualUsers = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withSimulationTime(long aValue) {
            instance.simulationTime = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withUserIntervalIncrement(int aValue) {
            instance.userIntervalIncrement = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withReportingMode(String aValue) {
            instance.reportingMode = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withStatus(JobQueueStatus aValue) {
            instance.status = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withRegions(Set<? extends RegionRequest> aValue) {
            instance.regions = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withAddedRegion(RegionRequest aValue) {
            if (instance.getRegions() == null) {
                instance.regions = new HashSet<RegionRequest>();
            }
            ((HashSet<RegionRequest>) instance.getRegions()).add(aValue);
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withNofitications(Set<? extends Notification> aValue) {
            instance.notifications = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withAddedNofitication(Notification aValue) {
            if (instance.getNotifications() == null) {
                instance.notifications = new HashSet<Notification>();
            }
            ((HashSet<Notification>) instance.getNotifications()).add(aValue);
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withDataFileIds(Set<Integer> aValue) {
            instance.dataFileIds = aValue;
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withAddedDataFileId(Integer aValue) {
            if (instance.getDataFileIds() == null) {
                instance.dataFileIds = new HashSet<Integer>();
            }
            ((HashSet<Integer>) instance.getDataFileIds()).add(aValue);
            return (GeneratorT) this;
        }

        @SuppressWarnings("unchecked")
        public GeneratorT withScriptXmlUrl(String aValue) {
            instance.scriptsXmlUrl = aValue;
            return (GeneratorT) this;
        }
    }

}