Search in sources :

Example 1 with TeeTimeScheduler

use of teetime.framework.TeeTimeScheduler in project TeeTime by teetime-framework.

the class ParallelCounterConfigIT method testParallelExecution.

private void testParallelExecution(final int numElements, final int numThreads, final int numExecutions) {
    List<Integer> processedElements = new ArrayList<>();
    ParallelCounterConfig config = new ParallelCounterConfig(numElements, numThreads, processedElements);
    TeeTimeScheduler scheduling = new GlobalTaskPoolScheduling(numThreads, config, numExecutions);
    Execution<ParallelCounterConfig> execution = new Execution<>(config, true, scheduling);
    execution.executeBlocking();
    for (int i = 0; i < numElements; i++) {
        assertThat(processedElements.get(i), is(i));
    }
    assertThat(processedElements, hasSize(numElements));
}
Also used : Execution(teetime.framework.Execution) ArrayList(java.util.ArrayList) TeeTimeScheduler(teetime.framework.TeeTimeScheduler)

Example 2 with TeeTimeScheduler

use of teetime.framework.TeeTimeScheduler in project TeeTime by teetime-framework.

the class PipelineIT method shouldExecutePipelineCorrectlyThreeElementsWith3ExecutionsPerTask.

@Test
public void shouldExecutePipelineCorrectlyThreeElementsWith3ExecutionsPerTask() {
    String[] inputElements = { "a", "b", "c" };
    GlobalTaskPoolConfig<String> config = new GlobalTaskPoolConfig<>(inputElements);
    TeeTimeScheduler scheduling = new GlobalTaskPoolScheduling(NUM_THREADS, config, 3);
    Execution<GlobalTaskPoolConfig<String>> execution = new Execution<>(config, true, scheduling);
    execution.executeBlocking();
    List<String> processedElements = config.getSink().getElements();
    List<String> expectedElements = Arrays.asList("a", "b", "c");
    assertThat(WRONG_PIPELINE_EXECUTION, processedElements, is(equalTo(expectedElements)));
}
Also used : Execution(teetime.framework.Execution) TeeTimeScheduler(teetime.framework.TeeTimeScheduler) Test(org.junit.Test)

Example 3 with TeeTimeScheduler

use of teetime.framework.TeeTimeScheduler in project TeeTime by teetime-framework.

the class PipelineIT method shouldExecuteReflexivePipeCorrectlyManyElements.

@Test
@Ignore("The reflexive pipe in the counter is not handled correctly by the scheduling strategy so far")
public void shouldExecuteReflexivePipeCorrectlyManyElements() {
    int numElements = 1_000;
    ManyElementsWithStatelessStageGlobalTaskPoolConfig config = new ManyElementsWithStatelessStageGlobalTaskPoolConfig(numElements);
    TeeTimeScheduler scheduling = new GlobalTaskPoolScheduling(NUM_THREADS, config, 1);
    Execution<ManyElementsWithStatelessStageGlobalTaskPoolConfig> execution = new Execution<>(config, true, scheduling);
    execution.executeBlocking();
    List<Integer> processedElements = config.getSink().getElements();
    for (int i = 0; i < numElements; i++) {
        assertThat(processedElements.get(i), is(i));
    }
    assertThat(processedElements, hasSize(numElements));
}
Also used : Execution(teetime.framework.Execution) TeeTimeScheduler(teetime.framework.TeeTimeScheduler) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 4 with TeeTimeScheduler

use of teetime.framework.TeeTimeScheduler in project TeeTime by teetime-framework.

the class ProducerConsumerGlobalTaskPoolIT method shouldExecuteProducerConsumer.

