/* * Copyright (c) 2010-2012 Grid Dynamics Consulting Services, Inc, All Rights Reserved * http://www.griddynamics.com * * This library is free software; you can redistribute it and/or modify it under the terms of * the Apache License; either * version 2.0 of the License, or any later version. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.griddynamics.jagger.engine.e1.scenario; import com.griddynamics.jagger.engine.e1.Provider; import com.griddynamics.jagger.engine.e1.collector.Validator; import com.griddynamics.jagger.engine.e1.collector.invocation.InvocationListener; import com.griddynamics.jagger.engine.e1.collector.limits.LimitSet; import com.griddynamics.jagger.engine.e1.collector.test.TestListener; import com.griddynamics.jagger.invoker.ScenarioFactory; import com.griddynamics.jagger.master.CompositableTask; import com.google.common.collect.Lists; import java.util.List; /** * Workload task configuration. * * @author Mairbek Khadikov */ public class WorkloadTask implements CompositableTask { private int number; private String name; private String version; private String description = ""; private ScenarioFactory<Object, Object, Object> scenarioFactory; private List<KernelSideObjectProvider<Validator>> validators = Lists.newLinkedList(); private List<KernelSideObjectProvider<ScenarioCollector<Object, Object, Object>>> collectors = Lists.newLinkedList(); private List<Provider<InvocationListener<Object, Object, Object>>> listeners = Lists.newLinkedList(); private WorkloadClockConfiguration clockConfiguration; private TerminateStrategyConfiguration terminateStrategyConfiguration; private String parentTaskId; private long startDelay = 0; private List<Provider<TestListener>> testListeners = Lists.newLinkedList(); private LimitSet limits = null; public long getStartDelay() { return startDelay; } public void setStartDelay(long waitBefore) { this.startDelay = waitBefore; } @Override public String getTaskName() { return name + " " + version; } @Override public int getNumber() { return number; } @Override public void setNumber(int number) { this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public ScenarioFactory<Object, Object, Object> getScenarioFactory() { return scenarioFactory; } public void setScenarioFactory(ScenarioFactory<Object, Object, Object> scenarioFactory) { this.scenarioFactory = scenarioFactory; } public List<KernelSideObjectProvider<ScenarioCollector<Object, Object, Object>>> getCollectors() { return collectors; } public void setCollectors(List<KernelSideObjectProvider<ScenarioCollector<Object, Object, Object>>> collectors) { this.collectors = collectors; } public WorkloadClockConfiguration getClockConfiguration() { return clockConfiguration; } public void setClockConfiguration(WorkloadClockConfiguration clockConfiguration) { this.clockConfiguration = clockConfiguration; } public TerminateStrategyConfiguration getTerminateStrategyConfiguration() { return terminateStrategyConfiguration; } public void setTerminateStrategyConfiguration(TerminateStrategyConfiguration terminateStrategyConfiguration) { this.terminateStrategyConfiguration = terminateStrategyConfiguration; } public WorkloadClock getClock() { return clockConfiguration.getClock(); } public TerminationStrategy getTerminationStrategy() { return terminateStrategyConfiguration.getTerminateStrategy(); } public List<KernelSideObjectProvider<Validator>> getValidators() { return validators; } public void setValidators(List<KernelSideObjectProvider<Validator>> validators) { this.validators = validators; } public List<Provider<InvocationListener<Object, Object, Object>>> getListeners() { return listeners; } public void setListeners(List<Provider<InvocationListener<Object, Object, Object>>> listeners) { this.listeners = listeners; } public WorkloadTask copy() { WorkloadTask task = new WorkloadTask(); task.setNumber(number); task.setName(name); task.setVersion(version); task.setValidators(validators); task.setCollectors(collectors); task.setListeners(listeners); task.setScenarioFactory(scenarioFactory); task.setClockConfiguration(clockConfiguration); task.setTerminateStrategyConfiguration(terminateStrategyConfiguration); task.setStartDelay(startDelay); task.setDescription(description); return task; } @Override public String getParentTaskId() { return parentTaskId; } @Override public void setParentTaskId(String taskId) { this.parentTaskId = taskId; } public List<Provider<TestListener>> getTestListeners() { return testListeners; } public void setTestListeners(List<Provider<TestListener>> testListeners) { this.testListeners = testListeners; } @Override public String toString() { return "WorkloadTask {\n" + " number = '" + number + "\',\n" + " name = '" + name + "\',\n" + " version = '" + version + "\',\n" + " scenarioFactory = " + scenarioFactory + ",\n" + " listeners = " + listeners + ",\n" + " collectors = " + collectors + ",\n" + " clockConfiguration = " + clockConfiguration + ",\n" + " terminateStrategyConfiguration = " + terminateStrategyConfiguration + ",\n" + " parentTaskId = '" + parentTaskId + "',\n" + " startDelay = '" + startDelay + "'}"; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public LimitSet getLimits() { return limits; } public void setLimits(LimitSet limits) { this.limits = limits; } }