use of io.siddhi.core.event.stream.converter.StreamEventConverter in project siddhi by wso2.
the class EventTestCase method testPassThroughStreamEventConverter.
@Test
public void testPassThroughStreamEventConverter() {
Attribute symbol = new Attribute("symbol", Attribute.Type.STRING);
Attribute price = new Attribute("price", Attribute.Type.DOUBLE);
Attribute volume = new Attribute("volume", Attribute.Type.INT);
MetaStreamEvent metaStreamEvent = new MetaStreamEvent();
metaStreamEvent.addOutputDataAllowingDuplicate(symbol);
metaStreamEvent.addOutputDataAllowingDuplicate(price);
metaStreamEvent.addOutputDataAllowingDuplicate(volume);
StreamDefinition streamDefinition = StreamDefinition.id("cseEventStream").attribute("symbol", Attribute.Type.STRING).attribute("price", Attribute.Type.DOUBLE).attribute("volume", Attribute.Type.INT);
Event event = new Event(System.currentTimeMillis(), new Object[] { "WSO2", 200.0, 50 });
metaStreamEvent.addInputDefinition(streamDefinition);
StreamEventConverter converter = StreamEventConverterFactory.constructEventConverter(metaStreamEvent);
StreamEventFactory eventPool = new StreamEventFactory(metaStreamEvent);
StreamEvent newEvent = eventPool.newInstance();
converter.convertEvent(event, newEvent);
AssertJUnit.assertTrue(converter instanceof ZeroStreamEventConverter);
AssertJUnit.assertEquals(3, newEvent.getOutputData().length);
AssertJUnit.assertEquals("WSO2", newEvent.getOutputData()[0]);
AssertJUnit.assertEquals(200.0, newEvent.getOutputData()[1]);
AssertJUnit.assertEquals(50, newEvent.getOutputData()[2]);
}
use of io.siddhi.core.event.stream.converter.StreamEventConverter in project siddhi by wso2.
the class EventTestCase method testSimpleStreamEventConverter.
@Test
public void testSimpleStreamEventConverter() {
Attribute price = new Attribute("price", Attribute.Type.DOUBLE);
Attribute symbol = new Attribute("symbol", Attribute.Type.STRING);
MetaStreamEvent metaStreamEvent = new MetaStreamEvent();
metaStreamEvent.addOutputData(symbol);
metaStreamEvent.addOutputData(price);
StreamDefinition streamDefinition = StreamDefinition.id("cseEventStream").attribute("symbol", Attribute.Type.STRING).attribute("price", Attribute.Type.DOUBLE).attribute("volume", Attribute.Type.INT);
Event event = new Event(System.currentTimeMillis(), new Object[] { "WSO2", 200, 50 });
metaStreamEvent.addInputDefinition(streamDefinition);
StreamEventConverter converter = StreamEventConverterFactory.constructEventConverter(metaStreamEvent);
StreamEventFactory eventPool = new StreamEventFactory(metaStreamEvent);
StreamEvent newEvent = eventPool.newInstance();
converter.convertEvent(event, newEvent);
AssertJUnit.assertTrue(converter instanceof SimpleStreamEventConverter);
AssertJUnit.assertNull(newEvent.getBeforeWindowData());
AssertJUnit.assertNull(newEvent.getOnAfterWindowData());
AssertJUnit.assertEquals(2, newEvent.getOutputData().length);
AssertJUnit.assertEquals(200, newEvent.getOutputData()[1]);
AssertJUnit.assertEquals("WSO2", newEvent.getOutputData()[0]);
}
use of io.siddhi.core.event.stream.converter.StreamEventConverter in project siddhi by wso2.
the class EventTestCase method testStreamEventConverter.
@Test
public void testStreamEventConverter() {
Attribute price = new Attribute("price", Attribute.Type.DOUBLE);
Attribute volume = new Attribute("volume", Attribute.Type.INT);
Attribute symbol = new Attribute("symbol", Attribute.Type.STRING);
MetaStreamEvent metaStreamEvent = new MetaStreamEvent();
metaStreamEvent.addData(volume);
metaStreamEvent.initializeOnAfterWindowData();
metaStreamEvent.addData(price);
metaStreamEvent.addOutputData(symbol);
// complex attribute
metaStreamEvent.addOutputData(null);
StreamDefinition streamDefinition = StreamDefinition.id("cseEventStream").attribute("symbol", Attribute.Type.STRING).attribute("price", Attribute.Type.DOUBLE).attribute("volume", Attribute.Type.INT);
Event event = new Event(System.currentTimeMillis(), new Object[] { "WSO2", 200, 50 });
metaStreamEvent.addInputDefinition(streamDefinition);
StreamEventConverter converter = StreamEventConverterFactory.constructEventConverter(metaStreamEvent);
StreamEventFactory eventPool = new StreamEventFactory(metaStreamEvent);
StreamEvent newEvent = eventPool.newInstance();
converter.convertEvent(event, newEvent);
AssertJUnit.assertTrue(converter instanceof SelectiveStreamEventConverter);
// volume
AssertJUnit.assertEquals(1, newEvent.getBeforeWindowData().length);
// price
AssertJUnit.assertEquals(1, newEvent.getOnAfterWindowData().length);
// symbol and avgPrice
AssertJUnit.assertEquals(2, newEvent.getOutputData().length);
AssertJUnit.assertEquals(50, newEvent.getBeforeWindowData()[0]);
AssertJUnit.assertEquals(200, newEvent.getOnAfterWindowData()[0]);
AssertJUnit.assertEquals("WSO2", newEvent.getOutputData()[0]);
}
use of io.siddhi.core.event.stream.converter.StreamEventConverter in project siddhi by wso2.
the class MultiProcessStreamReceiver method receive.
@Override
public void receive(Event[] events) {
List<ReturnEventHolder> returnEventHolderList = new ArrayList<>(eventSequence.length);
synchronized (patternSyncObject) {
for (Event event : events) {
try {
multiProcessReturn.set(new ReturnEventHolder());
stabilizeStates(event.getTimestamp());
for (int anEventSequence : eventSequence) {
StreamEventConverter aStreamEventConverter = streamEventConverters[anEventSequence];
StreamEventFactory aStreamEventFactory = streamEventFactorys[anEventSequence];
StreamEvent newEvent = aStreamEventFactory.newInstance();
aStreamEventConverter.convertEvent(event, newEvent);
process(anEventSequence, newEvent);
if (multiProcessReturn.get() != null && multiProcessReturn.get().complexEventChunk != null) {
returnEventHolderList.add(multiProcessReturn.get());
multiProcessReturn.set(new ReturnEventHolder());
}
}
} finally {
multiProcessReturn.set(null);
}
}
}
for (ReturnEventHolder returnEventHolder : returnEventHolderList) {
outputRateLimiter.sendToCallBacks(returnEventHolder.complexEventChunk);
}
}
Aggregations