/* * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.wso2.siddhi.extension.output.transport.tcp; import org.apache.log4j.Logger; import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.wso2.siddhi.core.ExecutionPlanRuntime; import org.wso2.siddhi.core.SiddhiManager; import org.wso2.siddhi.core.event.Event; import org.wso2.siddhi.core.exception.ExecutionPlanCreationException; import org.wso2.siddhi.core.stream.input.InputHandler; import org.wso2.siddhi.query.api.definition.Attribute; import org.wso2.siddhi.query.api.definition.StreamDefinition; import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; import org.wso2.siddhi.tcp.transport.TCPNettyServer; import org.wso2.siddhi.tcp.transport.callback.StreamListener; import org.wso2.siddhi.tcp.transport.config.ServerConfig; import java.util.ArrayList; public class TCPSinkTestCase { static final Logger log = Logger.getLogger(TCPSinkTestCase.class); private volatile int count; private volatile int count1; private volatile boolean eventArrived; @Before public void init() { count = 0; count1 = 0; eventArrived = false; } @Test public void testTcpSink1() throws InterruptedException { log.info("tcpSource TestCase 1"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo', @map(type='passThrough')) " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition = StreamDefinition.id("foo").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer = new TCPNettyServer(); tcpNettyServer.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count++; switch (count) { case 1: Assert.assertEquals("test", event.getData(0)); break; case 2: Assert.assertEquals("test1", event.getData(0)); break; case 3: Assert.assertEquals("test2", event.getData(0)); break; default: org.junit.Assert.fail(); } } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); tcpNettyServer.bootServer(new ServerConfig()); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(300); executionPlanRuntime.shutdown(); tcpNettyServer.shutdownGracefully(); Assert.assertEquals(3, count); Assert.assertTrue(eventArrived); } @Test(expected = ExecutionPlanValidationException.class) public void testTcpSink2() throws InterruptedException { log.info("tcpSource TestCase 2"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', @map(type='passThrough')) " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); Thread.sleep(300); executionPlanRuntime.shutdown(); } @Test public void testTcpSink3() throws InterruptedException { log.info("tcpSource TestCase 3"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo', host='127.0.0.1', port='9766', @map(type='passThrough')) " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition = StreamDefinition.id("foo").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer = new TCPNettyServer(); tcpNettyServer.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count++; switch (count) { case 1: Assert.assertEquals("test", event.getData(0)); break; case 2: Assert.assertEquals("test1", event.getData(0)); break; case 3: Assert.assertEquals("test2", event.getData(0)); break; default: org.junit.Assert.fail(); } } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); ServerConfig serverConfig = new ServerConfig(); serverConfig.setPort(9766); serverConfig.setHost("127.0.0.1"); tcpNettyServer.bootServer(serverConfig); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(300); Assert.assertEquals(3, count); Assert.assertTrue(eventArrived); executionPlanRuntime.shutdown(); tcpNettyServer.shutdownGracefully(); } @Test public void testTcpSink4() throws InterruptedException { log.info("tcpSource TestCase 4"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo', port='9766', @map(type='passThrough')) " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition = StreamDefinition.id("foo").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer = new TCPNettyServer(); tcpNettyServer.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count++; switch (count) { case 1: Assert.assertEquals("test", event.getData(0)); break; case 2: Assert.assertEquals("test1", event.getData(0)); break; case 3: Assert.assertEquals("test2", event.getData(0)); break; default: org.junit.Assert.fail(); } } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); ServerConfig serverConfig = new ServerConfig(); serverConfig.setPort(9766); serverConfig.setHost("127.0.0.1"); tcpNettyServer.bootServer(serverConfig); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(300); Assert.assertEquals(3, count); Assert.assertTrue(eventArrived); executionPlanRuntime.shutdown(); tcpNettyServer.shutdownGracefully(); } @Test public void testTcpSink5() throws InterruptedException { log.info("tcpSource TestCase 5"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo', port='9766', @map(type='passThrough')) " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition = StreamDefinition.id("foo").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer = new TCPNettyServer(); tcpNettyServer.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count++; switch (count) { case 1: Assert.assertEquals("test", event.getData(0)); break; case 2: Assert.assertEquals("test1", event.getData(0)); break; case 3: Assert.assertEquals("test2", event.getData(0)); break; default: org.junit.Assert.fail(); } } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); ServerConfig serverConfig = new ServerConfig(); serverConfig.setPort(9766); serverConfig.setHost("127.0.0.1"); tcpNettyServer.bootServer(serverConfig); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(300); Assert.assertEquals(3, count); Assert.assertTrue(eventArrived); executionPlanRuntime.shutdown(); tcpNettyServer.shutdownGracefully(); } @Test(expected = ExecutionPlanCreationException.class) public void testTcpSink6() throws InterruptedException { log.info("tcpSource TestCase 6"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo', host='127.0.0.1', port='9766', @map(type='text')) " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = null; try { executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); } finally { if (executionPlanRuntime != null) { executionPlanRuntime.shutdown(); } } } @Test public void testTcpSink7() throws InterruptedException { log.info("tcpSource TestCase 7"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo') " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition = StreamDefinition.id("foo").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer = new TCPNettyServer(); tcpNettyServer.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count++; switch (count) { case 1: Assert.assertEquals("test", event.getData(0)); break; case 2: Assert.assertEquals("test1", event.getData(0)); break; case 3: Assert.assertEquals("test2", event.getData(0)); break; default: org.junit.Assert.fail(); } } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); tcpNettyServer.bootServer(new ServerConfig()); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(300); Assert.assertEquals(3, count); Assert.assertTrue(eventArrived); executionPlanRuntime.shutdown(); tcpNettyServer.shutdownGracefully(); } @Test public void testTcpSink8() throws InterruptedException { log.info("tcpSource TestCase 8"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='{{a}}') " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition = StreamDefinition.id("foo").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer = new TCPNettyServer(); tcpNettyServer.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count++; switch (count) { case 1: Assert.assertEquals("foo", event.getData(0)); break; case 2: Assert.assertEquals("foo", event.getData(0)); break; default: org.junit.Assert.fail(); } } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); tcpNettyServer.bootServer(new ServerConfig()); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"bar", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"bar", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"foo", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"foo", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[4])); Thread.sleep(300); Assert.assertEquals(2, count); Assert.assertTrue(eventArrived); executionPlanRuntime.shutdown(); tcpNettyServer.shutdownGracefully(); } @Test public void testTcpSink9() throws InterruptedException { log.info("tcpSource TestCase 9"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='bar', @map(type='passThrough')) " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition = StreamDefinition.id("foo").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer = new TCPNettyServer(); tcpNettyServer.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); tcpNettyServer.bootServer(new ServerConfig()); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(300); Assert.assertFalse(eventArrived); executionPlanRuntime.shutdown(); tcpNettyServer.shutdownGracefully(); } @Ignore @Test //todo validate log public void testTcpSink10() throws InterruptedException { log.info("tcpSource TestCase 10"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='bar', @map(type='passThrough')) " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(300); Assert.assertFalse(eventArrived); executionPlanRuntime.shutdown(); } @Test(expected = ExecutionPlanCreationException.class) public void testTcpSink11() throws InterruptedException { log.info("tcpSource TestCase 11"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo', host='127.0.0.1', port='{{d}}') " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = null; try { executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); } finally { if (executionPlanRuntime != null) { executionPlanRuntime.shutdown(); } } } @Test(expected = ExecutionPlanCreationException.class) public void testTcpSink12() throws InterruptedException { log.info("tcpSource TestCase 12"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo', host='{{a}}') " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = null; try { executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); } finally { if (executionPlanRuntime != null) { executionPlanRuntime.shutdown(); } } } @Test public void testTcpSink13() throws InterruptedException { log.info("tcpSource TestCase 13"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo') " + "define stream outputStream1 (a string, b int, c float, d long, e double, f bool);" + "@sink(type='tcp', context='foo') " + "define stream outputStream2 (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "" + "from inputStream " + "select * " + "insert into outputStream1; " + "" + "from inputStream " + "select * " + "insert into outputStream2; " + ""); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition = StreamDefinition.id("foo").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer = new TCPNettyServer(); tcpNettyServer.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count++; /* commenting this out since we cannot guarantee an event order here switch (count) { case 1: Assert.assertEquals("test", event.getData(0)); break; case 2: Assert.assertEquals("test1", event.getData(0)); break; case 3: Assert.assertEquals("test2", event.getData(0)); break; case 4: Assert.assertEquals("test", event.getData(0)); break; case 5: Assert.assertEquals("test1", event.getData(0)); break; case 6: Assert.assertEquals("test2", event.getData(0)); break; default: org.junit.Assert.fail(); }*/ } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); tcpNettyServer.bootServer(new ServerConfig()); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(3000); Assert.assertEquals(6, count); Assert.assertTrue(eventArrived); executionPlanRuntime.shutdown(); tcpNettyServer.shutdownGracefully(); } @Test public void testTcpSink14() throws InterruptedException { log.info("tcpSource TestCase 14"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo1', port='9854') " + "@sink(type='tcp', context='foo2') " + "define stream outputStream(a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "" + "from inputStream " + "select * " + "insert into outputStream; " + ""); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition1 = StreamDefinition.id("foo1").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); StreamDefinition streamDefinition2 = StreamDefinition.id("foo2").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer1 = new TCPNettyServer(); TCPNettyServer tcpNettyServer2 = new TCPNettyServer(); tcpNettyServer1.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition1; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count++; switch (count) { case 1: Assert.assertEquals("test", event.getData(0)); break; case 2: Assert.assertEquals("test1", event.getData(0)); break; case 3: Assert.assertEquals("test2", event.getData(0)); break; default: org.junit.Assert.fail(); } } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); tcpNettyServer2.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition2; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count1++; switch (count1) { case 1: Assert.assertEquals("test", event.getData(0)); break; case 2: Assert.assertEquals("test1", event.getData(0)); break; case 3: Assert.assertEquals("test2", event.getData(0)); break; default: org.junit.Assert.fail(); } } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); ServerConfig serverConfig = new ServerConfig(); serverConfig.setPort(9854); tcpNettyServer1.bootServer(serverConfig); tcpNettyServer2.bootServer(new ServerConfig()); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(3000); Assert.assertEquals(3, count); Assert.assertEquals(3, count1); Assert.assertTrue(eventArrived); executionPlanRuntime.shutdown(); tcpNettyServer1.shutdownGracefully(); tcpNettyServer2.shutdownGracefully(); } @Test public void testTcpSink15() throws InterruptedException { log.info("tcpSource TestCase 15"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "@plan:name('foo') " + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo/inputStream1') " + "define stream outputStream(a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "" + "from inputStream " + "select * " + "insert into outputStream;" + " " + ""); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition1 = StreamDefinition.id("foo/inputStream1").attribute("a", Attribute.Type .STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer1 = new TCPNettyServer(); tcpNettyServer1.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition1; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count++; switch (count) { case 1: Assert.assertEquals("test", event.getData(0)); break; case 2: Assert.assertEquals("test1", event.getData(0)); break; case 3: Assert.assertEquals("test2", event.getData(0)); break; default: org.junit.Assert.fail(); } } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); tcpNettyServer1.bootServer(new ServerConfig()); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(3000); Assert.assertEquals(3, count); Assert.assertTrue(eventArrived); executionPlanRuntime.shutdown(); tcpNettyServer1.shutdownGracefully(); } @Test public void testTcpSink16() throws InterruptedException { log.info("tcpSource TestCase 16"); SiddhiManager siddhiManager = new SiddhiManager(); String inStreamDefinition = "" + "define stream inputStream (a string, b int, c float, d long, e double, f bool); " + "@sink(type='tcp', context='foo', @map(type='passThrough')) " + "define stream outputStream (a string, b int, c float, d long, e double, f bool);"; String query = ("@info(name = 'query1') " + "from inputStream " + "select * " + "insert into outputStream;"); ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); StreamDefinition streamDefinition = StreamDefinition.id("foo").attribute("a", Attribute.Type.STRING) .attribute("b", Attribute.Type.INT).attribute("c", Attribute.Type.FLOAT).attribute("d", Attribute .Type.LONG) .attribute("e", Attribute.Type.DOUBLE).attribute("f", Attribute.Type.BOOL); TCPNettyServer tcpNettyServer = new TCPNettyServer(); tcpNettyServer.addStreamListener(new StreamListener() { @Override public StreamDefinition getStreamDefinition() { return streamDefinition; } @Override public void onEvent(Event event) { System.out.println(event); eventArrived = true; count++; switch (count) { case 1: Assert.assertEquals("test", event.getData(0)); break; case 2: Assert.assertEquals("test1", event.getData(0)); break; case 3: Assert.assertEquals("test2", event.getData(0)); break; default: org.junit.Assert.fail(); } } @Override public void onEvents(Event[] events) { for (Event event : events) { onEvent(event); } } }); executionPlanRuntime.start(); Thread.sleep(2000); tcpNettyServer.bootServer(new ServerConfig()); InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); ArrayList<Event> arrayList = new ArrayList<Event>(); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test", 36, 3.0f, 380l, 23.0, true})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test1", 361, 31.0f, 3801l, 231.0, false})); arrayList.add(new Event(System.currentTimeMillis(), new Object[]{"test2", 362, 32.0f, 3802l, 232.0, true})); inputHandler.send(arrayList.toArray(new Event[3])); Thread.sleep(300); Assert.assertEquals(3, count); Assert.assertTrue(eventArrived); executionPlanRuntime.shutdown(); tcpNettyServer.shutdownGracefully(); } }