package uk.co.acuminous.julez.scenario.source; 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.Before; 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.Scenario; import uk.co.acuminous.julez.scenario.ScenarioSource; import uk.co.acuminous.julez.scenario.limiter.SizeLimiter; import uk.co.acuminous.julez.scenario.limiter.ThroughputLimiter; import uk.co.acuminous.julez.test.NoOpScenario; public class ThroughputLimiterTest { private ThroughputMonitor throughputMonitor; private ConcurrentScenarioRunner runner; @Before public void init() { throughputMonitor = new ThroughputMonitor(); runner = new ConcurrentScenarioRunner(); runner.register(throughputMonitor); } @Test public void limitsThroughputToSpecifiedFrequency() { Scenario scenario = new NoOpScenario().register(throughputMonitor); ScenarioSource scenarios = new SizeLimiter().limit(new ScenarioRepeater(scenario)).to(100, SCENARIOS); ThroughputLimiter limiter = new ThroughputLimiter().applyLimitOf(100, SCENARIOS).perSecond().to(scenarios); runner.queue(limiter).allocate(4, THREADS).go(); assertEquals(100, throughputMonitor.getThroughput()); } }