Search in sources :

Example 1 with Motor

use of io.engineblock.activityapi.core.Motor in project engineblock by engineblock.

the class CoreMotorTest method testBasicActivityMotor.

@Test
public void testBasicActivityMotor() {
    BlockingSegmentInput lockstepper = new BlockingSegmentInput();
    Activity activity = new SimpleActivity(ActivityDef.parseActivityDef("alias=foo"));
    Motor cm = new CoreMotor(activity, 5L, lockstepper);
    AtomicLong observableAction = new AtomicLong(-3L);
    cm.setAction(getTestConsumer(observableAction));
    cm.getSlotStateTracker().enterState(RunState.Starting);
    Thread t = new Thread(cm);
    t.setName("TestMotor");
    t.start();
    try {
        // allow action time to be waiting in monitor for test fixture
        Thread.sleep(1000);
    } catch (InterruptedException ignored) {
    }
    lockstepper.publishSegment(5L);
    boolean result = awaitCondition(atomicInteger -> (atomicInteger.get() == 5L), observableAction, 5000, 100);
    assertThat(observableAction.get()).isEqualTo(5L);
}
Also used : AtomicLong(java.util.concurrent.atomic.AtomicLong) BlockingSegmentInput(io.engineblock.activitycore.fortesting.BlockingSegmentInput) CoreMotor(io.engineblock.activityimpl.motor.CoreMotor) Motor(io.engineblock.activityapi.core.Motor) SimpleActivity(io.engineblock.activityimpl.SimpleActivity) SimpleActivity(io.engineblock.activityimpl.SimpleActivity) Activity(io.engineblock.activityapi.core.Activity) CoreMotor(io.engineblock.activityimpl.motor.CoreMotor) Test(org.testng.annotations.Test)

Example 2 with Motor

use of io.engineblock.activityapi.core.Motor in project engineblock by engineblock.

the class CoreMotorTest method testIteratorStride.

@Test
public void testIteratorStride() {
    BlockingSegmentInput lockstepper = new BlockingSegmentInput();
    Motor cm1 = new CoreMotor(new SimpleActivity("stride=3"), 1L, lockstepper);
    AtomicLongArray ary = new AtomicLongArray(10);
    Action a1 = getTestArrayConsumer(ary);
    cm1.setAction(a1);
    cm1.getSlotStateTracker().enterState(RunState.Starting);
    Thread t1 = new Thread(cm1);
    t1.setName("cm1");
    t1.start();
    try {
        // allow action time to be waiting in monitor for test fixture
        Thread.sleep(500);
    } catch (InterruptedException ignored) {
    }
    lockstepper.publishSegment(11L, 12L, 13L);
    boolean result = awaitAryCondition(ala -> (ala.get(2) == 13L), ary, 5000, 100);
    assertThat(ary.get(0)).isEqualTo(11L);
    assertThat(ary.get(1)).isEqualTo(12L);
    assertThat(ary.get(2)).isEqualTo(13L);
    assertThat(ary.get(3)).isEqualTo(0L);
}
Also used : Action(io.engineblock.activityapi.core.Action) BlockingSegmentInput(io.engineblock.activitycore.fortesting.BlockingSegmentInput) CoreMotor(io.engineblock.activityimpl.motor.CoreMotor) Motor(io.engineblock.activityapi.core.Motor) SimpleActivity(io.engineblock.activityimpl.SimpleActivity) AtomicLongArray(java.util.concurrent.atomic.AtomicLongArray) CoreMotor(io.engineblock.activityimpl.motor.CoreMotor) Test(org.testng.annotations.Test)

Aggregations

Motor (io.engineblock.activityapi.core.Motor)2 BlockingSegmentInput (io.engineblock.activitycore.fortesting.BlockingSegmentInput)2 SimpleActivity (io.engineblock.activityimpl.SimpleActivity)2 CoreMotor (io.engineblock.activityimpl.motor.CoreMotor)2 Test (org.testng.annotations.Test)2 Action (io.engineblock.activityapi.core.Action)1 Activity (io.engineblock.activityapi.core.Activity)1 AtomicLong (java.util.concurrent.atomic.AtomicLong)1 AtomicLongArray (java.util.concurrent.atomic.AtomicLongArray)1