Search in sources :

Example 1 with Mapper

use of org.talend.sdk.component.runtime.input.Mapper in project component-runtime by Talend.

the class ComponentExtensionTest method manualMapper.

@Test
void manualMapper() {
    final Mapper mapper = handler.createMapper(Source.class, new Source.Config() {

        {
            values = asList("a", "b");
        }
    });
    assertFalse(mapper.isStream());
    final Input input = mapper.create();
    assertEquals("a", input.next());
    assertEquals("b", input.next());
    assertNull(input.next());
}
Also used : Mapper(org.talend.sdk.component.runtime.input.Mapper) Input(org.talend.sdk.component.runtime.input.Input) Source(org.talend.sdk.component.junit.component.Source) Test(org.junit.jupiter.api.Test)

Example 2 with Mapper

use of org.talend.sdk.component.runtime.input.Mapper in project component-runtime by Talend.

the class ComponentExtensionTest method sourceCollectorParallel.

@Test
void sourceCollectorParallel() {
    final CountDownLatch latch = new CountDownLatch(1);
    final Mapper mapper = new PartitionMapperImpl() {

        @Override
        public long assess() {
            return 2;
        }

        @Override
        public List<Mapper> split(final long desiredSize) {
            assertEquals(1, desiredSize);
            return asList(this, this);
        }

        @Override
        public Input create() {
            return new InputImpl() {

                private final AtomicBoolean done = new AtomicBoolean();

                @Override
                public Object next() {
                    try {
                        latch.await(1, MINUTES);
                    } catch (final InterruptedException e) {
                        Thread.interrupted();
                        fail();
                    }
                    return done.compareAndSet(false, true) ? Thread.currentThread().getName() : null;
                }

                @Override
                protected Stream<Method> findMethods(final Class<? extends Annotation> marker) {
                    return Stream.empty();
                }
            };
        }

        @Override
        protected Stream<Method> findMethods(final Class<? extends Annotation> marker) {
            return Stream.empty();
        }
    };
    latch.countDown();
    final Stream<String> collect = handler.collect(String.class, mapper, 2, 2);
    final List<String> threads = collect.collect(toList());
    assertEquals(threads.toString(), 2, threads.size());
    threads.forEach(n -> assertTrue(n, n.startsWith("ComponentExtension-pool-")));
}
Also used : Mapper(org.talend.sdk.component.runtime.input.Mapper) InputImpl(org.talend.sdk.component.runtime.input.InputImpl) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) PartitionMapperImpl(org.talend.sdk.component.runtime.input.PartitionMapperImpl) Method(java.lang.reflect.Method) CountDownLatch(java.util.concurrent.CountDownLatch) Annotation(java.lang.annotation.Annotation) Test(org.junit.jupiter.api.Test)

Example 3 with Mapper

use of org.talend.sdk.component.runtime.input.Mapper in project component-runtime by Talend.

the class SimpleComponentRuleTest method manualMapper.

@Test
public void manualMapper() {
    final Mapper mapper = COMPONENT_FACTORY.createMapper(Source.class, new Source.Config() {

        {
            values = asList("a", "b");
        }
    });
    assertFalse(mapper.isStream());
    final Input input = mapper.create();
    assertEquals("a", input.next());
    assertEquals("b", input.next());
    assertNull(input.next());
}
Also used : Mapper(org.talend.sdk.component.runtime.input.Mapper) Input(org.talend.sdk.component.runtime.input.Input) Source(org.talend.sdk.component.junit.component.Source) Test(org.junit.Test)

Example 4 with Mapper

use of org.talend.sdk.component.runtime.input.Mapper in project component-runtime by Talend.

the class SimpleComponentRuleTest method sourceCollector.

@Test
public void sourceCollector() {
    final Mapper mapper = COMPONENT_FACTORY.createMapper(Source.class, new Source.Config() {

        {
            values = asList("a", "b");
        }
    });
    assertEquals(asList("a", "b"), COMPONENT_FACTORY.collectAsList(String.class, mapper));
}
Also used : Mapper(org.talend.sdk.component.runtime.input.Mapper) Source(org.talend.sdk.component.junit.component.Source) Test(org.junit.Test)

Example 5 with Mapper

use of org.talend.sdk.component.runtime.input.Mapper in project component-runtime by Talend.

the class SimpleComponentRuleTest method sourceCollectorParallel.

@Test
public void sourceCollectorParallel() {
    final CountDownLatch latch = new CountDownLatch(1);
    final Mapper mapper = new PartitionMapperImpl() {

        @Override
        public long assess() {
            return 2;
        }

        @Override
        public List<Mapper> split(final long desiredSize) {
            assertEquals(1, desiredSize);
            return asList(this, this);
        }

        @Override
        public Input create() {
            return new InputImpl() {

                private final AtomicBoolean done = new AtomicBoolean();

                @Override
                public Object next() {
                    try {
                        latch.await(1, MINUTES);
                    } catch (final InterruptedException e) {
                        Thread.interrupted();
                        fail();
                    }
                    return done.compareAndSet(false, true) ? Thread.currentThread().getName() : null;
                }

                @Override
                protected Stream<Method> findMethods(final Class<? extends Annotation> marker) {
                    return Stream.empty();
                }
            };
        }

        @Override
        protected Stream<Method> findMethods(final Class<? extends Annotation> marker) {
            return Stream.empty();
        }
    };
    latch.countDown();
    final Stream<String> collect = COMPONENT_FACTORY.collect(String.class, mapper, 2, 2);
    final List<String> threads = collect.collect(toList());
    assertEquals(threads.toString(), 2, threads.size());
    threads.forEach(n -> assertTrue(n, n.startsWith("SimpleComponentRule-pool-")));
}
Also used : Mapper(org.talend.sdk.component.runtime.input.Mapper) InputImpl(org.talend.sdk.component.runtime.input.InputImpl) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) PartitionMapperImpl(org.talend.sdk.component.runtime.input.PartitionMapperImpl) Method(java.lang.reflect.Method) CountDownLatch(java.util.concurrent.CountDownLatch) Annotation(java.lang.annotation.Annotation) Test(org.junit.Test)

Aggregations

Mapper (org.talend.sdk.component.runtime.input.Mapper)18 Input (org.talend.sdk.component.runtime.input.Input)9 JsonObject (javax.json.JsonObject)8 Test (org.junit.Test)6 PartitionMapper (org.talend.sdk.component.api.input.PartitionMapper)6 HashMap (java.util.HashMap)4 Map (java.util.Map)4 Jsonb (javax.json.bind.Jsonb)4 ChainedMapper (org.talend.sdk.component.runtime.manager.chain.ChainedMapper)4 Processor (org.talend.sdk.component.runtime.output.Processor)4 Collection (java.util.Collection)3 CountDownLatch (java.util.concurrent.CountDownLatch)3 Collectors.toMap (java.util.stream.Collectors.toMap)3 Test (org.junit.jupiter.api.Test)3 Source (org.talend.sdk.component.junit.component.Source)3 Annotation (java.lang.annotation.Annotation)2 Method (java.lang.reflect.Method)2 List (java.util.List)2 Optional (java.util.Optional)2 ExecutorService (java.util.concurrent.ExecutorService)2