package examples.basics;
import static uk.co.acuminous.julez.util.JulezSugar.*;
import static uk.co.acuminous.julez.util.PerformanceAssert.assertMinimumThroughput;
import org.junit.Test;
import uk.co.acuminous.julez.event.handler.ThroughputMonitor;
import uk.co.acuminous.julez.runner.ConcurrentScenarioRunner;
import uk.co.acuminous.julez.scenario.BaseScenario;
import uk.co.acuminous.julez.scenario.Scenario;
import uk.co.acuminous.julez.scenario.ScenarioSource;
import uk.co.acuminous.julez.scenario.limiter.SizeLimiter;
import uk.co.acuminous.julez.scenario.source.ScenarioRepeater;
public class ConcurrentThroughputTest {
@Test
public void demonstrateAConcurrentThroughputTest() {
ThroughputMonitor throughputMonitor = new ThroughputMonitor();
Scenario scenario = new HelloWorldScenario().register(throughputMonitor);
ScenarioSource scenarios = new SizeLimiter().limit(new ScenarioRepeater(scenario)).to(100, SCENARIOS);
new ConcurrentScenarioRunner().register(throughputMonitor).queue(scenarios).allocate(10, THREADS).go();
assertMinimumThroughput(500, throughputMonitor.getThroughput());
}
class HelloWorldScenario extends BaseScenario {
public void run() {
handler.onEvent(eventFactory.begin());
System.out.print("Hello World ");
handler.onEvent(eventFactory.end());
}
}
}