use of org.wso2.siddhi.core.stream.output.sink.Sink in project siddhi by wso2.
the class EventTestCase method testQueryParser.
@Test
public void testQueryParser() {
StreamDefinition streamDefinition = StreamDefinition.id("cseEventStream").attribute("symbol", Attribute.Type.STRING).attribute("price", Attribute.Type.FLOAT).attribute("volume", Attribute.Type.INT);
StreamDefinition outStreamDefinition = StreamDefinition.id("outputStream").attribute("symbol", Attribute.Type.STRING).attribute("price", Attribute.Type.FLOAT);
Query query = new Query();
query.annotation(Annotation.annotation("info").element("name", "query1"));
query.from(InputStream.stream("cseEventStream").filter(Expression.compare(Expression.variable("volume"), Compare.Operator.NOT_EQUAL, Expression.value(50))));
query.select(Selector.selector().select("symbol", Expression.variable("symbol")).select("price", Expression.variable("price")));
query.insertInto("outputStream");
Map<String, AbstractDefinition> tableDefinitionMap = new HashMap<>();
Map<String, AbstractDefinition> windowDefinitionMap = new HashMap<>();
Map<String, AbstractDefinition> aggregationDefinitionMap = new HashMap<>();
Map<String, Table> tableMap = new HashMap<String, Table>();
Map<String, Window> eventWindowMap = new HashMap<String, Window>();
Map<String, AggregationRuntime> aggregationMap = new HashMap<String, AggregationRuntime>();
Map<String, List<Source>> eventSourceMap = new HashMap<String, List<Source>>();
Map<String, List<Sink>> eventSinkMap = new HashMap<String, List<Sink>>();
Map<String, AbstractDefinition> streamDefinitionMap = new HashMap<String, AbstractDefinition>();
LockSynchronizer lockSynchronizer = new LockSynchronizer();
streamDefinitionMap.put("cseEventStream", streamDefinition);
streamDefinitionMap.put("outputStream", outStreamDefinition);
SiddhiContext siddhicontext = new SiddhiContext();
SiddhiAppContext context = new SiddhiAppContext();
context.setSiddhiContext(siddhicontext);
context.setElementIdGenerator(new ElementIdGenerator(context.getName()));
context.setSnapshotService(new SnapshotService(context));
QueryRuntime runtime = QueryParser.parse(query, context, streamDefinitionMap, tableDefinitionMap, windowDefinitionMap, aggregationDefinitionMap, tableMap, aggregationMap, eventWindowMap, lockSynchronizer, "1");
AssertJUnit.assertNotNull(runtime);
AssertJUnit.assertTrue(runtime.getStreamRuntime() instanceof SingleStreamRuntime);
AssertJUnit.assertNotNull(runtime.getSelector());
AssertJUnit.assertTrue(runtime.getMetaComplexEvent() instanceof MetaStreamEvent);
}
use of org.wso2.siddhi.core.stream.output.sink.Sink in project siddhi by wso2.
the class LogSinkTest method testWithAllOptions.
@Test
public void testWithAllOptions() throws Exception {
SiddhiManager siddhiManager = new SiddhiManager();
String inputStream = "@App:name(\"HelloWorldApp\")\n" + "define stream CargoStream (weight int);";
String outputStream = "@sink(type='log', prefix='My Log', priority='info')\n" + "define stream OutputStream(weight int, totalWeight long);";
String query = ("@info(name='HelloWorldQuery') " + "from CargoStream " + "select weight, sum(weight) as totalWeight " + "insert into OutputStream;");
SiddhiAppRuntime siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(inputStream + outputStream + query);
siddhiAppRuntime.start();
InputHandler inputHandler = siddhiAppRuntime.getInputHandler("CargoStream");
Logger logger = Logger.getLogger(LogSink.class);
UnitTestAppender appender = new UnitTestAppender();
logger.addAppender(appender);
try {
inputHandler.send(new Object[] { 2 });
AssertJUnit.assertTrue(appender.getMessages().contains("My Log"));
AssertJUnit.assertTrue(appender.getMessages().contains("data=[2, 2]"));
inputHandler.send(new Object[] { 3 });
AssertJUnit.assertTrue(appender.getMessages().contains("My Log"));
AssertJUnit.assertTrue(appender.getMessages().contains("data=[3, 5]"));
} catch (Exception e) {
Assert.fail("Unexpected exception occurred when testing with all options", e);
} finally {
siddhiAppRuntime.shutdown();
}
}
use of org.wso2.siddhi.core.stream.output.sink.Sink in project siddhi by wso2.
the class LogSinkTest method testWithDefaultPrefix.
@Test
public void testWithDefaultPrefix() throws Exception {
SiddhiManager siddhiManager = new SiddhiManager();
String inputStream = "@App:name(\"HelloWorldApp\")\n" + "define stream CargoStream (weight int);";
String outputStream = "@sink(type='log', priority='info')\n" + "define stream OutputStream(weight int, totalWeight long);";
String query = ("@info(name='HelloWorldQuery') " + "from CargoStream " + "select weight, sum(weight) as totalWeight " + "insert into OutputStream;");
SiddhiAppRuntime siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(inputStream + outputStream + query);
siddhiAppRuntime.start();
InputHandler inputHandler = siddhiAppRuntime.getInputHandler("CargoStream");
Logger logger = Logger.getLogger(LogSink.class);
UnitTestAppender appender = new UnitTestAppender();
logger.addAppender(appender);
try {
inputHandler.send(new Object[] { 2 });
AssertJUnit.assertTrue(appender.getMessages().contains("HelloWorldApp : OutputStream"));
AssertJUnit.assertTrue(appender.getMessages().contains("data=[2, 2]"));
inputHandler.send(new Object[] { 3 });
AssertJUnit.assertTrue(appender.getMessages().contains("HelloWorldApp : OutputStream"));
AssertJUnit.assertTrue(appender.getMessages().contains("data=[3, 5]"));
} catch (Exception e) {
Assert.fail("Unexpected exception occurred when testing with default prefix", e);
} finally {
siddhiAppRuntime.shutdown();
}
}
use of org.wso2.siddhi.core.stream.output.sink.Sink in project siddhi by wso2.
the class LogSinkTest method testWithDefaultPriority.
@Test
public void testWithDefaultPriority() throws Exception {
SiddhiManager siddhiManager = new SiddhiManager();
String inputStream = "@App:name(\"HelloWorldApp\")\n" + "define stream CargoStream (weight int);";
String outputStream = "@sink(type='log', prefix='My Log')\n" + "define stream OutputStream(weight int, totalWeight long);";
String query = ("@info(name='HelloWorldQuery') " + "from CargoStream " + "select weight, sum(weight) as totalWeight " + "insert into OutputStream;");
SiddhiAppRuntime siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(inputStream + outputStream + query);
siddhiAppRuntime.start();
InputHandler inputHandler = siddhiAppRuntime.getInputHandler("CargoStream");
Logger logger = Logger.getLogger(LogSink.class);
UnitTestAppender appender = new UnitTestAppender();
logger.addAppender(appender);
try {
inputHandler.send(new Object[] { 2 });
AssertJUnit.assertTrue(appender.getMessages().contains("My Log"));
AssertJUnit.assertTrue(appender.getMessages().contains("data=[2, 2]"));
inputHandler.send(new Object[] { 3 });
AssertJUnit.assertTrue(appender.getMessages().contains("My Log"));
AssertJUnit.assertTrue(appender.getMessages().contains("data=[3, 5]"));
} catch (Exception e) {
Assert.fail("Unexpected exception occurred when testing with default priority", e);
} finally {
siddhiAppRuntime.shutdown();
}
}
use of org.wso2.siddhi.core.stream.output.sink.Sink in project siddhi by wso2.
the class InMemoryTransportTestCase method inMemoryTestCase4.
@Test(expectedExceptions = SiddhiAppCreationException.class)
public void inMemoryTestCase4() throws InterruptedException {
log.info("Test inMemory 4");
String streams = "" + "@app:name('TestSiddhiApp')" + "@source(type='inMemory', topic='Foo', @map(type='passThrough', @attributes('symbol','price'))) " + "define stream FooStream (symbol string, price float, volume long); " + "@sink(type='inMemory', topic='{{symbol}}', @map(type='passThrough')) " + "define stream BarStream (symbol string, price float, volume long); ";
String query = "" + "from FooStream " + "select * " + "insert into BarStream; ";
SiddhiManager siddhiManager = new SiddhiManager();
SiddhiAppRuntime siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(streams + query);
}
Aggregations