org.apache.flink.cep.SubEvent Java Examples
The following examples show how to use
org.apache.flink.cep.SubEvent.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: PatternTest.java From Flink-CEPplus with Apache License 2.0 | 6 votes |
@Test public void testPatternWithSubtypingAndFilter() { Pattern<Event, Event> pattern = Pattern.<Event>begin("start").next("subevent").subtype(SubEvent.class).where(new SimpleCondition<SubEvent>() { private static final long serialVersionUID = -4118591291880230304L; @Override public boolean filter(SubEvent value) throws Exception { return false; } }).followedBy("end"); Pattern<Event, ?> previous; Pattern<Event, ?> previous2; assertNotNull(previous = pattern.getPrevious()); assertNotNull(previous2 = previous.getPrevious()); assertNull(previous2.getPrevious()); assertEquals(ConsumingStrategy.SKIP_TILL_NEXT, pattern.getQuantifier().getConsumingStrategy()); assertNotNull(previous.getCondition()); assertEquals(pattern.getName(), "end"); assertEquals(previous.getName(), "subevent"); assertEquals(previous2.getName(), "start"); }
Example #2
Source File: PatternTest.java From flink with Apache License 2.0 | 6 votes |
@Test public void testPatternWithSubtyping() { Pattern<Event, ?> pattern = Pattern.<Event>begin("start").next("subevent").subtype(SubEvent.class).followedBy("end"); Pattern<Event, ?> previous; Pattern<Event, ?> previous2; assertNotNull(previous = pattern.getPrevious()); assertNotNull(previous2 = previous.getPrevious()); assertNull(previous2.getPrevious()); assertNotNull(previous.getCondition()); assertTrue(previous.getCondition() instanceof SubtypeCondition); assertEquals(pattern.getName(), "end"); assertEquals(previous.getName(), "subevent"); assertEquals(previous2.getName(), "start"); }
Example #3
Source File: PatternTest.java From flink with Apache License 2.0 | 6 votes |
@Test public void testPatternWithSubtypingAndFilter() { Pattern<Event, Event> pattern = Pattern.<Event>begin("start").next("subevent").subtype(SubEvent.class).where(new SimpleCondition<SubEvent>() { private static final long serialVersionUID = -4118591291880230304L; @Override public boolean filter(SubEvent value) throws Exception { return false; } }).followedBy("end"); Pattern<Event, ?> previous; Pattern<Event, ?> previous2; assertNotNull(previous = pattern.getPrevious()); assertNotNull(previous2 = previous.getPrevious()); assertNull(previous2.getPrevious()); assertEquals(ConsumingStrategy.SKIP_TILL_NEXT, pattern.getQuantifier().getConsumingStrategy()); assertNotNull(previous.getCondition()); assertEquals(pattern.getName(), "end"); assertEquals(previous.getName(), "subevent"); assertEquals(previous2.getName(), "start"); }
Example #4
Source File: PatternTest.java From Flink-CEPplus with Apache License 2.0 | 6 votes |
@Test public void testPatternWithSubtyping() { Pattern<Event, ?> pattern = Pattern.<Event>begin("start").next("subevent").subtype(SubEvent.class).followedBy("end"); Pattern<Event, ?> previous; Pattern<Event, ?> previous2; assertNotNull(previous = pattern.getPrevious()); assertNotNull(previous2 = previous.getPrevious()); assertNull(previous2.getPrevious()); assertNotNull(previous.getCondition()); assertTrue(previous.getCondition() instanceof SubtypeCondition); assertEquals(pattern.getName(), "end"); assertEquals(previous.getName(), "subevent"); assertEquals(previous2.getName(), "start"); }
Example #5
Source File: PatternTest.java From flink with Apache License 2.0 | 6 votes |
@Test public void testPatternWithSubtyping() { Pattern<Event, ?> pattern = Pattern.<Event>begin("start").next("subevent").subtype(SubEvent.class).followedBy("end"); Pattern<Event, ?> previous; Pattern<Event, ?> previous2; assertNotNull(previous = pattern.getPrevious()); assertNotNull(previous2 = previous.getPrevious()); assertNull(previous2.getPrevious()); assertNotNull(previous.getCondition()); assertTrue(previous.getCondition() instanceof SubtypeCondition); assertEquals(pattern.getName(), "end"); assertEquals(previous.getName(), "subevent"); assertEquals(previous2.getName(), "start"); }
Example #6
Source File: PatternTest.java From flink with Apache License 2.0 | 6 votes |
@Test public void testPatternWithSubtypingAndFilter() { Pattern<Event, Event> pattern = Pattern.<Event>begin("start").next("subevent").subtype(SubEvent.class).where(new SimpleCondition<SubEvent>() { private static final long serialVersionUID = -4118591291880230304L; @Override public boolean filter(SubEvent value) throws Exception { return false; } }).followedBy("end"); Pattern<Event, ?> previous; Pattern<Event, ?> previous2; assertNotNull(previous = pattern.getPrevious()); assertNotNull(previous2 = previous.getPrevious()); assertNull(previous2.getPrevious()); assertEquals(ConsumingStrategy.SKIP_TILL_NEXT, pattern.getQuantifier().getConsumingStrategy()); assertNotNull(previous.getCondition()); assertEquals(pattern.getName(), "end"); assertEquals(previous.getName(), "subevent"); assertEquals(previous2.getName(), "start"); }
Example #7
Source File: CEPOperatorTest.java From flink with Apache License 2.0 | 5 votes |
@Test public void testKeyedCEPOperatorNFAUpdateTimes() throws Exception { CepOperator<Event, Integer, Map<String, List<Event>>> operator = CepOperatorTestUtilities.getKeyedCepOpearator( true, new SimpleNFAFactory()); OneInputStreamOperatorTestHarness<Event, Map<String, List<Event>>> harness = CepOperatorTestUtilities.getCepTestHarness(operator); try { harness.open(); final ValueState nfaOperatorState = (ValueState) Whitebox.<ValueState>getInternalState(operator, "computationStates"); final ValueState nfaOperatorStateSpy = Mockito.spy(nfaOperatorState); Whitebox.setInternalState(operator, "computationStates", nfaOperatorStateSpy); Event startEvent = new Event(42, "c", 1.0); SubEvent middleEvent = new SubEvent(42, "a", 1.0, 10.0); Event endEvent = new Event(42, "b", 1.0); harness.processElement(new StreamRecord<>(startEvent, 1L)); harness.processElement(new StreamRecord<>(new Event(42, "d", 1.0), 4L)); harness.processElement(new StreamRecord<Event>(middleEvent, 4L)); harness.processElement(new StreamRecord<>(endEvent, 4L)); // verify the number of invocations NFA is updated Mockito.verify(nfaOperatorStateSpy, Mockito.times(3)).update(Mockito.any()); // get and verify the output Queue<Object> result = harness.getOutput(); assertEquals(1, result.size()); verifyPattern(result.poll(), startEvent, middleEvent, endEvent); } finally { harness.close(); } }
Example #8
Source File: CEPRescalingTest.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
private void verifyPattern(Object outputObject, Event start, SubEvent middle, Event end) { assertTrue(outputObject instanceof StreamRecord); StreamRecord<?> resultRecord = (StreamRecord<?>) outputObject; assertTrue(resultRecord.getValue() instanceof Map); @SuppressWarnings("unchecked") Map<String, List<Event>> patternMap = (Map<String, List<Event>>) resultRecord.getValue(); assertEquals(start, patternMap.get("start").get(0)); assertEquals(middle, patternMap.get("middle").get(0)); assertEquals(end, patternMap.get("end").get(0)); }
Example #9
Source File: CEPMigrationTest.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
@Override public NFA<Event> createNFA() { Pattern<Event, ?> pattern = Pattern.<Event>begin("start").where(new StartFilter()) .followedByAny("middle") .subtype(SubEvent.class) .where(new MiddleFilter()) .followedByAny("end") .where(new EndFilter()) // add a window timeout to test whether timestamps of elements in the // priority queue in CEP operator are correctly checkpointed/restored .within(Time.milliseconds(10L)); return NFACompiler.compileFactory(pattern, handleTimeout).createNFA(); }
Example #10
Source File: IterativeConditionsITCase.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
@Override public boolean filter (SubEvent value, Context < SubEvent > ctx) throws Exception { if (!value.getName().startsWith("foo")) { return false; } double sum = 0.0; for (Event event : ctx.getEventsForPattern("middle")) { sum += event.getPrice(); } sum += value.getPrice(); return Double.compare(sum, 5.0) < 0; }
Example #11
Source File: CEPOperatorTest.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
private void verifyPattern(Object outputObject, Event start, SubEvent middle, Event end) { assertTrue(outputObject instanceof StreamRecord); StreamRecord<?> resultRecord = (StreamRecord<?>) outputObject; assertTrue(resultRecord.getValue() instanceof Map); @SuppressWarnings("unchecked") Map<String, List<Event>> patternMap = (Map<String, List<Event>>) resultRecord.getValue(); assertEquals(start, patternMap.get("start").get(0)); assertEquals(middle, patternMap.get("middle").get(0)); assertEquals(end, patternMap.get("end").get(0)); }
Example #12
Source File: CEPOperatorTest.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
@Test public void testKeyedCEPOperatorNFAUpdateTimes() throws Exception { CepOperator<Event, Integer, Map<String, List<Event>>> operator = CepOperatorTestUtilities.getKeyedCepOpearator( true, new SimpleNFAFactory()); OneInputStreamOperatorTestHarness<Event, Map<String, List<Event>>> harness = CepOperatorTestUtilities.getCepTestHarness(operator); try { harness.open(); final ValueState nfaOperatorState = (ValueState) Whitebox.<ValueState>getInternalState(operator, "computationStates"); final ValueState nfaOperatorStateSpy = Mockito.spy(nfaOperatorState); Whitebox.setInternalState(operator, "computationStates", nfaOperatorStateSpy); Event startEvent = new Event(42, "c", 1.0); SubEvent middleEvent = new SubEvent(42, "a", 1.0, 10.0); Event endEvent = new Event(42, "b", 1.0); harness.processElement(new StreamRecord<>(startEvent, 1L)); harness.processElement(new StreamRecord<>(new Event(42, "d", 1.0), 4L)); harness.processElement(new StreamRecord<Event>(middleEvent, 4L)); harness.processElement(new StreamRecord<>(endEvent, 4L)); // verify the number of invocations NFA is updated Mockito.verify(nfaOperatorStateSpy, Mockito.times(3)).update(Mockito.any()); // get and verify the output Queue<Object> result = harness.getOutput(); assertEquals(1, result.size()); verifyPattern(result.poll(), startEvent, middleEvent, endEvent); } finally { harness.close(); } }
Example #13
Source File: CEPMigrationTest.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
/** * Manually run this to write binary snapshot data. */ @Ignore @Test public void writeAndOrSubtypConditionsPatternAfterMigrationSnapshot() throws Exception { KeySelector<Event, Integer> keySelector = new KeySelector<Event, Integer>() { private static final long serialVersionUID = -4873366487571254798L; @Override public Integer getKey(Event value) throws Exception { return value.getId(); } }; final Event startEvent1 = new SubEvent(42, "start", 1.0, 6.0); OneInputStreamOperatorTestHarness<Event, Map<String, List<Event>>> harness = new KeyedOneInputStreamOperatorTestHarness<>( getKeyedCepOpearator(false, new NFAComplexConditionsFactory()), keySelector, BasicTypeInfo.INT_TYPE_INFO); try { harness.setup(); harness.open(); harness.processElement(new StreamRecord<>(startEvent1, 5)); harness.processWatermark(new Watermark(6)); // do snapshot and save to file OperatorSubtaskState snapshot = harness.snapshot(0L, 0L); OperatorSnapshotUtil.writeStateHandle(snapshot, "src/test/resources/cep-migration-conditions-flink" + flinkGenerateSavepointVersion + "-snapshot"); } finally { harness.close(); } }
Example #14
Source File: CEPMigrationTest.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
@Override public NFA<Event> createNFA() { Pattern<Event, ?> pattern = Pattern.<Event>begin("start") .subtype(SubEvent.class) .where(new MiddleFilter()) .or(new SubEventEndFilter()) .times(2) .within(Time.milliseconds(10L)); return NFACompiler.compileFactory(pattern, handleTimeout).createNFA(); }
Example #15
Source File: CEPOperatorTest.java From flink with Apache License 2.0 | 5 votes |
private void verifyPattern(Object outputObject, Event start, SubEvent middle, Event end) { assertTrue(outputObject instanceof StreamRecord); StreamRecord<?> resultRecord = (StreamRecord<?>) outputObject; assertTrue(resultRecord.getValue() instanceof Map); @SuppressWarnings("unchecked") Map<String, List<Event>> patternMap = (Map<String, List<Event>>) resultRecord.getValue(); assertEquals(start, patternMap.get("start").get(0)); assertEquals(middle, patternMap.get("middle").get(0)); assertEquals(end, patternMap.get("end").get(0)); }
Example #16
Source File: IterativeConditionsITCase.java From flink with Apache License 2.0 | 5 votes |
@Override public boolean filter (SubEvent value, Context < SubEvent > ctx) throws Exception { if (!value.getName().startsWith("foo")) { return false; } double sum = 0.0; for (Event event : ctx.getEventsForPattern("middle")) { sum += event.getPrice(); } sum += value.getPrice(); return Double.compare(sum, 5.0) < 0; }
Example #17
Source File: CEPRescalingTest.java From flink with Apache License 2.0 | 5 votes |
private void verifyPattern(Object outputObject, Event start, SubEvent middle, Event end) { assertTrue(outputObject instanceof StreamRecord); StreamRecord<?> resultRecord = (StreamRecord<?>) outputObject; assertTrue(resultRecord.getValue() instanceof Map); @SuppressWarnings("unchecked") Map<String, List<Event>> patternMap = (Map<String, List<Event>>) resultRecord.getValue(); assertEquals(start, patternMap.get("start").get(0)); assertEquals(middle, patternMap.get("middle").get(0)); assertEquals(end, patternMap.get("end").get(0)); }
Example #18
Source File: CEPOperatorTest.java From flink with Apache License 2.0 | 5 votes |
@Test public void testKeyedCEPOperatorNFAUpdateTimes() throws Exception { CepOperator<Event, Integer, Map<String, List<Event>>> operator = CepOperatorTestUtilities.getKeyedCepOpearator( true, new SimpleNFAFactory()); OneInputStreamOperatorTestHarness<Event, Map<String, List<Event>>> harness = CepOperatorTestUtilities.getCepTestHarness(operator); try { harness.open(); final ValueState nfaOperatorState = (ValueState) Whitebox.<ValueState>getInternalState(operator, "computationStates"); final ValueState nfaOperatorStateSpy = Mockito.spy(nfaOperatorState); Whitebox.setInternalState(operator, "computationStates", nfaOperatorStateSpy); Event startEvent = new Event(42, "c", 1.0); SubEvent middleEvent = new SubEvent(42, "a", 1.0, 10.0); Event endEvent = new Event(42, "b", 1.0); harness.processElement(new StreamRecord<>(startEvent, 1L)); harness.processElement(new StreamRecord<>(new Event(42, "d", 1.0), 4L)); harness.processElement(new StreamRecord<Event>(middleEvent, 4L)); harness.processElement(new StreamRecord<>(endEvent, 4L)); // verify the number of invocations NFA is updated Mockito.verify(nfaOperatorStateSpy, Mockito.times(3)).update(Mockito.any()); // get and verify the output Queue<Object> result = harness.getOutput(); assertEquals(1, result.size()); verifyPattern(result.poll(), startEvent, middleEvent, endEvent); } finally { harness.close(); } }
Example #19
Source File: CEPMigrationTest.java From flink with Apache License 2.0 | 5 votes |
@Override public NFA<Event> createNFA() { Pattern<Event, ?> pattern = Pattern.<Event>begin("start").where(new StartFilter()) .followedByAny("middle") .subtype(SubEvent.class) .where(new MiddleFilter()) .followedByAny("end") .where(new EndFilter()) // add a window timeout to test whether timestamps of elements in the // priority queue in CEP operator are correctly checkpointed/restored .within(Time.milliseconds(10L)); return NFACompiler.compileFactory(pattern, handleTimeout).createNFA(); }
Example #20
Source File: CEPMigrationTest.java From flink with Apache License 2.0 | 5 votes |
/** * Manually run this to write binary snapshot data. */ @Ignore @Test public void writeAndOrSubtypConditionsPatternAfterMigrationSnapshot() throws Exception { KeySelector<Event, Integer> keySelector = new KeySelector<Event, Integer>() { private static final long serialVersionUID = -4873366487571254798L; @Override public Integer getKey(Event value) throws Exception { return value.getId(); } }; final Event startEvent1 = new SubEvent(42, "start", 1.0, 6.0); OneInputStreamOperatorTestHarness<Event, Map<String, List<Event>>> harness = new KeyedOneInputStreamOperatorTestHarness<>( getKeyedCepOpearator(false, new NFAComplexConditionsFactory()), keySelector, BasicTypeInfo.INT_TYPE_INFO); try { harness.setup(); harness.open(); harness.processElement(new StreamRecord<>(startEvent1, 5)); harness.processWatermark(new Watermark(6)); // do snapshot and save to file OperatorSubtaskState snapshot = harness.snapshot(0L, 0L); OperatorSnapshotUtil.writeStateHandle(snapshot, "src/test/resources/cep-migration-conditions-flink" + flinkGenerateSavepointVersion + "-snapshot"); } finally { harness.close(); } }
Example #21
Source File: CEPMigrationTest.java From flink with Apache License 2.0 | 5 votes |
@Override public NFA<Event> createNFA() { Pattern<Event, ?> pattern = Pattern.<Event>begin("start") .subtype(SubEvent.class) .where(new MiddleFilter()) .or(new SubEventEndFilter()) .times(2) .within(Time.milliseconds(10L)); return NFACompiler.compileFactory(pattern, handleTimeout).createNFA(); }
Example #22
Source File: CEPMigrationTest.java From flink with Apache License 2.0 | 5 votes |
@Override public NFA<Event> createNFA() { Pattern<Event, ?> pattern = Pattern.<Event>begin("start").where(new StartFilter()) .followedByAny("middle") .subtype(SubEvent.class) .where(new MiddleFilter()) .followedByAny("end") .where(new EndFilter()) // add a window timeout to test whether timestamps of elements in the // priority queue in CEP operator are correctly checkpointed/restored .within(Time.milliseconds(10L)); return NFACompiler.compileFactory(pattern, handleTimeout).createNFA(); }
Example #23
Source File: IterativeConditionsITCase.java From flink with Apache License 2.0 | 5 votes |
@Override public boolean filter (SubEvent value, Context < SubEvent > ctx) throws Exception { if (!value.getName().startsWith("foo")) { return false; } double sum = 0.0; for (Event event : ctx.getEventsForPattern("middle")) { sum += event.getPrice(); } sum += value.getPrice(); return Double.compare(sum, 5.0) < 0; }
Example #24
Source File: CEPMigrationTest.java From flink with Apache License 2.0 | 5 votes |
@Override public NFA<Event> createNFA() { Pattern<Event, ?> pattern = Pattern.<Event>begin("start") .subtype(SubEvent.class) .where(new MiddleFilter()) .or(new SubEventEndFilter()) .times(2) .within(Time.milliseconds(10L)); return NFACompiler.compileFactory(pattern, handleTimeout).createNFA(); }
Example #25
Source File: CEPMigrationTest.java From flink with Apache License 2.0 | 5 votes |
/** * Manually run this to write binary snapshot data. */ @Ignore @Test public void writeAndOrSubtypConditionsPatternAfterMigrationSnapshot() throws Exception { KeySelector<Event, Integer> keySelector = new KeySelector<Event, Integer>() { private static final long serialVersionUID = -4873366487571254798L; @Override public Integer getKey(Event value) throws Exception { return value.getId(); } }; final Event startEvent1 = new SubEvent(42, "start", 1.0, 6.0); OneInputStreamOperatorTestHarness<Event, Map<String, List<Event>>> harness = new KeyedOneInputStreamOperatorTestHarness<>( getKeyedCepOpearator(false, new NFAComplexConditionsFactory()), keySelector, BasicTypeInfo.INT_TYPE_INFO); try { harness.setup(); harness.open(); harness.processElement(new StreamRecord<>(startEvent1, 5)); harness.processWatermark(new Watermark(6)); // do snapshot and save to file OperatorSubtaskState snapshot = harness.snapshot(0L, 0L); OperatorSnapshotUtil.writeStateHandle(snapshot, "src/test/resources/cep-migration-conditions-flink" + flinkGenerateSavepointVersion + "-snapshot"); } finally { harness.close(); } }
Example #26
Source File: CEPRescalingTest.java From flink with Apache License 2.0 | 5 votes |
private void verifyPattern(Object outputObject, Event start, SubEvent middle, Event end) { assertTrue(outputObject instanceof StreamRecord); StreamRecord<?> resultRecord = (StreamRecord<?>) outputObject; assertTrue(resultRecord.getValue() instanceof Map); @SuppressWarnings("unchecked") Map<String, List<Event>> patternMap = (Map<String, List<Event>>) resultRecord.getValue(); assertEquals(start, patternMap.get("start").get(0)); assertEquals(middle, patternMap.get("middle").get(0)); assertEquals(end, patternMap.get("end").get(0)); }
Example #27
Source File: CEPOperatorTest.java From flink with Apache License 2.0 | 5 votes |
private void verifyPattern(Object outputObject, Event start, SubEvent middle, Event end) { assertTrue(outputObject instanceof StreamRecord); StreamRecord<?> resultRecord = (StreamRecord<?>) outputObject; assertTrue(resultRecord.getValue() instanceof Map); @SuppressWarnings("unchecked") Map<String, List<Event>> patternMap = (Map<String, List<Event>>) resultRecord.getValue(); assertEquals(start, patternMap.get("start").get(0)); assertEquals(middle, patternMap.get("middle").get(0)); assertEquals(end, patternMap.get("end").get(0)); }
Example #28
Source File: CEPOperatorTest.java From flink with Apache License 2.0 | 4 votes |
@Test public void testKeyedCEPOperatorNFAUpdateTimesWithRocksDB() throws Exception { String rocksDbPath = tempFolder.newFolder().getAbsolutePath(); RocksDBStateBackend rocksDBStateBackend = new RocksDBStateBackend(new MemoryStateBackend()); rocksDBStateBackend.setDbStoragePath(rocksDbPath); CepOperator<Event, Integer, Map<String, List<Event>>> operator = CepOperatorTestUtilities.getKeyedCepOpearator( true, new SimpleNFAFactory()); OneInputStreamOperatorTestHarness<Event, Map<String, List<Event>>> harness = CepOperatorTestUtilities.getCepTestHarness( operator); try { harness.setStateBackend(rocksDBStateBackend); harness.open(); final ValueState nfaOperatorState = (ValueState) Whitebox.<ValueState>getInternalState(operator, "computationStates"); final ValueState nfaOperatorStateSpy = Mockito.spy(nfaOperatorState); Whitebox.setInternalState(operator, "computationStates", nfaOperatorStateSpy); Event startEvent = new Event(42, "c", 1.0); SubEvent middleEvent = new SubEvent(42, "a", 1.0, 10.0); Event endEvent = new Event(42, "b", 1.0); harness.processElement(new StreamRecord<>(startEvent, 1L)); harness.processElement(new StreamRecord<>(new Event(42, "d", 1.0), 4L)); harness.processElement(new StreamRecord<Event>(middleEvent, 4L)); harness.processElement(new StreamRecord<>(endEvent, 4L)); // verify the number of invocations NFA is updated Mockito.verify(nfaOperatorStateSpy, Mockito.times(3)).update(Mockito.any()); // get and verify the output Queue<Object> result = harness.getOutput(); assertEquals(1, result.size()); verifyPattern(result.poll(), startEvent, middleEvent, endEvent); } finally { harness.close(); } }
Example #29
Source File: CEPOperatorTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@Test public void testCEPOperatorCleanupProcessingTime() throws Exception { Event startEvent1 = new Event(42, "start", 1.0); Event startEvent2 = new Event(42, "start", 2.0); SubEvent middleEvent1 = new SubEvent(42, "foo1", 1.0, 10.0); SubEvent middleEvent2 = new SubEvent(42, "foo2", 1.0, 10.0); SubEvent middleEvent3 = new SubEvent(42, "foo3", 1.0, 10.0); Event endEvent1 = new Event(42, "end", 1.0); Event endEvent2 = new Event(42, "end", 2.0); Event startEventK2 = new Event(43, "start", 1.0); CepOperator<Event, Integer, Map<String, List<Event>>> operator = getKeyedCepOperator(true); OneInputStreamOperatorTestHarness<Event, Map<String, List<Event>>> harness = CepOperatorTestUtilities.getCepTestHarness(operator); try { harness.open(); harness.setProcessingTime(0L); harness.processElement(new StreamRecord<>(startEvent1, 1L)); harness.processElement(new StreamRecord<>(startEventK2, 1L)); harness.processElement(new StreamRecord<>(new Event(42, "foobar", 1.0), 2L)); harness.processElement(new StreamRecord<Event>(middleEvent1, 2L)); harness .processElement(new StreamRecord<Event>(new SubEvent(42, "barfoo", 1.0, 5.0), 3L)); assertTrue(!operator.hasNonEmptyPQ(42)); assertTrue(!operator.hasNonEmptyPQ(43)); assertTrue(operator.hasNonEmptySharedBuffer(42)); assertTrue(operator.hasNonEmptySharedBuffer(43)); harness.setProcessingTime(3L); harness.processElement(new StreamRecord<>(startEvent2, 3L)); harness.processElement(new StreamRecord<Event>(middleEvent2, 4L)); OperatorSubtaskState snapshot = harness.snapshot(0L, 0L); harness.close(); CepOperator<Event, Integer, Map<String, List<Event>>> operator2 = getKeyedCepOperator(true); harness = CepOperatorTestUtilities.getCepTestHarness(operator2); harness.setup(); harness.initializeState(snapshot); harness.open(); harness.setProcessingTime(3L); harness.processElement(new StreamRecord<>(endEvent1, 5L)); verifyPattern(harness.getOutput().poll(), startEvent1, middleEvent1, endEvent1); verifyPattern(harness.getOutput().poll(), startEvent1, middleEvent2, endEvent1); verifyPattern(harness.getOutput().poll(), startEvent2, middleEvent2, endEvent1); harness.setProcessingTime(11L); harness.processElement(new StreamRecord<Event>(middleEvent3, 11L)); harness.processElement(new StreamRecord<>(endEvent2, 12L)); verifyPattern(harness.getOutput().poll(), startEvent2, middleEvent2, endEvent2); verifyPattern(harness.getOutput().poll(), startEvent2, middleEvent3, endEvent2); harness.setProcessingTime(21L); assertTrue(operator2.hasNonEmptySharedBuffer(42)); harness.processElement(new StreamRecord<>(startEvent1, 21L)); assertTrue(operator2.hasNonEmptySharedBuffer(42)); harness.setProcessingTime(49L); // TODO: 3/13/17 we have to have another event in order to clean up harness.processElement(new StreamRecord<>(new Event(42, "foobar", 1.0), 2L)); // the pattern expired assertTrue(!operator2.hasNonEmptySharedBuffer(42)); assertEquals(0L, harness.numEventTimeTimers()); assertTrue(!operator2.hasNonEmptyPQ(42)); assertTrue(!operator2.hasNonEmptyPQ(43)); } finally { harness.close(); } }
Example #30
Source File: CEPOperatorTest.java From flink with Apache License 2.0 | 4 votes |
@Test public void testCEPOperatorCleanupProcessingTime() throws Exception { Event startEvent1 = new Event(42, "start", 1.0); Event startEvent2 = new Event(42, "start", 2.0); SubEvent middleEvent1 = new SubEvent(42, "foo1", 1.0, 10.0); SubEvent middleEvent2 = new SubEvent(42, "foo2", 1.0, 10.0); SubEvent middleEvent3 = new SubEvent(42, "foo3", 1.0, 10.0); Event endEvent1 = new Event(42, "end", 1.0); Event endEvent2 = new Event(42, "end", 2.0); Event startEventK2 = new Event(43, "start", 1.0); CepOperator<Event, Integer, Map<String, List<Event>>> operator = getKeyedCepOperator(true); OneInputStreamOperatorTestHarness<Event, Map<String, List<Event>>> harness = CepOperatorTestUtilities.getCepTestHarness(operator); try { harness.open(); harness.setProcessingTime(0L); harness.processElement(new StreamRecord<>(startEvent1, 1L)); harness.processElement(new StreamRecord<>(startEventK2, 1L)); harness.processElement(new StreamRecord<>(new Event(42, "foobar", 1.0), 2L)); harness.processElement(new StreamRecord<Event>(middleEvent1, 2L)); harness .processElement(new StreamRecord<Event>(new SubEvent(42, "barfoo", 1.0, 5.0), 3L)); assertTrue(!operator.hasNonEmptyPQ(42)); assertTrue(!operator.hasNonEmptyPQ(43)); assertTrue(operator.hasNonEmptySharedBuffer(42)); assertTrue(operator.hasNonEmptySharedBuffer(43)); harness.setProcessingTime(3L); harness.processElement(new StreamRecord<>(startEvent2, 3L)); harness.processElement(new StreamRecord<Event>(middleEvent2, 4L)); OperatorSubtaskState snapshot = harness.snapshot(0L, 0L); harness.close(); CepOperator<Event, Integer, Map<String, List<Event>>> operator2 = getKeyedCepOperator(true); harness = CepOperatorTestUtilities.getCepTestHarness(operator2); harness.setup(); harness.initializeState(snapshot); harness.open(); harness.setProcessingTime(3L); harness.processElement(new StreamRecord<>(endEvent1, 5L)); verifyPattern(harness.getOutput().poll(), startEvent1, middleEvent1, endEvent1); verifyPattern(harness.getOutput().poll(), startEvent1, middleEvent2, endEvent1); verifyPattern(harness.getOutput().poll(), startEvent2, middleEvent2, endEvent1); harness.setProcessingTime(11L); harness.processElement(new StreamRecord<Event>(middleEvent3, 11L)); harness.processElement(new StreamRecord<>(endEvent2, 12L)); verifyPattern(harness.getOutput().poll(), startEvent2, middleEvent2, endEvent2); verifyPattern(harness.getOutput().poll(), startEvent2, middleEvent3, endEvent2); harness.setProcessingTime(21L); assertTrue(operator2.hasNonEmptySharedBuffer(42)); harness.processElement(new StreamRecord<>(startEvent1, 21L)); assertTrue(operator2.hasNonEmptySharedBuffer(42)); harness.setProcessingTime(49L); // TODO: 3/13/17 we have to have another event in order to clean up harness.processElement(new StreamRecord<>(new Event(42, "foobar", 1.0), 2L)); // the pattern expired assertTrue(!operator2.hasNonEmptySharedBuffer(42)); assertEquals(0L, harness.numEventTimeTimers()); assertTrue(!operator2.hasNonEmptyPQ(42)); assertTrue(!operator2.hasNonEmptyPQ(43)); } finally { harness.close(); } }