示例#1
0
    def test_siddhi_app_runtime_callback(self):
        logging.info("Test2: Test Siddhi App Runtime Callback")
        # Adding callback to retrieve output events from query

        global hitCount
        hitCount = 2

        class ConcreteQueryCallback(QueryCallback):
            def receive(self, timestamp, inEvents, outEvents):
                PrintEvent(timestamp, inEvents, outEvents)
                global hitCount
                hitCount -= 1

        self.siddhiAppRuntime.addCallback("query1", ConcreteQueryCallback())

        # Retrieving input handler to push events into Siddhi
        inputHandler = self.siddhiAppRuntime.getInputHandler("cseEventStream")
        # Starting event processing
        self.siddhiAppRuntime.start()

        # Sending events to Siddhi
        inputHandler.send(["IBM", 700.0, LongType(100)])
        inputHandler.send(["WSO2", 60.5, LongType(200)])
        inputHandler.send(["GOOG", 50, LongType(30)])
        inputHandler.send(["IBM", 76.6, LongType(400)])

        sleep(0.5)
        self.assertEqual(hitCount, 0)
示例#2
0
    def testStringContainsFunction(self):
        logging.info("ContainsFunctionExtensionTestCase TestCase")

        # Creating SiddhiManager
        siddhiManager = SiddhiManager()

        # Creating Query
        streamDefinition = "define stream inputStream (symbol string, price long, volume long);"
        query = "@info(name = 'query1') " + \
                "from inputStream " + \
                "select symbol , str:contains(symbol, 'WSO2') as isContains " + \
                "insert into outputStream;"

        # Setting up Siddhi App
        siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(
            streamDefinition + query)

        # Setting up callback
        _self_shaddow = self

        class ConcreteQueryCallback(QueryCallback):
            def receive(self, timestamp, inEvents, outEvents):
                PrintEvent(timestamp, inEvents, outEvents)
                for inEvent in inEvents:
                    _self_shaddow.count.addAndGet(1)
                    if _self_shaddow.count.get() == 1:
                        _self_shaddow.assertEqual(False, inEvent.getData(1))

                    if _self_shaddow.count.get() == 2:
                        _self_shaddow.assertEqual(True, inEvent.getData(1))

                    if _self_shaddow.count.get() == 3:
                        _self_shaddow.assertEqual(True, inEvent.getData(1))

                _self_shaddow.eventArrived = True

        siddhiAppRuntime.addCallback("query1", ConcreteQueryCallback())

        # Retrieving input handler to push events into Siddhi
        inputHandler = siddhiAppRuntime.getInputHandler("inputStream")
        # Starting event processing
        siddhiAppRuntime.start()

        # Sending events to Siddhi
        inputHandler.send(["IBM", 700.0, LongType(100)])
        inputHandler.send(["WSO2", 60.5, LongType(200)])
        inputHandler.send(
            ["One of the best middleware is from WSO2.", 60.5,
             LongType(200)])
        sleep(0.5)

        self.assertEqual(self.count.get(), 3)
        self.assertTrue(self.eventArrived)

        siddhiManager.shutdown()
示例#3
0
    def testMathRandomFunctionWithSeed(self):
        logging.info("RandomFunctionExtension TestCase, with seed")

        # Creating SiddhiManager
        siddhiManager = SiddhiManager()

        # Creating Query
        streamDefinition = "define stream inputStream (symbol string, price long, volume long);"
        query = "@info(name = 'query1') from inputStream select symbol , math:rand(12) as randNumber " + \
                "insert into outputStream;"

        # Setting up Siddhi App
        siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(
            streamDefinition + query)

        # Setting up callback
        _self_shaddow = self

        class ConcreteQueryCallback(QueryCallback):
            def receive(self, timestamp, inEvents, outEvents):
                PrintEvent(timestamp, inEvents, outEvents)
                _self_shaddow.count.addAndGet(len(inEvents))
                _self_shaddow.eventArrived = True
                if len(inEvents) == 3:
                    randNumbers = [0, 0, 0]
                    randNumbers[0] = inEvents[0].getData(1)
                    randNumbers[1] = inEvents[1].getData(1)
                    randNumbers[2] = inEvents[2].getData(1)
                    isDuplicatePresent = False

                    logging.info(randNumbers[0] + ", " + randNumbers[1])

                    if randNumbers[0] == randNumbers[1] or randNumbers[0] == randNumbers[2] or randNumbers[1] == \
                            randNumbers[2]:
                        isDuplicatePresent = True

                    _self_shaddow.assertEquals(False, isDuplicatePresent)

        siddhiAppRuntime.addCallback("query1", ConcreteQueryCallback())

        # Retrieving input handler to push events into Siddhi
        inputHandler = siddhiAppRuntime.getInputHandler("inputStream")
        # Starting event processing
        siddhiAppRuntime.start()

        # Sending events to Siddhi
        inputHandler.send(["IBM", 700.0, LongType(100)])
        inputHandler.send(["WSO2", 60.5, LongType(200)])
        inputHandler.send(["XYZ", 60.5, LongType(200)])
        sleep(0.5)

        self.assertEqual(self.count.get(), 3)
        self.assertTrue(self.eventArrived)

        siddhiManager.shutdown()
示例#4
0
    def test_Equals(self):
        logging.info("Test CopyFrom and ToString methods")

        event = Event(1, [2, LongType(3)])
        event2 = Event(1, [2, LongType(3)])

        self.assertEqual(event, event2, "Copy is not equal")

        event2 = Event(1, [2, 3])
        self.assertNotEqual(event, event2,
                            "Should not be equal due to Type diference")
示例#5
0
    def test_input_handler(self):
        logging.info("Test1: Test Input Handler")
        # Retrieving input handler to push events into Siddhi
        inputHandler = self.siddhiAppRuntime.getInputHandler("cseEventStream")
        # Starting event processing
        self.siddhiAppRuntime.start()

        # Sending events to Siddhi
        inputHandler.send(["IBM", 700.0, LongType(100)])
        inputHandler.send(["WSO2", 60.5, LongType(200)])
        inputHandler.send(["GOOG", 50, LongType(30)])
        inputHandler.send(["IBM", 76.6, LongType(400)])
示例#6
0
    def test_data(self):
        logging.info("Test GetData and SetData Methods")

        event = Event(1, [2, LongType(3)])
        self.assertListEqual(event.getData(), [2, LongType(3)],
                             "GetData not equal to data given in constructor")
        self.assertTrue(
            type(event.getData(1)) == LongType,
            "Type of Parameter is not LongType")

        event.setData([1, 2])
        self.assertListEqual(event.getData(), [1, 2],
                             "GetData not equal to data set by SetData")
示例#7
0
    def test_copyFromAndToString(self):
        logging.info("Test CopyFrom and ToString methods")

        event = Event(1, [2, LongType(3)])
        event2 = Event(2)
        event2.copyFrom(event)

        self.assertEqual(str(event), str(event2),
                         "ToString forms of copy is not equal")
示例#8
0
def unwrapDataItem(d):
    '''
    Unwraps a data item (String, float, int, long) sent from Java Proxy Classes
    :param d: 
    :return: 
    '''
    if d.isNull():
        return None
    elif d.isLong():
        return LongType(d.getData())
    elif d.isDouble():
        return DoubleType(d.getData())
    return d.getData()