package com.griddynamics.jagger.util.generators;
import static com.griddynamics.jagger.util.generators.TerminationGenerator.generateTermination;
import static com.griddynamics.jagger.util.generators.TestDefinitionGenerator.generatePrototype;
import static com.griddynamics.jagger.util.generators.WorkloadGenerator.generateLoad;
import com.griddynamics.jagger.engine.e1.Provider;
import com.griddynamics.jagger.engine.e1.collector.CollectThreadsTestListener;
import com.griddynamics.jagger.engine.e1.collector.limits.LimitSetConfig;
import com.griddynamics.jagger.engine.e1.collector.test.TestListener;
import com.griddynamics.jagger.engine.e1.scenario.WorkloadTask;
import com.griddynamics.jagger.engine.e1.sessioncomparation.BaselineSessionProvider;
import com.griddynamics.jagger.user.test.configurations.JLoadTest;
import org.apache.commons.lang.StringUtils;
import com.google.common.collect.Lists;
import java.util.List;
/**
* @author asokol
* created 11/6/16
* Generates {@link WorkloadTask} entity from user-defined {@link JLoadTest} entity.
*/
class TestGenerator {
static WorkloadTask generateFromTest(JLoadTest jLoadTest,
BaselineSessionProvider baselineSessionProvider,
LimitSetConfig limitSetConfig,
String testGroupName,
ConfigurationProperties configurationProperties) {
WorkloadTask task = generatePrototype(jLoadTest.getTestDescription(), configurationProperties);
task.setName(getName(jLoadTest.getId(), testGroupName));
task.setParentTaskId(testGroupName);
task.setVersion("0");
List<Provider<TestListener>> testListeners = Lists.newArrayList(jLoadTest.getListeners());
testListeners.add(new CollectThreadsTestListener());
task.setTestListeners(testListeners);
task.setTerminateStrategyConfiguration(generateTermination(jLoadTest.getTermination()));
task.setClockConfiguration(generateLoad(jLoadTest.getLoad()));
task.setLimits(LimitGenerator.generate(jLoadTest.getLimits(), baselineSessionProvider, limitSetConfig));
return task;
}
public static String getName(String id, String testGroupName) {
if (StringUtils.isBlank(id)){
return testGroupName;
}
return String.format("%s [%s]", testGroupName, id);
}
}