use of org.apache.samza.operators.triggers.Trigger in project samza by apache.
the class TestWindowOperatorSpec method testTriggerIntervalWithSingleTimeTrigger.
@Test
public void testTriggerIntervalWithSingleTimeTrigger() {
Trigger defaultTrigger = Triggers.timeSinceFirstMessage(Duration.ofMillis(150));
Trigger earlyTrigger = Triggers.repeat(Triggers.count(5));
WindowInternal window = new WindowInternal(defaultTrigger, null, null, null, null, WindowType.SESSION);
window.setEarlyTrigger(earlyTrigger);
WindowOperatorSpec spec = new WindowOperatorSpec(window, new MessageStreamImpl(null), 0);
Assert.assertEquals(spec.getDefaultTriggerMs(), 150);
}
use of org.apache.samza.operators.triggers.Trigger in project samza by apache.
the class TestWindowOperatorSpec method testTriggerIntervalWithNestedTimeTriggers.
@Test
public void testTriggerIntervalWithNestedTimeTriggers() {
Trigger defaultTrigger = Triggers.timeSinceFirstMessage(Duration.ofMillis(150));
Trigger lateTrigger = Triggers.any(Triggers.count(6), Triggers.timeSinceFirstMessage(Duration.ofMillis(15)));
Trigger earlyTrigger = Triggers.repeat(Triggers.any(Triggers.count(23), Triggers.timeSinceFirstMessage(Duration.ofMillis(15)), Triggers.any(Triggers.any(Triggers.count(6), Triggers.timeSinceFirstMessage(Duration.ofMillis(15)), Triggers.timeSinceFirstMessage(Duration.ofMillis(25)), Triggers.timeSinceLastMessage(Duration.ofMillis(15))))));
WindowInternal window = new WindowInternal(defaultTrigger, null, null, null, null, WindowType.SESSION);
window.setEarlyTrigger(earlyTrigger);
window.setLateTrigger(lateTrigger);
WindowOperatorSpec spec = new WindowOperatorSpec(window, new MessageStreamImpl(null), 0);
Assert.assertEquals(spec.getDefaultTriggerMs(), 5);
}
use of org.apache.samza.operators.triggers.Trigger in project samza by apache.
the class TestWindowOperator method testCancelationOfRepeatingNestedTriggers.
@Test
public void testCancelationOfRepeatingNestedTriggers() throws Exception {
StreamApplication sgb = new KeyedTumblingWindowStreamApplication(AccumulationMode.ACCUMULATING, Duration.ofSeconds(1), Triggers.repeat(Triggers.any(Triggers.count(2), Triggers.timeSinceFirstMessage(Duration.ofMillis(500)))));
List<WindowPane<Integer, Collection<IntegerEnvelope>>> windowPanes = new ArrayList<>();
MessageCollector messageCollector = envelope -> windowPanes.add((WindowPane<Integer, Collection<IntegerEnvelope>>) envelope.getMessage());
TestClock testClock = new TestClock();
StreamOperatorTask task = new StreamOperatorTask(sgb, runner, testClock);
task.init(config, taskContext);
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
//assert that the count trigger fired
Assert.assertEquals(windowPanes.size(), 1);
//advance the timer to enable the potential triggering of the inner timeSinceFirstMessage trigger
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
testClock.advanceTime(Duration.ofMillis(500));
//assert that the triggering of the count trigger cancelled the inner timeSinceFirstMessage trigger
task.window(messageCollector, taskCoordinator);
Assert.assertEquals(windowPanes.size(), 2);
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
Assert.assertEquals(windowPanes.size(), 3);
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
//advance timer by 500 more millis to enable the default trigger
testClock.advanceTime(Duration.ofMillis(500));
task.window(messageCollector, taskCoordinator);
//assert that the default trigger fired
Assert.assertEquals(windowPanes.size(), 4);
}
use of org.apache.samza.operators.triggers.Trigger in project samza by apache.
the class TestWindowOperator method testCancellationOfAnyTrigger.
@Test
public void testCancellationOfAnyTrigger() throws Exception {
StreamApplication sgb = new KeyedTumblingWindowStreamApplication(AccumulationMode.ACCUMULATING, Duration.ofSeconds(1), Triggers.any(Triggers.count(2), Triggers.timeSinceFirstMessage(Duration.ofMillis(500))));
TestClock testClock = new TestClock();
StreamOperatorTask task = new StreamOperatorTask(sgb, runner, testClock);
task.init(config, taskContext);
List<WindowPane<Integer, Collection<IntegerEnvelope>>> windowPanes = new ArrayList<>();
MessageCollector messageCollector = envelope -> windowPanes.add((WindowPane<Integer, Collection<IntegerEnvelope>>) envelope.getMessage());
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
//assert that the count trigger fired
Assert.assertEquals(windowPanes.size(), 1);
//advance the timer to enable the triggering of the inner timeSinceFirstMessage trigger
testClock.advanceTime(Duration.ofMillis(500));
//assert that the triggering of the count trigger cancelled the inner timeSinceFirstMessage trigger
Assert.assertEquals(windowPanes.size(), 1);
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
//advance timer by 500 more millis to enable the default trigger
testClock.advanceTime(Duration.ofMillis(500));
task.window(messageCollector, taskCoordinator);
//assert that the default trigger fired
Assert.assertEquals(windowPanes.size(), 2);
Assert.assertEquals(windowPanes.get(1).getFiringType(), FiringType.DEFAULT);
Assert.assertEquals(windowPanes.get(1).getKey().getKey(), new Integer(1));
Assert.assertEquals(windowPanes.get(1).getKey().getPaneId(), "0");
Assert.assertEquals((windowPanes.get(1).getMessage()).size(), 5);
task.process(new IntegerEnvelope(1), messageCollector, taskCoordinator);
//advance timer by 500 millis to enable the inner timeSinceFirstMessage trigger
testClock.advanceTime(Duration.ofMillis(500));
task.window(messageCollector, taskCoordinator);
Assert.assertEquals(windowPanes.size(), 3);
Assert.assertEquals(windowPanes.get(2).getFiringType(), FiringType.EARLY);
Assert.assertEquals(windowPanes.get(2).getKey().getKey(), new Integer(1));
Assert.assertEquals(windowPanes.get(2).getKey().getPaneId(), "1000");
//advance timer by > 500 millis to enable the default trigger
testClock.advanceTime(Duration.ofMillis(900));
task.window(messageCollector, taskCoordinator);
Assert.assertEquals(windowPanes.size(), 4);
Assert.assertEquals(windowPanes.get(3).getFiringType(), FiringType.DEFAULT);
Assert.assertEquals(windowPanes.get(3).getKey().getKey(), new Integer(1));
Assert.assertEquals(windowPanes.get(3).getKey().getPaneId(), "1000");
}
Aggregations