package com.griddynamics.jagger.util.generators; import static com.griddynamics.jagger.util.generators.TestGenerator.generateFromTest; import com.griddynamics.jagger.engine.e1.collector.limits.LimitSetConfig; import com.griddynamics.jagger.engine.e1.scenario.InfiniteTerminationStrategyConfiguration; import com.griddynamics.jagger.engine.e1.scenario.WorkloadTask; import com.griddynamics.jagger.engine.e1.sessioncomparation.BaselineSessionProvider; import com.griddynamics.jagger.master.CompositeTask; import com.griddynamics.jagger.master.configuration.Task; import com.griddynamics.jagger.monitoring.InfiniteDuration; import com.griddynamics.jagger.monitoring.MonitoringTask; import com.griddynamics.jagger.user.test.configurations.JLoadTest; import com.griddynamics.jagger.user.test.configurations.JParallelTestsGroup; import java.util.ArrayList; /** * @author asokol * created 11/6/16 * Generates {@link Task} entity from user-defined {@link JParallelTestsGroup} entity. */ class TestGroupGenerator { private static volatile int number = 0; static Task generateFromTestGroup(JParallelTestsGroup jParallelTestsGroup, boolean monitoringEnabled, BaselineSessionProvider baselineSessionProvider, LimitSetConfig limitSetConfig, ConfigurationProperties configurationProperties) { CompositeTask compositeTask = new CompositeTask(); compositeTask.setLeading(new ArrayList<>()); compositeTask.setAttendant(new ArrayList<>()); compositeTask.setNumber(++number); compositeTask.setName(jParallelTestsGroup.getId() + "-group"); compositeTask.setListeners(jParallelTestsGroup.getListeners()); compositeTask.setDecisionMakerListeners(jParallelTestsGroup.getDecisionMakerListeners()); for (JLoadTest test : jParallelTestsGroup.getTests()) { WorkloadTask task = generateFromTest(test, baselineSessionProvider, limitSetConfig, jParallelTestsGroup.getId(), configurationProperties); task.setNumber(compositeTask.getNumber()); if (task.getTerminateStrategyConfiguration() instanceof InfiniteTerminationStrategyConfiguration) { compositeTask.getAttendant().add(task); } else { compositeTask.getLeading().add(task); } } if (monitoringEnabled) { MonitoringTask attendantMonitoring = new MonitoringTask(compositeTask.getNumber(), jParallelTestsGroup.getId() + " --- monitoring", jParallelTestsGroup.getId(), new InfiniteDuration()); compositeTask.getAttendant().add(attendantMonitoring); } return compositeTask; } }