package com.griddynamics.jagger.user.test.configurations.termination;
import com.griddynamics.jagger.user.test.configurations.termination.auxiliary.IterationsNumber;
import com.griddynamics.jagger.user.test.configurations.termination.auxiliary.MaxDurationInSeconds;
import java.util.Objects;
/**
* Test with such termination strategy will last till defined number of requests are executed.
*
* @ingroup Main_Termination_criteria_group
*/
public class JTerminationCriteriaIterations implements JTerminationCriteria {
private final long iterationsNumber;
private final long maxDurationInSeconds;
/** Create termination criteria: by number of iterations
* @n
* @param iterationsNumber - The target number of requests to the system under test. After this number of the requests is reached, load test will be terminated
* @param maxDurationInSeconds - The timeout for the test execution. If termination criteria was not reached, load test will be stopped by timeout
*/
public JTerminationCriteriaIterations(IterationsNumber iterationsNumber, MaxDurationInSeconds maxDurationInSeconds) {
Objects.requireNonNull(iterationsNumber);
Objects.requireNonNull(maxDurationInSeconds);
this.iterationsNumber = iterationsNumber.value();
this.maxDurationInSeconds = maxDurationInSeconds.value();
}
/** Create termination criteria: by number of iterations
* @n
* @param iterationsNumber - The target number of requests to the system under test. After this number of the requests is reached, load test will be terminated
* @param maxDurationInSeconds - The timeout for the test execution. If termination criteria was not reached, load test will be stopped by timeout
*/
public static JTerminationCriteriaIterations of(IterationsNumber iterationsNumber, MaxDurationInSeconds maxDurationInSeconds) {
return new JTerminationCriteriaIterations(iterationsNumber, maxDurationInSeconds);
}
public long getIterationsNumber() {
return iterationsNumber;
}
public long getMaxDurationInSeconds() {
return maxDurationInSeconds;
}
}