package examples.analysis; import static org.junit.Assert.assertEquals; import static uk.co.acuminous.julez.util.JulezSugar.SCENARIOS; import static uk.co.acuminous.julez.util.JulezSugar.THREADS; import org.junit.Test; import uk.co.acuminous.julez.event.handler.ResultMonitor; import uk.co.acuminous.julez.runner.ConcurrentScenarioRunner; import uk.co.acuminous.julez.runner.ScenarioRunnerEvent; 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; import uk.co.acuminous.julez.test.EnterpriseTest; import uk.co.acuminous.julez.test.PassFailErrorScenario; import uk.co.acuminous.julez.test.TestUtils; public class RemoteAsynchronousAnalysisTest extends EnterpriseTest { @Test public void demonstrateSendingEventsToAJmsDestination() { initJmsInfrastructure(); ResultMonitor resultMonitor = new ResultMonitor(); jmsEventSource.register(resultMonitor); Scenario scenario = new PassFailErrorScenario().register(jmsEventHandler); ScenarioSource scenarios = new SizeLimiter().limit(new ScenarioRepeater(scenario)).to(100, SCENARIOS); new ConcurrentScenarioRunner().register(jmsEventHandler).queue(scenarios).allocate(4, THREADS).go(); jmsEventSource.shutdownWhenEmpty(); assertEquals(64, resultMonitor.getPassCount()); assertEquals(25, resultMonitor.getFailureCount()); assertEquals(11, resultMonitor.getErrorCount()); } @Test public void demonstratePersistingEventsAsynchronouslyToADatabase() { initJmsInfrastructure(); initDatabaseInfrastructure(); jmsEventSource.register(jdbcEventRepository); Scenario scenario = new PassFailErrorScenario().register(jmsEventHandler); ScenarioSource scenarios = new SizeLimiter().limit(new ScenarioRepeater(scenario)).to(100, SCENARIOS); new ConcurrentScenarioRunner().register(jmsEventHandler).allocate(4, THREADS).queue(scenarios).go(); jmsEventSource.shutdownWhenEmpty(); assertEquals(302, TestUtils.countEvents(jdbcEventRepository)); assertEquals(ScenarioRunnerEvent.BEGIN, TestUtils.getEvent(jdbcEventRepository,0).getType()); assertEquals(ScenarioRunnerEvent.END, TestUtils.getEvent(jdbcEventRepository,301).getType()); } }