package examples.benchmarking;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.jbehave.core.io.CodeLocations.codeLocationFromClass;
import java.net.URL;
import org.junit.Test;
import uk.co.acuminous.julez.runner.ConcurrentScenarioRunner;
import uk.co.acuminous.julez.scenario.JBehaveEmbedderScenario;
import uk.co.acuminous.julez.scenario.JBehaveStoryRunnerScenario;
import uk.co.acuminous.julez.test.NoOpScenario;
import uk.co.acuminous.julez.test.SleepingScenario;
import examples.jbehave.CalculatorSteps;
import static uk.co.acuminous.julez.util.JulezSugar.*;
public class JulezBenchmarkTest extends BenchmarkTestCase {
private int oneHundredThousandTimes = 100000;
private int oneThousandTimes = 1000;
private ConcurrentScenarioRunner runner;
@Test
public void benchmarkSingleThreadedConcurrentScenarioRunnerUsingNoOpScenario() {
benchmark(new NoOpScenario(), oneHundredThousandTimes);
System.out.println(String.format("%d x Single threaded NoOp Scenarios took %dms", oneHundredThousandTimes, durationMonitor.getDuration()));
}
@Test
public void benchmarkMultiThreadedConcurrentScenarioRunnerWith10ThreadsUsingNoOpScenario() {
runner = new ConcurrentScenarioRunner().allocate(10, THREADS);
benchmark(new NoOpScenario(), oneHundredThousandTimes);
System.out.println(String.format("%d x Multi threaded(%d) NoOp Scenarios took %dms", oneHundredThousandTimes, 10, durationMonitor.getDuration()));
}
@Test
public void benchmarkSingleThreadedConcurrentScenarioRunnerSleepingNoOpScenario() {
benchmark(new SleepingScenario(10, MILLISECONDS), oneThousandTimes);
System.out.println(String.format("%d x Single threaded Sleep Scenarios took %dms", oneThousandTimes, durationMonitor.getDuration()));
}
@Test
public void benchmarkMultiThreadedConcurrentScenarioRunnerWith10ThreadsSleepingNoOpScenario() {
runner = new ConcurrentScenarioRunner().allocate(10, THREADS);
benchmark(new SleepingScenario(10, MILLISECONDS), oneThousandTimes);
System.out.println(String.format("%d x Multi threaded(%d) Sleep Scenarios took %dms", oneThousandTimes, 10, durationMonitor.getDuration()));
}
@Test
public void benchmarkJBehaveStoryRunnerScenario() {
URL scenarioLocation = codeLocationFromClass(this.getClass());
JBehaveStoryRunnerScenario scenario = new JBehaveStoryRunnerScenario(scenarioLocation, "jbehave/calculator.txt", new CalculatorSteps());
benchmark(scenario, oneThousandTimes);
System.out.println(String.format("%d x Single threaded JBehave Story Runner Scenarios took %dms", oneThousandTimes, durationMonitor.getDuration()));
}
@Test
public void benchmarkJBehaveEmbedderScenario() {
URL scenarioLocation = codeLocationFromClass(this.getClass());
JBehaveEmbedderScenario scenario = new JBehaveEmbedderScenario(scenarioLocation, "jbehave/calculator.txt", new CalculatorSteps());
benchmark(scenario, oneThousandTimes);
System.out.println(String.format("%d x Single threaded JBehave Embedder Scenarios took %dms", oneThousandTimes, durationMonitor.getDuration()));
}
@Override
protected ConcurrentScenarioRunner getScenarioRunner() {
return runner == null ? super.getScenarioRunner() : runner;
}
}