use of org.wso2.siddhi.query.api.expression.condition.In in project siddhi by wso2.
the class Window method init.
/**
* Initialize the WindowEvent table by creating {@link WindowProcessor} to handle the events.
*
* @param tableMap map of {@link Table}s
* @param eventWindowMap map of EventWindows
* @param queryName name of the query window belongs to.
*/
public void init(Map<String, Table> tableMap, Map<String, Window> eventWindowMap, String queryName) {
if (this.windowProcessor != null) {
return;
}
// Create and initialize MetaStreamEvent
MetaStreamEvent metaStreamEvent = new MetaStreamEvent();
metaStreamEvent.addInputDefinition(windowDefinition);
metaStreamEvent.setEventType(MetaStreamEvent.EventType.WINDOW);
metaStreamEvent.initializeAfterWindowData();
for (Attribute attribute : windowDefinition.getAttributeList()) {
metaStreamEvent.addOutputData(attribute);
}
this.streamEventPool = new StreamEventPool(metaStreamEvent, 5);
StreamEventCloner streamEventCloner = new StreamEventCloner(metaStreamEvent, this.streamEventPool);
OutputStream.OutputEventType outputEventType = windowDefinition.getOutputEventType();
boolean outputExpectsExpiredEvents = outputEventType != OutputStream.OutputEventType.CURRENT_EVENTS;
WindowProcessor internalWindowProcessor = (WindowProcessor) SingleInputStreamParser.generateProcessor(windowDefinition.getWindow(), metaStreamEvent, new ArrayList<VariableExpressionExecutor>(), this.siddhiAppContext, tableMap, false, outputExpectsExpiredEvents, queryName);
internalWindowProcessor.setStreamEventCloner(streamEventCloner);
internalWindowProcessor.constructStreamEventPopulater(metaStreamEvent, 0);
EntryValveProcessor entryValveProcessor = null;
if (internalWindowProcessor instanceof SchedulingProcessor) {
entryValveProcessor = new EntryValveProcessor(this.siddhiAppContext);
Scheduler scheduler = SchedulerParser.parse(this.siddhiAppContext.getScheduledExecutorService(), entryValveProcessor, this.siddhiAppContext);
scheduler.init(this.lockWrapper, queryName);
scheduler.setStreamEventPool(streamEventPool);
((SchedulingProcessor) internalWindowProcessor).setScheduler(scheduler);
}
if (entryValveProcessor != null) {
entryValveProcessor.setToLast(internalWindowProcessor);
this.windowProcessor = entryValveProcessor;
} else {
this.windowProcessor = internalWindowProcessor;
}
// StreamPublishProcessor must be the last in chain so that it can publish the events to StreamJunction
this.windowProcessor.setToLast(new StreamPublishProcessor(outputEventType));
this.internalWindowProcessor = internalWindowProcessor;
}
use of org.wso2.siddhi.query.api.expression.condition.In in project siddhi by wso2.
the class StdDevAttributeAggregatorTestCase method stdDevAggregatorTest2.
@Test
public void stdDevAggregatorTest2() throws InterruptedException {
log.info("stdDevAggregator Test #2: Single event in the stream");
SiddhiManager siddhiManager = new SiddhiManager();
String execPlan = "" + "@app:name('stdDevAggregatorTests') " + "" + "define stream cseEventStream (symbol string, price double);" + "" + "@info(name = 'query1') " + "from cseEventStream#window.lengthBatch(1) " + "select stdDev(price) as deviation " + "group by symbol " + "insert into outputStream;";
SiddhiAppRuntime execPlanRunTime = siddhiManager.createSiddhiAppRuntime(execPlan);
execPlanRunTime.addCallback("query1", new QueryCallback() {
@Override
public void receive(long timestamp, Event[] inEvents, Event[] removeEvents) {
EventPrinter.print(timestamp, inEvents, removeEvents);
AssertJUnit.assertTrue(Math.abs((Double) inEvents[0].getData(0) - 0) < epsilon);
}
});
InputHandler inputHandler = execPlanRunTime.getInputHandler("cseEventStream");
execPlanRunTime.start();
inputHandler.send(new Object[] { "WSO2", 1.0 });
Thread.sleep(100);
execPlanRunTime.shutdown();
}
use of org.wso2.siddhi.query.api.expression.condition.In in project siddhi by wso2.
the class StdDevAttributeAggregatorTestCase method stdDevAggregatorTest1.
@Test
public void stdDevAggregatorTest1() throws InterruptedException {
log.info("stdDevAggregator Test #1: No events in the stream");
SiddhiManager siddhiManager = new SiddhiManager();
String execPlan = "" + "@app:name('stdDevAggregatorTests') " + "" + "define stream cseEventStream (symbol string, price double);" + "" + "@info(name = 'query1') " + "from cseEventStream " + "select stdDev(price) as deviation " + "group by symbol " + "insert into outputStream;";
SiddhiAppRuntime execPlanRunTime = siddhiManager.createSiddhiAppRuntime(execPlan);
log.info("Running: " + execPlanRunTime.getName());
execPlanRunTime.addCallback("query1", new QueryCallback() {
@Override
public void receive(long timestamp, Event[] inEvents, Event[] removeEvents) {
EventPrinter.print(timestamp, inEvents, removeEvents);
inEventCount++;
}
});
execPlanRunTime.start();
execPlanRunTime.shutdown();
AssertJUnit.assertEquals(0, inEventCount);
}
use of org.wso2.siddhi.query.api.expression.condition.In in project siddhi by wso2.
the class StdDevAttributeAggregatorTestCase method stdDevAggregatorTest3.
@Test
public void stdDevAggregatorTest3() throws InterruptedException {
log.info("stdDevAggregator Test #3: All the events in the stream are equal");
SiddhiManager siddhiManager = new SiddhiManager();
String execPlan = "" + "@app:name('stdDevAggregatorTests') " + "" + "define stream cseEventStream (symbol string, price double);" + "" + "@info(name = 'query1') " + "from cseEventStream#window.lengthBatch(3) " + "select stdDev(price) as deviation " + "group by symbol " + "insert into outputStream;";
SiddhiAppRuntime execPlanRunTime = siddhiManager.createSiddhiAppRuntime(execPlan);
execPlanRunTime.addCallback("query1", new QueryCallback() {
@Override
public void receive(long timestamp, Event[] inEvents, Event[] removeEvents) {
EventPrinter.print(timestamp, inEvents, removeEvents);
AssertJUnit.assertTrue(Math.abs((Double) inEvents[0].getData(0) - 0) < epsilon);
}
});
InputHandler inputHandler = execPlanRunTime.getInputHandler("cseEventStream");
execPlanRunTime.start();
inputHandler.send(new Object[] { "WSO2", 1.0 });
inputHandler.send(new Object[] { "WSO2", 1.0 });
inputHandler.send(new Object[] { "WSO2", 1.0 });
Thread.sleep(300);
execPlanRunTime.shutdown();
}
use of org.wso2.siddhi.query.api.expression.condition.In in project siddhi by wso2.
the class DeleteFromTableTestCase method deleteFromTableTest4.
@Test
public void deleteFromTableTest4() throws InterruptedException {
log.info("deleteFromTableTest4");
SiddhiManager siddhiManager = new SiddhiManager();
String streams = "" + "define stream StockStream (symbol string, price float, volume long); " + "define stream CheckStockStream (symbol string); " + "define stream DeleteStockStream (symbol string, price float, volume long); " + "define table StockTable (symbol string, price float, volume long); ";
String query = "" + "@info(name = 'query1') " + "from StockStream " + "insert into StockTable ;" + "" + "@info(name = 'query2') " + "from DeleteStockStream " + "delete StockTable " + " on StockTable.symbol=='IBM';" + "" + "@info(name = 'query3') " + "from CheckStockStream[symbol==StockTable.symbol in StockTable] " + "insert into OutStream;";
SiddhiAppRuntime siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(streams + query);
siddhiAppRuntime.addCallback("query3", new QueryCallback() {
@Override
public void receive(long timestamp, Event[] inEvents, Event[] removeEvents) {
EventPrinter.print(timestamp, inEvents, removeEvents);
if (inEvents != null) {
for (Event event : inEvents) {
inEventCount++;
switch(inEventCount) {
case 1:
AssertJUnit.assertArrayEquals(new Object[] { "IBM" }, event.getData());
break;
case 2:
AssertJUnit.assertArrayEquals(new Object[] { "WSO2" }, event.getData());
break;
case 3:
AssertJUnit.assertArrayEquals(new Object[] { "WSO2" }, event.getData());
break;
default:
AssertJUnit.assertSame(3, inEventCount);
}
}
eventArrived = true;
}
if (removeEvents != null) {
removeEventCount = removeEventCount + removeEvents.length;
}
eventArrived = true;
}
});
InputHandler stockStream = siddhiAppRuntime.getInputHandler("StockStream");
InputHandler checkStockStream = siddhiAppRuntime.getInputHandler("CheckStockStream");
InputHandler deleteStockStream = siddhiAppRuntime.getInputHandler("DeleteStockStream");
siddhiAppRuntime.start();
stockStream.send(new Object[] { "WSO2", 55.6f, 100L });
stockStream.send(new Object[] { "IBM", 55.6f, 100L });
checkStockStream.send(new Object[] { "IBM" });
checkStockStream.send(new Object[] { "WSO2" });
deleteStockStream.send(new Object[] { "IBM", 57.6f, 100L });
checkStockStream.send(new Object[] { "IBM" });
checkStockStream.send(new Object[] { "WSO2" });
Thread.sleep(500);
AssertJUnit.assertEquals("Number of success events", 3, inEventCount);
AssertJUnit.assertEquals("Number of remove events", 0, removeEventCount);
AssertJUnit.assertEquals("Event arrived", true, eventArrived);
siddhiAppRuntime.shutdown();
}
Aggregations