private void shouldExecuteProducerConsumer(final int numThreads, final int numExecutions) {
    int numElements = 10_000;
    List<Integer> processedElements = new ArrayList<>();
    IntStream inputElements = IntStream.iterate(0, i -> i + 1).limit(numElements);
    Configuration config = new Configuration().from(new StreamProducer<>(inputElements)).end(new CollectorSink<>(processedElements));
    TeeTimeScheduler scheduling = new GlobalTaskPoolScheduling(numThreads, config, numExecutions);
    Execution<Configuration> execution = new Execution<>(config, true, scheduling);
    execution.executeBlocking();
    for (int i = 0; i < numElements; i++) {
        assertThat(processedElements.get(i), is(i));
    }
    assertThat(processedElements, hasSize(numElements));
}
Also used : IntStream(java.util.stream.IntStream) Configuration(teetime.framework.Configuration) StreamProducer(teetime.stage.StreamProducer) List(java.util.List) CollectorSink(teetime.stage.CollectorSink) Execution(teetime.framework.Execution) GlobalTaskPoolScheduling(teetime.framework.scheduling.globaltaskpool.GlobalTaskPoolScheduling) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) TeeTimeScheduler(teetime.framework.TeeTimeScheduler) Assert(org.junit.Assert) ArrayList(java.util.ArrayList) Configuration(teetime.framework.Configuration) ArrayList(java.util.ArrayList) StreamProducer(teetime.stage.StreamProducer) Execution(teetime.framework.Execution) GlobalTaskPoolScheduling(teetime.framework.scheduling.globaltaskpool.GlobalTaskPoolScheduling) TeeTimeScheduler(teetime.framework.TeeTimeScheduler) IntStream(java.util.stream.IntStream)

Example 5 with TeeTimeScheduler

use of teetime.framework.TeeTimeScheduler in project TeeTime by teetime-framework.

the class ThreeStagesGlobalTaskPoolIT method shouldExecutePipelineCorrectlyManyElements.

private void shouldExecutePipelineCorrectlyManyElements(final int numElements, final int numThreads, final int numExecutions) {
    List<Integer> processedElements = new ArrayList<>();
    IntStream inputElements = IntStream.iterate(0, i -> i + 1).limit(numElements);
    Configuration config = new Configuration().from(new StreamProducer<>(inputElements)).to(new Counter<>()).end(new CollectorSink<>(processedElements));
    TeeTimeScheduler scheduling = new GlobalTaskPoolScheduling(numThreads, config, numExecutions);
    Execution<Configuration> execution = new Execution<>(config, true, scheduling);
    execution.executeBlocking();
    for (int i = 0; i < numElements; i++) {
        Integer actualElement = processedElements.get(i);
        assertThat(actualElement, is(i));
    }
    assertThat(processedElements, hasSize(numElements));
}
Also used : IntStream(java.util.stream.IntStream) MethodSorters(org.junit.runners.MethodSorters) StreamProducer(teetime.stage.StreamProducer) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) TeeTimeScheduler(teetime.framework.TeeTimeScheduler) ArrayList(java.util.ArrayList) Configuration(teetime.framework.Configuration) List(java.util.List) CollectorSink(teetime.stage.CollectorSink) Execution(teetime.framework.Execution) Assert(org.junit.Assert) FixMethodOrder(org.junit.FixMethodOrder) Counter(teetime.stage.Counter) Configuration(teetime.framework.Configuration) ArrayList(java.util.ArrayList) Counter(teetime.stage.Counter) Execution(teetime.framework.Execution) TeeTimeScheduler(teetime.framework.TeeTimeScheduler) IntStream(java.util.stream.IntStream)

Aggregations

Execution (teetime.framework.Execution)10 TeeTimeScheduler (teetime.framework.TeeTimeScheduler)10 Test (org.junit.Test)8 ArrayList (java.util.ArrayList)4 List (java.util.List)3 IntStream (java.util.stream.IntStream)3 Matchers (org.hamcrest.Matchers)3 Assert (org.junit.Assert)3 Configuration (teetime.framework.Configuration)3 CollectorSink (teetime.stage.CollectorSink)3 StreamProducer (teetime.stage.StreamProducer)3 FixMethodOrder (org.junit.FixMethodOrder)2 MethodSorters (org.junit.runners.MethodSorters)2 GlobalTaskPoolScheduling (teetime.framework.scheduling.globaltaskpool.GlobalTaskPoolScheduling)2 Counter (teetime.stage.Counter)2 Ignore (org.junit.Ignore)1 IMonitorablePipe (teetime.framework.pipe.IMonitorablePipe)1 PushPullScheduling (teetime.framework.scheduling.pushpullmodel.PushPullScheduling)1 NonBlockingRoundRobinStrategy (teetime.stage.basic.distributor.strategy.NonBlockingRoundRobinStrategy)1 StopWatch (teetime.util.StopWatch)1