Example #1
0
        private void RunAssertionSchemaCopyProperties(EventRepresentationEnum eventRepresentationEnum)
        {
            _epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " create schema BaseOne (prop1 String, prop2 int)");
            _epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " create schema BaseTwo (prop3 long)");

            // test define and send
            _epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " create schema E1 () copyfrom BaseOne");
            EPStatement stmtOne = _epService.EPAdministrator.CreateEPL("select * from E1");

            stmtOne.Events += _listener.Update;
            Assert.AreEqual(eventRepresentationEnum.GetOutputClass(), stmtOne.EventType.UnderlyingType);
            Assert.AreEqual(typeof(string), stmtOne.EventType.GetPropertyType("prop1"));
            Assert.AreEqual(typeof(int), stmtOne.EventType.GetPropertyType("prop2"));

            IDictionary <String, Object> eventE1 = new LinkedHashMap <String, Object>();

            eventE1.Put("prop1", "v1");
            eventE1.Put("prop2", 2);
            if (eventRepresentationEnum.IsObjectArrayEvent())
            {
                _epService.EPRuntime.SendEvent(eventE1.Values.ToArray(), "E1");
            }
            else
            {
                _epService.EPRuntime.SendEvent(eventE1, "E1");
            }
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), "prop1,prop2".Split(','), new Object[] { "v1", 2 });

            // test two copy-from types
            _epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " create schema E2 () copyfrom BaseOne, BaseTwo");
            EPStatement stmtTwo = _epService.EPAdministrator.CreateEPL("select * from E2");

            Assert.AreEqual(typeof(string), stmtTwo.EventType.GetPropertyType("prop1"));
            Assert.AreEqual(typeof(int), stmtTwo.EventType.GetPropertyType("prop2"));
            Assert.AreEqual(typeof(long), stmtTwo.EventType.GetPropertyType("prop3"));

            // test API-defined type
            IDictionary <String, Object> def = new Dictionary <String, Object>();

            def.Put("a", "string");
            def.Put("b", typeof(String));
            def.Put("c", "BaseOne");
            def.Put("d", "BaseTwo[]");
            _epService.EPAdministrator.Configuration.AddEventType("MyType", def);

            _epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " create schema E3(e long, f BaseOne) copyfrom MyType");
            EPStatement stmtThree = _epService.EPAdministrator.CreateEPL("select * from E3");

            Assert.AreEqual(typeof(String), stmtThree.EventType.GetPropertyType("a"));
            Assert.AreEqual(typeof(String), stmtThree.EventType.GetPropertyType("b"));
            if (eventRepresentationEnum.IsObjectArrayEvent())
            {
                Assert.AreEqual(typeof(Object[]), stmtThree.EventType.GetPropertyType("c"));
                Assert.AreEqual(typeof(Object[][]), stmtThree.EventType.GetPropertyType("d"));
                Assert.AreEqual(typeof(Object[]), stmtThree.EventType.GetPropertyType("f"));
            }
            else
            {
                Assert.AreEqual(typeof(DataMap), stmtThree.EventType.GetPropertyType("c"));
                Assert.AreEqual(typeof(DataMap[]), stmtThree.EventType.GetPropertyType("d"));
                Assert.AreEqual(typeof(DataMap), stmtThree.EventType.GetPropertyType("f"));
            }
            Assert.AreEqual(typeof(long), stmtThree.EventType.GetPropertyType("e"));

            // invalid tests
            TryInvalid(eventRepresentationEnum.GetAnnotationText() + " create schema E4(a long) copyFrom MyType",
                       "Error starting statement: Type by name 'MyType' contributes property 'a' defined as 'System.String' which overides the same property of type '" + typeof(long).FullName + "' [");
            TryInvalid(eventRepresentationEnum.GetAnnotationText() + " create schema E4(c BaseTwo) copyFrom MyType",
                       "Error starting statement: Property by name 'c' is defined twice by adding type 'MyType' [");
            TryInvalid(eventRepresentationEnum.GetAnnotationText() + " create schema E4(c BaseTwo) copyFrom XYZ",
                       "Error starting statement: Type by name 'XYZ' could not be located [");
            TryInvalid(eventRepresentationEnum.GetAnnotationText() + " create schema E4 as " + typeof(SupportBean).FullName + " copyFrom XYZ",
                       "Error starting statement: Copy-from types are not allowed with class-provided types [");
            TryInvalid(eventRepresentationEnum.GetAnnotationText() + " create variant schema E4(c BaseTwo) copyFrom XYZ",
                       "Error starting statement: Copy-from types are not allowed with variant types [");

            // test SODA
            String createEPL             = eventRepresentationEnum.GetAnnotationText() + " create schema EX as () copyFrom BaseOne, BaseTwo";
            EPStatementObjectModel model = _epService.EPAdministrator.CompileEPL(createEPL);

            Assert.AreEqual(createEPL.Trim(), model.ToEPL());
            EPStatement stmt = _epService.EPAdministrator.Create(model);

            Assert.AreEqual(createEPL.Trim(), stmt.Text);

            _epService.Initialize();
        }
Example #2
0
        public void TestPatternUnidirectionalOuterJoinNoOn()
        {
            // test 2-stream left outer join and SODA
            //
            _epService.EPAdministrator.Configuration.AddEventType("SupportBean", typeof(SupportBean));
            _epService.EPAdministrator.Configuration.AddEventType("SupportBean_S0", typeof(SupportBean_S0));
            _epService.EPAdministrator.Configuration.AddEventType("SupportBean_S1", typeof(SupportBean_S1));
            _epService.EPRuntime.SendEvent(new CurrentTimeEvent(1000));

            String stmtTextLO = "select sum(IntPrimitive) as c0, count(*) as c1 " +
                                "from pattern [every timer:interval(1 seconds)] unidirectional " +
                                "left outer join " +
                                "SupportBean.win:keepall()";
            EPStatement stmtLO = _epService.EPAdministrator.CreateEPL(stmtTextLO);

            stmtLO.Events += _listener.Update;

            RunAssertionPatternUniOuterJoinNoOn(0);

            stmtLO.Dispose();
            EPStatementObjectModel model = _epService.EPAdministrator.CompileEPL(stmtTextLO);

            Assert.AreEqual(stmtTextLO, model.ToEPL());
            stmtLO = _epService.EPAdministrator.Create(model);
            Assert.AreEqual(stmtTextLO, stmtLO.Text);
            stmtLO.Events += _listener.Update;

            RunAssertionPatternUniOuterJoinNoOn(100000);

            stmtLO.Dispose();

            // test 2-stream inner join
            //
            String[] fieldsIJ   = "c0,c1".Split(',');
            String   stmtTextIJ = "select sum(IntPrimitive) as c0, count(*) as c1 " +
                                  "from SupportBean_S0 unidirectional " +
                                  "inner join " +
                                  "SupportBean.win:keepall()";
            EPStatement stmtIJ = _epService.EPAdministrator.CreateEPL(stmtTextIJ);

            stmtIJ.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "S0_1"));
            _epService.EPRuntime.SendEvent(new SupportBean("E1", 100));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean_S0(2, "S0_2"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsIJ, new Object[] { 100, 1L });

            _epService.EPRuntime.SendEvent(new SupportBean("E2", 200));

            _epService.EPRuntime.SendEvent(new SupportBean_S0(3, "S0_3"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsIJ, new Object[] { 300, 2L });
            stmtIJ.Dispose();

            // test 2-stream inner join with group-by
            RunAssertion2StreamInnerWGroupBy();

            // test 3-stream inner join
            //
            String[] fields3IJ   = "c0,c1".Split(',');
            String   stmtText3IJ = "select sum(IntPrimitive) as c0, count(*) as c1 " +
                                   "from " +
                                   "SupportBean_S0.win:keepall()" +
                                   "inner join " +
                                   "SupportBean_S1.win:keepall()" +
                                   "inner join " +
                                   "SupportBean.win:keepall()";

            EPStatement stmt3IJ = _epService.EPAdministrator.CreateEPL(stmtText3IJ);

            stmt3IJ.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "S0_1"));
            _epService.EPRuntime.SendEvent(new SupportBean("E1", 50));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean_S1(10, "S1_1"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields3IJ, new Object[] { 50, 1L });

            _epService.EPRuntime.SendEvent(new SupportBean("E2", 51));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields3IJ, new Object[] { 101, 2L });

            stmt3IJ.Dispose();

            // test 3-stream full outer join
            //
            String[] fields3FOJ   = "P00,P10,TheString".Split(',');
            String   stmtText3FOJ = "select P00, P10, TheString " +
                                    "from " +
                                    "SupportBean_S0.win:keepall()" +
                                    "full outer join " +
                                    "SupportBean_S1.win:keepall()" +
                                    "full outer join " +
                                    "SupportBean.win:keepall()";

            EPStatement stmt3FOJ = _epService.EPAdministrator.CreateEPL(stmtText3FOJ);

            stmt3FOJ.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "S0_1"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields3FOJ, new Object[] { "S0_1", null, null });

            _epService.EPRuntime.SendEvent(new SupportBean("E10", 0));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields3FOJ, new Object[] { null, null, "E10" });

            _epService.EPRuntime.SendEvent(new SupportBean_S0(2, "S0_2"));
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetLastNewData(), fields3FOJ, new Object[][] { new Object[] { "S0_2", null, null } });

            _epService.EPRuntime.SendEvent(new SupportBean_S1(1, "S1_0"));
            EPAssertionUtil.AssertPropsPerRowAnyOrder(_listener.GetAndResetLastNewData(), fields3FOJ, new Object[][] { new Object[] { "S0_1", "S1_0", "E10" }, new Object[] { "S0_2", "S1_0", "E10" } });

            _epService.EPRuntime.SendEvent(new SupportBean_S0(2, "S0_3"));
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetLastNewData(), fields3FOJ, new Object[][] { new Object[] { "S0_3", "S1_0", "E10" } });

            _epService.EPRuntime.SendEvent(new SupportBean("E11", 0));
            EPAssertionUtil.AssertPropsPerRowAnyOrder(_listener.GetAndResetLastNewData(), fields3FOJ, new Object[][] { new Object[] { "S0_1", "S1_0", "E11" }, new Object[] { "S0_2", "S1_0", "E11" }, new Object[] { "S0_3", "S1_0", "E11" } });
            Assert.AreEqual(6, EPAssertionUtil.EnumeratorCount(stmt3FOJ.GetEnumerator()));

            stmt3FOJ.Dispose();

            // test 3-stream full outer join with where-clause
            //
            String[] fields3FOJW   = "P00,P10,TheString".Split(',');
            String   stmtText3FOJW = "select P00, P10, TheString " +
                                     "from " +
                                     "SupportBean_S0.win:keepall() as s0 " +
                                     "full outer join " +
                                     "SupportBean_S1.win:keepall() as s1 " +
                                     "full outer join " +
                                     "SupportBean.win:keepall() as sb " +
                                     "where s0.P00 = s1.P10";

            EPStatement stmt3FOJW = _epService.EPAdministrator.CreateEPL(stmtText3FOJW);

            stmt3FOJW.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "X1"));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean_S1(1, "Y1"));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "Y1"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields3FOJW, new Object[] { "Y1", "Y1", null });
        }
        public void TestStartTurnedOff()
        {
            SendTimeEvent("2002-05-01 08:00:00.000");
            String      contextEPL  = "@Name('context') create context NineToFive as start (0, 9, *, *, *) end (0, 17, *, *, *)";
            EPStatement stmtContext = _epService.EPAdministrator.CreateEPL("@Name('context') create context NineToFive as start (0, 9, *, *, *) end (0, 17, *, *, *)");

            AssertContextEventType(stmtContext.EventType);
            SupportUpdateListener contextListener = new SupportUpdateListener();

            stmtContext.Events    += contextListener.Update;
            stmtContext.Subscriber = new MiniSubscriber();

            EPStatement stmtOne = _epService.EPAdministrator.CreateEPL("@Name('A') context NineToFive " +
                                                                       "select * from SupportBean");

            stmtOne.Events += new SupportUpdateListener().Update;

            SendTimeAndAssert("2002-05-01 08:59:30.000", false, 1);
            SendTimeAndAssert("2002-05-01 08:59:59.999", false, 1);
            SendTimeAndAssert("2002-05-01 09:00:00.000", true, 1);

            EPStatement stmtTwo = _epService.EPAdministrator.CreateEPL("@Name('B') context NineToFive select * from SupportBean");

            stmtTwo.Events += new SupportUpdateListener().Update;

            SendTimeAndAssert("2002-05-01 16:59:59.000", true, 2);
            SendTimeAndAssert("2002-05-01 17:00:00.000", false, 2);

            EPStatement stmtThree = _epService.EPAdministrator.CreateEPL("@Name('C') context NineToFive select * from SupportBean");

            stmtThree.Events += new SupportUpdateListener().Update;

            SendTimeAndAssert("2002-05-02 08:59:59.999", false, 3);
            SendTimeAndAssert("2002-05-02 09:00:00.000", true, 3);
            SendTimeAndAssert("2002-05-02 16:59:59.000", true, 3);
            SendTimeAndAssert("2002-05-02 17:00:00.000", false, 3);

            Assert.IsFalse(contextListener.IsInvoked);

            _epService.EPAdministrator.DestroyAllStatements();

            // test SODA
            SendTimeEvent("2002-05-03 16:59:59.000");
            EPStatementObjectModel model = _epService.EPAdministrator.CompileEPL(contextEPL);

            Assert.AreEqual(contextEPL, model.ToEPL());
            EPStatement stmt = _epService.EPAdministrator.Create(model);

            Assert.AreEqual(contextEPL, stmt.Text);

            // test built-in properties
            EPStatement stmtLast = _epService.EPAdministrator.CreateEPL("@Name('A') context NineToFive " +
                                                                        "select context.name as c1, context.startTime as c2, context.endTime as c3, TheString as c4 from SupportBean");
            SupportUpdateListener listener = new SupportUpdateListener();

            stmtLast.Events += listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 10));
            EventBean theEvent = listener.AssertOneGetNewAndReset();

            Assert.AreEqual("NineToFive", theEvent.Get("c1"));
            Assert.AreEqual("2002-05-03 16:59:59.000", theEvent.Get("c2").AsLong().Print());
            Assert.AreEqual("2002-05-03 17:00:00.000", theEvent.Get("c3").AsLong().Print());
            Assert.AreEqual("E1", theEvent.Get("c4"));
        }
        public void TestOp()
        {
            EventCollection     events       = EventCollectionFactory.GetEventSetOne(0, 1000);
            CaseList            testCaseList = new CaseList();
            EventExpressionCase testCase;

            // The wait is done when 2 seconds passed
            testCase = new EventExpressionCase("timer:interval(1999 msec)");
            testCase.Add("B1");
            testCaseList.AddTest(testCase);

            String text = "select * from pattern [timer:interval(1.999)]";
            EPStatementObjectModel model = new EPStatementObjectModel();

            model.SelectClause = SelectClause.CreateWildcard();
            PatternExpr pattern = Patterns.TimerInterval(1.999d);

            model.FromClause = FromClause.Create(PatternStream.Create(pattern));
            model            = (EPStatementObjectModel)SerializableObjectCopier.Copy(model);
            Assert.AreEqual(text, model.ToEPL());
            testCase = new EventExpressionCase(model);
            testCase.Add("B1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(2 sec)");
            testCase.Add("B1");
            testCaseList.AddTest(testCase);

            // 3 seconds (>2001 microseconds) passed
            testCase = new EventExpressionCase("timer:interval(2.001)");
            testCase.Add("C1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(2999 milliseconds)");
            testCase.Add("C1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(3 seconds)");
            testCase.Add("C1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(3.001 seconds)");
            testCase.Add("B2");
            testCaseList.AddTest(testCase);

            // Try with an all ... repeated timer every 3 seconds
            testCase = new EventExpressionCase("every timer:interval(3.001 sec)");
            testCase.Add("B2");
            testCase.Add("F1");
            testCase.Add("D3");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every timer:interval(5000 msec)");
            testCase.Add("A2");
            testCase.Add("B3");
            testCaseList.AddTest(testCase);


            testCase = new EventExpressionCase("timer:interval(3.999 second) -> b=" + EVENT_B_CLASS);
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(4 sec) -> b=" + EVENT_B_CLASS);
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(4.001 sec) -> b=" + EVENT_B_CLASS);
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(0) -> b=" + EVENT_B_CLASS);
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            // Try with an followed-by as a second argument
            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " -> timer:interval(0.001)");
            testCase.Add("C1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " -> timer:interval(0)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " -> timer:interval(1 sec)");
            testCase.Add("C1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " -> timer:interval(1.001)");
            testCase.Add("B2", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            // Try in a 3-way followed by
            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() -> timer:interval(6.000) -> d=" + EVENT_D_CLASS);
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + "() -> timer:interval(2.001) -> d=" + EVENT_D_CLASS + "())");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + "() -> timer:interval(2.000) -> d=" + EVENT_D_CLASS + "())");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            // Try with an "or"
            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() or timer:interval(1.001)");
            testCase.Add("B1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() or timer:interval(2.001)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(Id='B3') or timer:interval(8.500)");
            testCase.Add("D2");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(8.500) or timer:interval(7.500)");
            testCase.Add("F1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(999999 msec) or g=" + EVENT_G_CLASS);
            testCase.Add("G1", "g", events.GetEvent("G1"));
            testCaseList.AddTest(testCase);

            // Try with an "and"
            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() and timer:interval(4000 msec)");
            testCase.Add("B2", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() and timer:interval(4001 msec)");
            testCase.Add("A2", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(9999999 msec) and b=" + EVENT_B_CLASS);
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(1 msec) and b=" + EVENT_B_CLASS + "(Id=\"B2\")");
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCaseList.AddTest(testCase);

            // Try with an "within"
            testCase = new EventExpressionCase("timer:interval(3.000) where timer:within(2.000)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:interval(3.000) where timer:within (3.000)");
            testCaseList.AddTest(testCase);

            // Run all tests
            PatternTestHarness util = new PatternTestHarness(events, testCaseList, GetType(), GetType().FullName);

            util.RunTest();
        }
        public void TestDistinctOverlappingMultiKey()
        {
            String epl = "create context MyContext as " +
                         "initiated by distinct(TheString, IntPrimitive) SupportBean as sb " +
                         "terminated SupportBean_S1";    // any S1 ends the contexts
            EPStatementObjectModel model = _epService.EPAdministrator.CompileEPL(epl);

            Assert.AreEqual(epl, model.ToEPL());
            EPStatement stmtContext = _epService.EPAdministrator.Create(model);

            Assert.AreEqual(stmtContext.Text, model.ToEPL());

            String[]    fields = "id,p00,p01,cnt".Split(',');
            EPStatement stmt   = _epService.EPAdministrator.CreateEPL(
                "context MyContext " +
                "select id, p00, p01, count(*) as cnt " +
                "from SupportBean_S0(id = context.sb.IntPrimitive and p00 = context.sb.TheString)");

            stmt.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "A"));
            _epService.EPRuntime.SendEvent(new SupportBean("A", 1));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "A", "E1"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 1, "A", "E1", 1L });

            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "A", "E2"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 1, "A", "E2", 2L });

            _epService.EPRuntime.SendEvent(new SupportBean_S1(-1)); // terminate all
            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "A", "E3"));
            _epService.EPRuntime.SendEvent(new SupportBean("A", 1));
            _epService.EPRuntime.SendEvent(new SupportBean("B", 2));
            _epService.EPRuntime.SendEvent(new SupportBean("B", 1));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "A", "E4"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 1, "A", "E4", 1L });

            _epService.EPRuntime.SendEvent(new SupportBean_S0(2, "B", "E5"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 2, "B", "E5", 1L });

            _epService.EPRuntime.SendEvent(new SupportBean_S0(1, "B", "E6"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 1, "B", "E6", 1L });

            _epService.EPRuntime.SendEvent(new SupportBean_S0(2, "B", "E7"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 2, "B", "E7", 2L });

            _epService.EPRuntime.SendEvent(new SupportBean_S1(-1)); // terminate all
            _epService.EPRuntime.SendEvent(new SupportBean_S0(2, "B", "E8"));
            _epService.EPRuntime.SendEvent(new SupportBean("B", 2));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean_S0(2, "B", "E9"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 2, "B", "E9", 1L });

            _epService.EPRuntime.SendEvent(new SupportBean_S0(2, "B", "E10"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 2, "B", "E10", 2L });

            // destroy context partition, should forget about the distinct key
            GetSpi(_epService).DestroyContextPartitions("MyContext", new ContextPartitionSelectorAll());
            _epService.EPRuntime.SendEvent(new SupportBean_S0(2, "B", "E11"));
            _epService.EPRuntime.SendEvent(new SupportBean("B", 2));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean_S0(2, "B", "E12"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { 2, "B", "E12", 1L });
        }
Example #6
0
        public void TestOp()
        {
            var dateTime  = MakeDateTime(2005, 3, 9, 8, 0, 0, 0);
            var startTime = dateTime.TimeInMillis();

            // Start a 2004-12-09 8:00:00am and send events every 10 minutes
            //        "A1"    8:10
            //        "B1"    8:20
            //        "C1"    8:30
            //        "B2"    8:40
            //        "A2"    8:50
            //        "D1"    9:00
            //        "E1"    9:10
            //        "F1"    9:20
            //        "D2"    9:30
            //        "B3"    9:40
            //        "G1"    9:50
            //        "D3"   10:00

            var testData                 = EventCollectionFactory.GetEventSetOne(startTime, 1000 * 60 * 10);
            var testCaseList             = new CaseList();
            EventExpressionCase testCase = null;

            testCase = new EventExpressionCase("timer:at(10, 8, *, *, *)");
            testCase.Add("A1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(10, 8, *, *, *, 1)");
            testCase.Add("B1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(5, 8, *, *, *)");
            testCase.Add("A1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(10, 8, *, *, *, *)");
            testCase.Add("A1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(25, 9, *, *, *)");
            testCase.Add("D2");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(11, 8, *, *, *)");
            testCase.Add("B1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(19, 8, *, *, *, 59)");
            testCase.Add("B1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every timer:at(* / 5, *, *, *, *, *)");
            AddAll(testCase);
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every timer:at(*, *, *, *, *, * / 10)");
            AddAll(testCase);
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(20, 8, *, *, *, 20)");
            testCase.Add("C1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every timer:at(*, *, *, *, *)");
            AddAll(testCase);
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every timer:at(*, *, *, *, *, *)");
            AddAll(testCase);
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every timer:at(* / 9, *, *, *, *, *)");
            AddAll(testCase);
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every timer:at(* / 10, *, *, *, *, *)");
            AddAll(testCase);
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every timer:at(* / 30, *, *, *, *)");
            testCase.Add("C1");
            testCase.Add("D1");
            testCase.Add("D2");
            testCase.Add("D3");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(10, 9, *, *, *, 10) or timer:at(30, 9, *, *, *, *)");
            testCase.Add("F1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(id='B3') -> timer:at(20, 9, *, *, *, *)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(id='B3') -> timer:at(45, 9, *, *, *, *)");
            testCase.Add("G1", "b", testData.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(59, 8, *, *, *, 59) -> d=" + EVENT_D_CLASS);
            testCase.Add("D1", "d", testData.GetEvent("D1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(*, 9, *, *, *, 59) -> d=" + EVENT_D_CLASS);
            testCase.Add("D2", "d", testData.GetEvent("D2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(22, 8, *, *, *) -> b=" + EVENT_B_CLASS + "(id='B3') -> timer:at(55, *, *, *, *)");
            testCase.Add("D3", "b", testData.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(40, *, *, *, *, 1) and b=" + EVENT_B_CLASS);
            testCase.Add("A2", "b", testData.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(40, 9, *, *, *, 1) or d=" + EVENT_D_CLASS + "(id=\"D3\")");
            testCase.Add("G1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(22, 8, *, *, *) -> b=" + EVENT_B_CLASS + "() -> timer:at(55, 8, *, *, *)");
            testCase.Add("D1", "b", testData.GetEvent("B2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(22, 8, *, *, *, 1) where timer:within(1 second)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(22, 8, *, *, *, 1) where timer:within(31 minutes)");
            testCase.Add("C1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(*, 9, *, *, *) and timer:at(55, *, *, *, *)");
            testCase.Add("D1");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("timer:at(40, 8, *, *, *, 1) and b=" + EVENT_B_CLASS);
            testCase.Add("A2", "b", testData.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            const string text = "select * from pattern [timer:at(10,8,*,*,*,*)]";

            var model = new EPStatementObjectModel();

            model.SelectClause = SelectClause.CreateWildcard();
            var pattern = Patterns.TimerAt(10, 8, null, null, null, null);

            model.FromClause = FromClause.Create(PatternStream.Create(pattern));
            model            = (EPStatementObjectModel)SerializableObjectCopier.Copy(model);
            Assert.AreEqual(text, model.ToEPL());
            testCase = new EventExpressionCase(model);
            testCase.Add("A1");
            testCaseList.AddTest(testCase);

            // As of release 1.6 this no longer updates listeners when the statement is started.
            // The reason is that the dispatch view only gets attached after a pattern started,
            // therefore ZeroDepthEventStream looses the event. There should be no use case requiring this:
            //
            //     testCase = new EventExpressionCase("not timer:at(22, 8, *, *, *, 1)");
            //     testCase.Add(EventCollection.ON_START_EVENT_ID);
            //     testCaseList.AddTest(testCase);

            // Run all tests
            var util = new PatternTestHarness(testData, testCaseList, GetType(), GetType().FullName);

            util.RunTest();
        }
        private PatternExpr GetPatternRootExpr(EPStatementObjectModel model)
        {
            PatternStream patternStrema = (PatternStream)model.FromClause.Streams[0];

            return(patternStrema.Expression);
        }
Example #8
0
 public EventExpressionCase(EPStatementObjectModel objectModel)
 {
     this.objectModel     = objectModel;
     this.expectedResults = new LinkedHashMap <String, LinkedList <EventDescriptor> >();
 }
 /// <summary>Ctor. </summary>
 /// <param name="model">is the statement object model</param>
 /// <param name="subParams">is the substitution parameter list</param>
 /// <param name="optionalEPL">the EPL provided if any</param>
 public EPPreparedStatementImpl(EPStatementObjectModel model, IList <SubstitutionParameterExpressionBase> subParams, String optionalEPL)
 {
     _model       = model;
     _subParams   = subParams;
     _optionalEPL = optionalEPL;
 }
Example #10
0
 public EPStatement Create(EPStatementObjectModel sodaStatement, string statementName, object userobject)
 {
     return(Create(sodaStatement, statementName, userobject, null));
 }
Example #11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EsperQuery&lt;T&gt;"/> class.
 /// </summary>
 /// <param name="serviceProvider">The service provider.</param>
 /// <param name="objectModel">The object model.</param>
 public EsperQuery(EPServiceProvider serviceProvider, EPStatementObjectModel objectModel)
 {
     ServiceProvider = serviceProvider;
     ObjectModel     = objectModel;
 }
Example #12
0
 public EPStatement CreateModelStatementId(EPStatementObjectModel sodaStatement, string statementName, object userobject, int statementId)
 {
     return(Create(sodaStatement, statementName, userobject, statementId));
 }
Example #13
0
 public EPStatement Create(EPStatementObjectModel sodaStatement)
 {
     return(Create(sodaStatement, null));
 }
Example #14
0
        private void RunAssertionColDefPlain(EventRepresentationEnum eventRepresentationEnum)
        {
            EPStatement stmtCreate = _epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " create schema MyEventType as (col1 string, col2 int, sbean " + typeof(SupportBean).FullName + ", col3.col4 int)");

            AssertTypeColDef(stmtCreate.EventType);
            EPStatement stmtSelect = _epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " select * from MyEventType");

            AssertTypeColDef(stmtSelect.EventType);

            stmtSelect.Dispose();
            stmtCreate.Dispose();

            // destroy and create differently
            stmtCreate = _epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " create schema MyEventType as (col3 string, col4 int)");
            Assert.AreEqual(typeof(int), stmtCreate.EventType.GetPropertyType("col4"));
            Assert.AreEqual(2, stmtCreate.EventType.PropertyDescriptors.Count);

            stmtCreate.Stop();

            // destroy and create differently
            stmtCreate = _epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " create schema MyEventType as (col5 string, col6 int)");
            Assert.AreEqual(stmtCreate.EventType.UnderlyingType, eventRepresentationEnum.GetOutputClass());
            Assert.AreEqual(typeof(int), stmtCreate.EventType.GetPropertyType("col6"));
            Assert.AreEqual(2, stmtCreate.EventType.PropertyDescriptors.Count);
            stmtSelect         = _epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " select * from MyEventType");
            stmtSelect.Events += _listener.Update;
            Assert.AreEqual(stmtSelect.EventType.UnderlyingType, eventRepresentationEnum.GetOutputClass());

            // send event
            IDictionary <String, Object> data = new LinkedHashMap <String, Object>();

            data.Put("col5", "abc");
            data.Put("col6", 1);
            if (eventRepresentationEnum.IsObjectArrayEvent())
            {
                _epService.EPRuntime.SendEvent(data.Values.ToArray(), "MyEventType");
            }
            else
            {
                _epService.EPRuntime.SendEvent(data, "MyEventType");
            }
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), "col5,col6".Split(','), new Object[] { "abc", 1 });

            // assert type information
            EventTypeSPI typeSPI = (EventTypeSPI)stmtSelect.EventType;

            Assert.AreEqual(TypeClass.APPLICATION, typeSPI.Metadata.TypeClass);
            Assert.AreEqual(typeSPI.Name, typeSPI.Metadata.PublicName);
            Assert.IsTrue(typeSPI.Metadata.IsApplicationConfigured);
            Assert.IsFalse(typeSPI.Metadata.IsApplicationPreConfigured);
            Assert.IsFalse(typeSPI.Metadata.IsApplicationPreConfiguredStatic);
            Assert.AreEqual(typeSPI.Name, typeSPI.Metadata.PrimaryName);

            // test non-enum create-schema
            String      epl           = "create" + eventRepresentationEnum.GetOutputTypeCreateSchemaName() + " schema MyEventTypeTwo as (col1 string, col2 int, sbean " + typeof(SupportBean).FullName + ", col3.col4 int)";
            EPStatement stmtCreateTwo = _epService.EPAdministrator.CreateEPL(epl);

            AssertTypeColDef(stmtCreateTwo.EventType);
            Assert.AreEqual(eventRepresentationEnum.GetOutputClass(), stmtCreateTwo.EventType.UnderlyingType);
            stmtCreateTwo.Dispose();
            _epService.EPAdministrator.Configuration.RemoveEventType("MyEventTypeTwo", true);

            EPStatementObjectModel model = _epService.EPAdministrator.CompileEPL(epl);

            Assert.AreEqual(model.ToEPL(), epl);
            stmtCreateTwo = _epService.EPAdministrator.Create(model);
            AssertTypeColDef(stmtCreateTwo.EventType);
            Assert.AreEqual(eventRepresentationEnum.GetOutputClass(), stmtCreateTwo.EventType.UnderlyingType);

            _epService.Initialize();
        }
        private void AssertCompileSODA(EPServiceProvider epService, string epl)
        {
            EPStatementObjectModel model = epService.EPAdministrator.CompileEPL(epl);

            Assert.AreEqual(epl, model.ToEPL());
        }
Example #16
0
        public void TestOp()
        {
            var events       = EventCollectionFactory.GetEventSetOne(0, 1000);
            var testCaseList = new CaseList();

            var testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(Id=\"B1\") where timer:withinmax(2 sec,100)");

            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(Id=\"B1\") where timer:withinmax(2001 msec,1)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(Id=\"B1\") where timer:withinmax(1999 msec,10)");
            testCaseList.AddTest(testCase);

            var text  = "select * from pattern [b=" + EVENT_B_CLASS + "(Id=\"B3\") where timer:withinmax(10.001,1)]";
            var model = new EPStatementObjectModel();

            model.SelectClause = SelectClause.CreateWildcard();
            model = (EPStatementObjectModel)SerializableObjectCopier.Copy(model);

            var filter  = Expressions.Eq("Id", "B3");
            var pattern = Patterns.TimerWithinMax(10.001, 1, Patterns.Filter(Filter.Create(EVENT_B_CLASS, filter), "b"));

            model.FromClause = FromClause.Create(PatternStream.Create(pattern));
            Assert.AreEqual(text, model.ToEPL());
            testCase = new EventExpressionCase(model);
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:withinmax(4.001, 0)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:withinmax(4.001, 1)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:withinmax(4.001, 2)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + " where timer:withinmax(2.001, 4)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            // Note how every restarts the max
            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " where timer:withinmax(2001 msec, 2))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " where timer:withinmax(2001 msec, 3))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " where timer:withinmax(2001 msec, 1))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " where timer:withinmax(2001 msec, 0))");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + " -> d=" + EVENT_D_CLASS + " where timer:withinmax(4000 msec, 1)");
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() -> every d=" + EVENT_D_CLASS + " where timer:withinmax(4000 msec, 1)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B2"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() -> (every d=" + EVENT_D_CLASS + ") where timer:withinmax(1 day, 3)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B2"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() -> (every d=" + EVENT_D_CLASS + ") where timer:withinmax(1 day, 2)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() -> (every d=" + EVENT_D_CLASS + ") where timer:withinmax(1 day, 1)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            var util = new PatternTestHarness(events, testCaseList, GetType(), GetType().FullName);

            util.RunTest();
        }
Example #17
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ModuleItem"/> class.
 /// </summary>
 /// <param name="model">The model.</param>
 public ModuleItem(EPStatementObjectModel model)
 {
     Model = model;
 }
Example #18
0
        public void TestOp()
        {
            EventCollection     events       = EventCollectionFactory.GetEventSetOne(0, 1000);
            CaseList            testCaseList = new CaseList();
            EventExpressionCase testCase;

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " and every d=" + EVENT_D_CLASS);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + " and d=" + EVENT_D_CLASS);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " and d=" + EVENT_D_CLASS);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every(b=" + EVENT_B_CLASS + " and d=" + EVENT_D_CLASS + ")");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"));
            testCaseList.AddTest(testCase);

            EPStatementObjectModel model = new EPStatementObjectModel();

            model.SelectClause = SelectClause.CreateWildcard();
            PatternExpr pattern = Patterns.Every(Patterns.And(Patterns.Filter(EVENT_B_CLASS, "b"), Patterns.Filter(EVENT_D_CLASS, "d")));

            model.FromClause = FromClause.Create(PatternStream.Create(pattern));
            model            = (EPStatementObjectModel)SerializableObjectCopier.Copy(model);
            Assert.AreEqual("select * from pattern [every (b=" + EVENT_B_CLASS + " and d=" + EVENT_D_CLASS + ")]", model.ToEPL());
            testCase = new EventExpressionCase(model);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every( b=" + EVENT_B_CLASS + " and every d=" + EVENT_D_CLASS + ")");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + " and every d=" + EVENT_D_CLASS);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B2"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every( every b=" + EVENT_B_CLASS + " and d=" + EVENT_D_CLASS + ")");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every a=" + EVENT_A_CLASS + " and d=" + EVENT_D_CLASS + " and b=" + EVENT_B_CLASS);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"), "a", events.GetEvent("A1"));
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"), "a", events.GetEvent("A2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every( every b=" + EVENT_B_CLASS + " and every d=" + EVENT_D_CLASS + ")");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D1"));
            for (int i = 0; i < 3; i++)
            {
                testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"));
            }
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B2"), "d", events.GetEvent("D3"));
            for (int i = 0; i < 5; i++)
            {
                testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            }
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("a=" + EVENT_A_CLASS + " and d=" + EVENT_D_CLASS + " and b=" + EVENT_B_CLASS);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"), "a", events.GetEvent("A1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every a=" + EVENT_A_CLASS + " and every d=" + EVENT_D_CLASS + " and b=" + EVENT_B_CLASS);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"), "a", events.GetEvent("A1"));
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"), "a", events.GetEvent("A2"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"), "a", events.GetEvent("A1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"), "a", events.GetEvent("A2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"), "a", events.GetEvent("A1"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"), "a", events.GetEvent("A2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " and b=" + EVENT_B_CLASS);
            testCase.Add("B1", "b", events.GetEvent("B1"), "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every a=" + EVENT_A_CLASS + " and every d=" + EVENT_D_CLASS + " and every b=" + EVENT_B_CLASS);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"), "a", events.GetEvent("A1"));
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"), "a", events.GetEvent("A2"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"), "a", events.GetEvent("A1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"), "a", events.GetEvent("A2"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"), "a", events.GetEvent("A1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"), "a", events.GetEvent("A2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"), "a", events.GetEvent("A1"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"), "a", events.GetEvent("A2"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D1"), "a", events.GetEvent("A1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D1"), "a", events.GetEvent("A2"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"), "a", events.GetEvent("A1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"), "a", events.GetEvent("A2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"), "a", events.GetEvent("A1"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"), "a", events.GetEvent("A2"));
            testCase.Add("D3", "b", events.GetEvent("B2"), "d", events.GetEvent("D3"), "a", events.GetEvent("A1"));
            testCase.Add("D3", "b", events.GetEvent("B2"), "d", events.GetEvent("D3"), "a", events.GetEvent("A2"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"), "a", events.GetEvent("A1"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"), "a", events.GetEvent("A2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (a=" + EVENT_A_CLASS + " and every d=" + EVENT_D_CLASS + " and b=" + EVENT_B_CLASS + ")");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"), "a", events.GetEvent("A1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"), "a", events.GetEvent("A1"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"), "a", events.GetEvent("A1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " and b=" + EVENT_B_CLASS + ")");
            testCase.Add("B1", "b", events.GetEvent("B1"), "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"), "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            PatternTestHarness util = new PatternTestHarness(events, testCaseList, GetType(), GetType().FullName);

            util.RunTest();
        }
        private void RunAssertionAllAggFunctions(EPServiceProvider epService)
        {
            string[]       fields = "cavedev,cavg,cmax,cmedian,cmin,cstddev,csum,cfmaxever,cfminever".Split(',');
            EPStatementSPI stmt   = (EPStatementSPI)epService.EPAdministrator.CreateEPL("select " +
                                                                                        "avedev(IntBoxed, BoolPrimitive) as cavedev," +
                                                                                        "avg(IntBoxed, BoolPrimitive) as cavg, " +
                                                                                        "fmax(IntBoxed, BoolPrimitive) as cmax, " +
                                                                                        "median(IntBoxed, BoolPrimitive) as cmedian, " +
                                                                                        "fmin(IntBoxed, BoolPrimitive) as cmin, " +
                                                                                        "stddev(IntBoxed, BoolPrimitive) as cstddev, " +
                                                                                        "sum(IntBoxed, BoolPrimitive) as csum," +
                                                                                        "fmaxever(IntBoxed, BoolPrimitive) as cfmaxever, " +
                                                                                        "fminever(IntBoxed, BoolPrimitive) as cfminever " +
                                                                                        "from SupportBean#length(3)");
            var listener = new SupportUpdateListener();

            stmt.Events += listener.Update;

            epService.EPRuntime.SendEvent(MakeBean(100, false));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { null, null, null, null, null, null, null, null, null });

            epService.EPRuntime.SendEvent(MakeBean(10, true));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 0.0d, 10.0, 10, 10.0, 10, null, 10, 10, 10 });

            epService.EPRuntime.SendEvent(MakeBean(11, false));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 0.0d, 10.0, 10, 10.0, 10, null, 10, 10, 10 });

            epService.EPRuntime.SendEvent(MakeBean(20, true));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 5.0d, 15.0, 20, 15.0, 10, 7.0710678118654755, 30, 20, 10 });

            epService.EPRuntime.SendEvent(MakeBean(30, true));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 5.0d, 25.0, 30, 25.0, 20, 7.0710678118654755, 50, 30, 10 });

            // Test all remaining types of "sum"
            stmt.Dispose();
            fields = "c1,c2,c3,c4".Split(',');
            stmt   = (EPStatementSPI)epService.EPAdministrator.CreateEPL("select " +
                                                                         "sum(FloatPrimitive, BoolPrimitive) as c1," +
                                                                         "sum(DoublePrimitive, BoolPrimitive) as c2, " +
                                                                         "sum(LongPrimitive, BoolPrimitive) as c3, " +
                                                                         "sum(ShortPrimitive, BoolPrimitive) as c4 " +
                                                                         "from SupportBean#length(2)");
            stmt.Events += listener.Update;

            epService.EPRuntime.SendEvent(MakeBean(2f, 3d, 4L, (short)5, false));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { null, null, null, null });

            epService.EPRuntime.SendEvent(MakeBean(3f, 4d, 5L, (short)6, true));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 3f, 4d, 5L, 6 });

            epService.EPRuntime.SendEvent(MakeBean(4f, 5d, 6L, (short)7, true));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 7f, 9d, 11L, 13 });

            epService.EPRuntime.SendEvent(MakeBean(1f, 1d, 1L, (short)1, true));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 5f, 6d, 7L, 8 });

            // Test min/max-ever
            stmt.Dispose();
            fields = "c1,c2".Split(',');
            stmt   = (EPStatementSPI)epService.EPAdministrator.CreateEPL("select " +
                                                                         "fmax(IntBoxed, BoolPrimitive) as c1," +
                                                                         "fmin(IntBoxed, BoolPrimitive) as c2 " +
                                                                         "from SupportBean");
            stmt.Events += listener.Update;
            Assert.IsFalse(stmt.StatementContext.IsStatelessSelect);

            epService.EPRuntime.SendEvent(MakeBean(10, true));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 10, 10 });

            epService.EPRuntime.SendEvent(MakeBean(20, true));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 20, 10 });

            epService.EPRuntime.SendEvent(MakeBean(8, false));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 20, 10 });

            epService.EPRuntime.SendEvent(MakeBean(7, true));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 20, 7 });

            epService.EPRuntime.SendEvent(MakeBean(30, false));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 20, 7 });

            epService.EPRuntime.SendEvent(MakeBean(40, true));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { 40, 7 });

            // test big decimal big integer
            stmt.Dispose();
            fields = "c1,c2,c3".Split(',');
            stmt   = (EPStatementSPI)epService.EPAdministrator.CreateEPL("select " +
                                                                         "avg(DecimalOne, BigInt < 100) as c1," +
                                                                         "sum(DecimalOne, BigInt < 100) as c2, " +
                                                                         "sum(BigInt, BigInt < 100) as c3 " +
                                                                         "from SupportBeanNumeric#length(2)");
            stmt.Events += listener.Update;

            epService.EPRuntime.SendEvent(new SupportBeanNumeric(new BigInteger(10), new decimal(20)));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { new decimal(20), new decimal(20), new BigInteger(10) });

            epService.EPRuntime.SendEvent(new SupportBeanNumeric(new BigInteger(101), new decimal(101)));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { new decimal(20), new decimal(20), new BigInteger(10) });

            epService.EPRuntime.SendEvent(new SupportBeanNumeric(new BigInteger(20), new decimal(40)));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { new decimal(40), new decimal(40), new BigInteger(20) });

            epService.EPRuntime.SendEvent(new SupportBeanNumeric(new BigInteger(30), new decimal(50)));
            EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { new decimal(45), new decimal(90), new BigInteger(50) });

            stmt.Dispose();
            string epl = "select " +
                         "avedev(distinct IntBoxed,BoolPrimitive) as cavedev, " +
                         "avg(distinct IntBoxed,BoolPrimitive) as cavg, " +
                         "fmax(distinct IntBoxed,BoolPrimitive) as cmax, " +
                         "median(distinct IntBoxed,BoolPrimitive) as cmedian, " +
                         "fmin(distinct IntBoxed,BoolPrimitive) as cmin, " +
                         "stddev(distinct IntBoxed,BoolPrimitive) as cstddev, " +
                         "sum(distinct IntBoxed,BoolPrimitive) as csum " +
                         "from SupportBean#length(3)";

            stmt         = (EPStatementSPI)epService.EPAdministrator.CreateEPL(epl);
            stmt.Events += listener.Update;

            TryAssertionDistinct(epService, listener);

            // test SODA
            stmt.Dispose();
            EPStatementObjectModel model = epService.EPAdministrator.CompileEPL(epl);

            Assert.AreEqual(epl, model.ToEPL());
            stmt         = (EPStatementSPI)epService.EPAdministrator.Create(model);
            stmt.Events += listener.Update;
            Assert.AreEqual(epl, stmt.Text);

            TryAssertionDistinct(epService, listener);

            stmt.Dispose();
        }
            public void Run(RegressionEnvironment env)
            {
                var fields = new [] { "TheString" };
                var stmtText = "@Name('s0') select TheString from SupportBean#keepall output after 3 events";
                env.CompileDeploy(stmtText).AddListener("s0");

                SendEvent(env, "E1");

                env.Milestone(0);

                SendEvent(env, "E2");
                SendEvent(env, "E3");
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.Milestone(1);

                SendEvent(env, "E4");
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E4"});

                SendEvent(env, "E5");
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E5"});

                env.UndeployAll();

                var model = new EPStatementObjectModel();
                model.SelectClause = SelectClause.Create("TheString");
                model.FromClause = FromClause.Create(FilterStream.Create("SupportBean").AddView("keepall"));
                model.OutputLimitClause = OutputLimitClause.CreateAfter(3);
                Assert.AreEqual("select TheString from SupportBean#keepall output after 3 events ", model.ToEPL());
                model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("s0"));

                env.CompileDeploy(model).AddListener("s0");

                SendEvent(env, "E1");
                SendEvent(env, "E2");
                SendEvent(env, "E3");
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                SendEvent(env, "E4");
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E4"});

                SendEvent(env, "E5");
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E5"});

                model = env.EplToModel("select TheString from SupportBean#keepall output after 3 events");
                Assert.AreEqual("select TheString from SupportBean#keepall output after 3 events ", model.ToEPL());

                env.UndeployAll();
            }
Example #21
0
        public void TestGroupDelivery()
        {
            SendTimer(0);
            EPStatement stmt = _epService.EPAdministrator.CreateEPL("select * from SupportBean.win:time_batch(1) for grouped_delivery (IntPrimitive)");

            stmt.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            _epService.EPRuntime.SendEvent(new SupportBean("E2", 2));
            _epService.EPRuntime.SendEvent(new SupportBean("E3", 1));
            SendTimer(1000);
            Assert.AreEqual(2, _listener.NewDataList.Count);
            Assert.AreEqual(2, _listener.NewDataList[0].Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[0], "TheString,IntPrimitive".Split(','), new Object[][] { new Object[] { "E1", 1 }, new Object[] { "E3", 1 } });
            Assert.AreEqual(1, _listener.NewDataList[1].Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[1], "TheString,IntPrimitive".Split(','), new Object[][] { new Object[] { "E2", 2 } });

            // test sorted
            stmt.Dispose();
            stmt         = _epService.EPAdministrator.CreateEPL("select * from SupportBean.win:time_batch(1) order by IntPrimitive desc for grouped_delivery (IntPrimitive)");
            stmt.Events += _listener.Update;
            _listener.Reset();

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            _epService.EPRuntime.SendEvent(new SupportBean("E2", 2));
            _epService.EPRuntime.SendEvent(new SupportBean("E3", 1));
            SendTimer(2000);
            Assert.AreEqual(2, _listener.NewDataList.Count);
            Assert.AreEqual(1, _listener.NewDataList[0].Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[0], "TheString,IntPrimitive".Split(','), new Object[][] { new Object[] { "E2", 2 } });
            Assert.AreEqual(2, _listener.NewDataList[1].Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[1], "TheString,IntPrimitive".Split(','), new Object[][] { new Object[] { "E1", 1 }, new Object[] { "E3", 1 } });

            // test multiple criteria
            stmt.Dispose();
            String stmtText = "select TheString, DoubleBoxed, EnumValue from SupportBean.win:time_batch(1) order by TheString, DoubleBoxed, EnumValue for grouped_delivery(DoubleBoxed, EnumValue)";

            stmt         = _epService.EPAdministrator.CreateEPL(stmtText);
            stmt.Events += _listener.Update;
            _listener.Reset();

            SendEvent("E1", 10d, SupportEnum.ENUM_VALUE_2); // A (1)
            SendEvent("E2", 11d, SupportEnum.ENUM_VALUE_1); // B (2)
            SendEvent("E3", 9d, SupportEnum.ENUM_VALUE_2);  // C (3)
            SendEvent("E4", 10d, SupportEnum.ENUM_VALUE_2); // A
            SendEvent("E5", 10d, SupportEnum.ENUM_VALUE_1); // D (4)
            SendEvent("E6", 10d, SupportEnum.ENUM_VALUE_1); // D
            SendEvent("E7", 11d, SupportEnum.ENUM_VALUE_1); // B
            SendEvent("E8", 10d, SupportEnum.ENUM_VALUE_1); // D
            SendTimer(3000);
            Assert.AreEqual(4, _listener.NewDataList.Count);
            String[] fields = "TheString,DoubleBoxed,EnumValue".Split(',');
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[0], fields,
                                              new Object[][] { new Object[] { "E1", 10d, SupportEnum.ENUM_VALUE_2 }, new Object[] { "E4", 10d, SupportEnum.ENUM_VALUE_2 } });
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[1], fields,
                                              new Object[][] { new Object[] { "E2", 11d, SupportEnum.ENUM_VALUE_1 }, new Object[] { "E7", 11d, SupportEnum.ENUM_VALUE_1 } });
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[2], fields,
                                              new Object[][] { new Object[] { "E3", 9d, SupportEnum.ENUM_VALUE_2 } });
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[3], fields,
                                              new Object[][] { new Object[] { "E5", 10d, SupportEnum.ENUM_VALUE_1 }, new Object[] { "E6", 10d, SupportEnum.ENUM_VALUE_1 }, new Object[] { "E8", 10d, SupportEnum.ENUM_VALUE_1 } });

            // test SODA
            stmt.Dispose();
            _listener.Reset();
            EPStatementObjectModel model = _epService.EPAdministrator.CompileEPL(stmtText);

            Assert.AreEqual(stmtText, model.ToEPL());
            stmt         = _epService.EPAdministrator.Create(model);
            stmt.Events += _listener.Update;

            SendEvent("E1", 10d, SupportEnum.ENUM_VALUE_2); // A (1)
            SendEvent("E2", 11d, SupportEnum.ENUM_VALUE_1); // B (2)
            SendEvent("E3", 11d, SupportEnum.ENUM_VALUE_1); // B (2)
            SendTimer(4000);
            Assert.AreEqual(2, _listener.NewDataList.Count);
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[0], fields,
                                              new Object[][] { new Object[] { "E1", 10d, SupportEnum.ENUM_VALUE_2 } });
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[1], fields,
                                              new Object[][] { new Object[] { "E2", 11d, SupportEnum.ENUM_VALUE_1 }, new Object[] { "E3", 11d, SupportEnum.ENUM_VALUE_1 } });
        }
Example #22
0
        public void TestOutputWhenThenExpression()
        {
            SendTimeEvent(1, 8, 0, 0, 0);
            _epService.EPAdministrator.Configuration.AddVariable("myvar", typeof(int), 0);
            _epService.EPAdministrator.Configuration.AddVariable("count_insert_var", typeof(int), 0);
            _epService.EPAdministrator.CreateEPL("on SupportBean set myvar = IntPrimitive");

            var expression = "select Symbol from MarketData.win:length(2) output when myvar=1 then set myvar=0, count_insert_var=count_insert";
            var stmt       = _epService.EPAdministrator.CreateEPL(expression);

            RunAssertion(1, stmt);

            var model = new EPStatementObjectModel();

            model.SelectClause      = SelectClause.Create("Symbol");
            model.FromClause        = FromClause.Create(FilterStream.Create("MarketData").AddView("win", "length", Expressions.Constant(2)));
            model.OutputLimitClause = OutputLimitClause.Create(Expressions.Eq("myvar", 1))
                                      .AddThenAssignment(Expressions.Eq(Expressions.Property("myvar"), Expressions.Constant(0)))
                                      .AddThenAssignment(Expressions.Eq(Expressions.Property("count_insert_var"), Expressions.Property("count_insert")));

            var epl = model.ToEPL();

            Assert.AreEqual(expression, epl);
            stmt = _epService.EPAdministrator.Create(model);
            RunAssertion(2, stmt);

            model = _epService.EPAdministrator.CompileEPL(expression);
            Assert.AreEqual(expression, model.ToEPL());
            stmt = _epService.EPAdministrator.Create(model);
            RunAssertion(3, stmt);

            var outputLast = "select Symbol from MarketData.win:length(2) output last when myvar=1 ";

            model = _epService.EPAdministrator.CompileEPL(outputLast);
            Assert.AreEqual(outputLast.Trim(), model.ToEPL().Trim());

            // test same variable referenced multiple times JIRA-386
            SendTimer(0);
            var listenerOne = new SupportUpdateListener();
            var listenerTwo = new SupportUpdateListener();
            var stmtOne     = _epService.EPAdministrator.CreateEPL("select * from MarketData output last when myvar=100");

            stmtOne.AddListener(listenerOne);
            var stmtTwo = _epService.EPAdministrator.CreateEPL("select * from MarketData output last when myvar=100");

            stmtTwo.AddListener(listenerTwo);
            _epService.EPRuntime.SendEvent(new SupportMarketDataBean("ABC", "E1", 100));
            _epService.EPRuntime.SendEvent(new SupportMarketDataBean("ABC", "E2", 100));

            SendTimer(1000);
            Assert.IsFalse(listenerOne.IsInvoked);
            Assert.IsFalse(listenerTwo.IsInvoked);

            _epService.EPRuntime.SetVariableValue("myvar", 100);
            SendTimer(2000);
            Assert.IsTrue(listenerTwo.IsInvoked);
            Assert.IsTrue(listenerOne.IsInvoked);

            stmtOne.Dispose();
            stmtTwo.Dispose();

            // test when-then with condition triggered by output events
            SendTimeEvent(2, 8, 0, 0, 0);
            var eplToDeploy = "create variable boolean varOutputTriggered = false\n;" +
                              "@Audit @Name('out') select * from SupportBean.std:lastevent() output snapshot when (count_insert > 1 and varOutputTriggered = false) then set varOutputTriggered = true;";

            _epService.EPAdministrator.DeploymentAdmin.ParseDeploy(eplToDeploy);
            _epService.EPAdministrator.GetStatement("out").AddListener(_listener);

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean("E2", 2));
            Assert.AreEqual("E2", _listener.AssertOneGetNewAndReset().Get("TheString"));

            _epService.EPRuntime.SendEvent(new SupportBean("E3", 3));
            _epService.EPRuntime.SendEvent(new SupportBean("E4", 4));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SetVariableValue("varOutputTriggered", false);     // turns true right away as triggering output

            _epService.EPRuntime.SendEvent(new SupportBean("E5", 5));
            SendTimeEvent(2, 8, 0, 1, 0);
            Assert.AreEqual("E5", _listener.AssertOneGetNewAndReset().Get("TheString"));

            _epService.EPRuntime.SendEvent(new SupportBean("E6", 6));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPAdministrator.DestroyAllStatements();

            // test count_total for insert and remove
            _epService.EPAdministrator.CreateEPL("create variable int var_cnt_total = 3");
            var expressionTotal = "select TheString from SupportBean.win:length(2) output when count_insert_total = var_cnt_total or count_remove_total > 2";
            var stmtTotal       = _epService.EPAdministrator.CreateEPL(expressionTotal);

            stmtTotal.AddListener(_listener);

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            _epService.EPRuntime.SendEvent(new SupportBean("E2", 1));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean("E3", 1));
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetLastNewData(), "TheString".Split(','), new object[][] { new object[] { "E1" }, new object[] { "E2" }, new object[] { "E3" } });

            _epService.EPRuntime.SetVariableValue("var_cnt_total", -1);

            _epService.EPRuntime.SendEvent(new SupportBean("E4", 1));
            Assert.IsFalse(_listener.GetAndClearIsInvoked());

            _epService.EPRuntime.SendEvent(new SupportBean("E5", 1));
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetLastNewData(), "TheString".Split(','), new object[][] { new object[] { "E4" }, new object[] { "E5" } });
            _epService.EPAdministrator.DestroyAllStatements();
        }
Example #23
0
        public void TestOp()
        {
            EventCollection     events       = EventCollectionFactory.GetEventSetOne(0, 1000);
            CaseList            testCaseList = new CaseList();
            EventExpressionCase testCase     = null;

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(Id=\"B1\") where timer:within(2 sec)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(Id=\"B1\") where timer:within(2001 msec)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(Id=\"B1\") where timer:within(1999 msec)");
            testCaseList.AddTest(testCase);

            String text = "select * from pattern [b=" + EVENT_B_CLASS + "(Id=\"B3\") where timer:within(10.001)]";
            EPStatementObjectModel model = new EPStatementObjectModel();

            model.SelectClause = SelectClause.CreateWildcard();
            model = (EPStatementObjectModel)SerializableObjectCopier.Copy(model);
            Expression  filter  = Expressions.Eq("Id", "B3");
            PatternExpr pattern = Patterns.TimerWithin(10.001, Patterns.Filter(Filter.Create(EVENT_B_CLASS, filter), "b"));

            model.FromClause = FromClause.Create(PatternStream.Create(pattern));
            Assert.AreEqual(text, model.ToEPL());
            testCase = new EventExpressionCase(model);
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(Id=\"B3\") where timer:within(10001 msec)");
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(Id=\"B3\") where timer:within(10 sec)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "(Id=\"B3\") where timer:within(9.999)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:within(2.001)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:within(4.001)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + " where timer:within(2.001)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " where timer:within(2001 msec))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every ((every b=" + EVENT_B_CLASS + ") where timer:within(2.001))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every ((every b=" + EVENT_B_CLASS + ") where timer:within(6.001))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:within(11.001)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:within(4001 milliseconds)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + ") where timer:within(6.001)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " -> d=" + EVENT_D_CLASS + " where timer:within(4001 milliseconds)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() -> d=" + EVENT_D_CLASS + "() where timer:within(4 sec)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + "() where timer:within (4.001) and d=" + EVENT_D_CLASS + "() where timer:within(6.001))");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() where timer:within (2001 msec) and d=" + EVENT_D_CLASS + "() where timer:within(6001 msec)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() where timer:within (2001 msec) and d=" + EVENT_D_CLASS + "() where timer:within(6000 msec)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() where timer:within (2000 msec) and d=" + EVENT_D_CLASS + "() where timer:within(6001 msec)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + " -> d=" + EVENT_D_CLASS + " where timer:within(4000 msec)");
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() -> every d=" + EVENT_D_CLASS + " where timer:within(4000 msec)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B2"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() -> d=" + EVENT_D_CLASS + "() where timer:within(3999 msec)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() -> (every d=" + EVENT_D_CLASS + ") where timer:within(2001 msec)");
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + "() -> d=" + EVENT_D_CLASS + "()) where timer:within(6001 msec)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() where timer:within (2000 msec) or d=" + EVENT_D_CLASS + "() where timer:within(6000 msec)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(b=" + EVENT_B_CLASS + "() where timer:within (2000 msec) or d=" + EVENT_D_CLASS + "() where timer:within(6000 msec)) where timer:within (1999 msec)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + "() where timer:within (2001 msec) and d=" + EVENT_D_CLASS + "() where timer:within(6001 msec))");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() where timer:within (2001 msec) or d=" + EVENT_D_CLASS + "() where timer:within(6001 msec)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + "() where timer:within (2000 msec) or d=" + EVENT_D_CLASS + "() where timer:within(6001 msec)");
            testCase.Add("D1", "d", events.GetEvent("D1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + "() where timer:within (2001 msec) and every d=" + EVENT_D_CLASS + "() where timer:within(6001 msec)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D1"));
            testCase.Add("B3", "b", events.GetEvent("B3"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B2"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=" + EVENT_B_CLASS + ") where timer:within (2000 msec) and every d=" + EVENT_D_CLASS + "() where timer:within(6001 msec)");
            testCaseList.AddTest(testCase);

            PatternTestHarness util = new PatternTestHarness(events, testCaseList, GetType(), GetType().FullName);

            util.RunTest();
        }
Example #24
0
        private void RunTest(PatternTestStyle testStyle)
        {
            Configuration config = SupportConfigFactory.GetConfiguration();

            config.AddEventType("A", typeof(SupportBean_A));
            config.AddEventType("B", typeof(SupportBean_B));
            config.AddEventType("C", typeof(SupportBean_C));
            config.AddEventType("D", typeof(SupportBean_D));
            config.AddEventType("E", typeof(SupportBean_E));
            config.AddEventType("F", typeof(SupportBean_F));
            config.AddEventType("G", typeof(SupportBean_G));
            EPServiceProvider serviceProvider = EPServiceProviderManager.GetDefaultProvider(config);

            serviceProvider.Initialize();
            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.StartTest(serviceProvider, _testClass, _testMethodName);
            }

            EPRuntime runtime = serviceProvider.EPRuntime;

            // Send the start time to the runtime
            if (_sendEventCollection.GetTime(EventCollection.ON_START_EVENT_ID) != null)
            {
                TimerEvent startTime = new CurrentTimeEvent(_sendEventCollection.GetTime(EventCollection.ON_START_EVENT_ID).Value);
                runtime.SendEvent(startTime);
                Log.Debug("RunTest: Start time is " + startTime);
            }

            // Set up expression filters and match listeners

            int index = 0;

            foreach (EventExpressionCase descriptor in _caseList.Results)
            {
                String expressionText        = descriptor.ExpressionText;
                EPStatementObjectModel model = descriptor.ObjectModel;

                EPStatement statement = null;

                try
                {
                    if (model != null)
                    {
                        statement = serviceProvider.EPAdministrator.Create(model, "name--" + expressionText);
                    }
                    else
                    {
                        if (testStyle == PatternTestStyle.USE_PATTERN_LANGUAGE)
                        {
                            statement = serviceProvider.EPAdministrator.CreatePattern(expressionText, "name--" + expressionText);
                        }
                        else if (testStyle == PatternTestStyle.USE_EPL)
                        {
                            String text = "@Audit('pattern') @Audit('pattern-instances') select * from pattern [" + expressionText + "]";
                            statement      = serviceProvider.EPAdministrator.CreateEPL(text);
                            expressionText = text;
                        }
                        else if (testStyle == PatternTestStyle.USE_EPL_AND_CONSUME_NOCHECK)
                        {
                            String text = "select * from pattern @DiscardPartialsOnMatch @SuppressOverlappingMatches [" + expressionText + "]";
                            statement      = serviceProvider.EPAdministrator.CreateEPL(text);
                            expressionText = text;
                        }
                        else if (testStyle == PatternTestStyle.COMPILE_TO_MODEL)
                        {
                            String text = "select * from pattern [" + expressionText + "]";
                            EPStatementObjectModel mymodel = serviceProvider.EPAdministrator.CompileEPL(text);
                            statement      = serviceProvider.EPAdministrator.Create(mymodel);
                            expressionText = text;
                        }
                        else if (testStyle == PatternTestStyle.COMPILE_TO_EPL)
                        {
                            String text = "select * from pattern [" + expressionText + "]";
                            EPStatementObjectModel mymodel = serviceProvider.EPAdministrator.CompileEPL(text);
                            String reverse = mymodel.ToEPL();
                            statement      = serviceProvider.EPAdministrator.CreateEPL(reverse);
                            expressionText = reverse;
                        }
                        else
                        {
                            throw new ArgumentException("Unknown test style");
                        }
                    }
                }
                catch (Exception ex)
                {
                    String text = expressionText;
                    if (model != null)
                    {
                        text = "Model: " + model.ToEPL();
                    }
                    Log.Error(".runTest Failed to create statement for style " + testStyle + " pattern expression=" + text, ex);
                    Assert.Fail(".runTest Failed to create statement for style " + testStyle + " pattern expression=" + text);
                }

                // We stop the statement again and start after the first listener was added.
                // Thus we can handle patterns that fireStatementStopped on startup.
                statement.Stop();

                _expressions[index]         = statement;
                _expressions[index].Events += _listeners[index].Update;

                // Start the statement again: listeners now got called for on-start events such as for a "not"
                statement.Start();

                index++;
            }

            // Some expressions may fireStatementStopped as soon as they are started, such as a "not b()" expression, for example.
            // Check results for any such listeners/expressions.
            // NOTE: For EPL statements we do not support calling listeners when a pattern that fires upon start.
            // Reason is that this should not be a relevant functionality of a pattern, the start pattern
            // event itself cannot carry any information and is thus ignore. Note subsequent events
            // generated by the same pattern are fine.
            int totalEventsReceived = 0;

            if (testStyle != PatternTestStyle.USE_PATTERN_LANGUAGE)
            {
                ClearListenerEvents();
                totalEventsReceived += CountExpectedEvents(EventCollection.ON_START_EVENT_ID);
            }
            else    // Patterns do need to handle event publishing upon pattern expression start (patterns that turn true right away)
            {
                CheckResults(testStyle, EventCollection.ON_START_EVENT_ID);
                totalEventsReceived += CountListenerEvents();
                ClearListenerEvents();
            }

            // Send actual test events
            var entryCollection = _sendEventCollection.ToArray();

            for (int ii = 0; ii < entryCollection.Length; ii++)
            {
                var entry   = entryCollection[ii];
                var eventId = entry.Key;

                // Manipulate the time when this event was send
                if (_sendEventCollection.GetTime(eventId) != null)
                {
                    TimerEvent currentTimeEvent = new CurrentTimeEvent(_sendEventCollection.GetTime(eventId).Value);
                    runtime.SendEvent(currentTimeEvent);
                    Log.Debug("RunTest: Sending event {0} = {1} timed {2}", entry.Key, entry.Value, currentTimeEvent);
                }

                // Send event itself
                runtime.SendEvent(entry.Value);

                // Check expected results for this event
                if (testStyle != PatternTestStyle.USE_EPL_AND_CONSUME_NOCHECK)
                {
                    CheckResults(testStyle, eventId);

                    // Count and clear the list of events that each listener has received
                    totalEventsReceived += CountListenerEvents();
                }

                ClearListenerEvents();
            }

            // Count number of expected matches
            int totalExpected = 0;

            foreach (EventExpressionCase descriptor in _caseList.Results)
            {
                totalExpected += descriptor.ExpectedResults.Values.Sum(events => events.Count);
            }

            if (totalExpected != totalEventsReceived && testStyle != PatternTestStyle.USE_EPL_AND_CONSUME_NOCHECK)
            {
                Log.Debug(".test Count expected does not match count received, expected=" + totalExpected +
                          " received=" + totalEventsReceived);
                Assert.Fail();
            }

            // Kill all expressions
            foreach (EPStatement expression in _expressions)
            {
                expression.RemoveAllEventHandlers();
            }

            // Send test events again to also test that all were indeed killed
            foreach (var entry in _sendEventCollection)
            {
                runtime.SendEvent(entry.Value);
            }

            // Make sure all listeners are still at zero
            foreach (SupportUpdateListener listener in _listeners)
            {
                if (listener.NewDataList.Count > 0)
                {
                    Log.Debug(".test A match was received after stopping all expressions");
                    Assert.Fail();
                }
            }

            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.EndTest();
            }
        }
        public void Run(RegressionEnvironment env)
        {
            var events = EventCollectionFactory.GetEventSetOne(0, 1000);
            var testCaseList = new CaseList();
            EventExpressionCase testCase;

            testCase = new EventExpressionCase("b=SupportBean_B(Id='B1') where timer:withinmax(2 sec,100)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=SupportBean_B(Id='B1') where timer:withinmax(2001 msec,1)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=SupportBean_B(Id='B1') where timer:withinmax(1999 msec,10)");
            testCaseList.AddTest(testCase);

            var text = "select * from pattern [b=SupportBean_B(Id='B3') where timer:withinmax(10.001d,1)]";
            var model = new EPStatementObjectModel();
            model.SelectClause = SelectClause.CreateWildcard();
            model = env.CopyMayFail(model);
            Expression filter = Expressions.Eq("Id", "B3");
            PatternExpr pattern = Patterns.TimerWithinMax(
                10.001,
                1,
                Patterns.Filter(Filter.Create("SupportBean_B", filter), "b"));
            model.FromClause = FromClause.Create(PatternStream.Create(pattern));
            Assert.AreEqual(text, model.ToEPL().Replace("\"", "'"));
            testCase = new EventExpressionCase(model);
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=SupportBean_B) where timer:withinmax(4.001, 0)");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=SupportBean_B) where timer:withinmax(4.001, 1)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(every b=SupportBean_B) where timer:withinmax(4.001, 2)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=SupportBean_B where timer:withinmax(2.001, 4)");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            // Note how every restarts the max
            testCase = new EventExpressionCase("every (b=SupportBean_B where timer:withinmax(2001 msec, 2))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=SupportBean_B where timer:withinmax(2001 msec, 3))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=SupportBean_B where timer:withinmax(2001 msec, 1))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=SupportBean_B where timer:withinmax(2001 msec, 0))");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase(
                "every b=SupportBean_B -> d=SupportBean_D where timer:withinmax(4000 msec, 1)");
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase(
                "every b=SupportBean_B() -> every d=SupportBean_D where timer:withinmax(4000 msec, 1)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B2"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase(
                "every b=SupportBean_B() -> (every d=SupportBean_D) where timer:withinmax(1 day, 3)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B1"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B2"), "d", events.GetEvent("D3"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase(
                "every b=SupportBean_B() -> (every d=SupportBean_D) where timer:withinmax(1 day, 2)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
            testCase.Add("D2", "b", events.GetEvent("B2"), "d", events.GetEvent("D2"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase(
                "every b=SupportBean_B() -> (every d=SupportBean_D) where timer:withinmax(1 day, 1)");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D1", "b", events.GetEvent("B2"), "d", events.GetEvent("D1"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            var util = new PatternTestHarness(events, testCaseList, GetType());
            util.RunTest(env);
        }
Example #26
0
            public void Run(RegressionEnvironment env)
            {
                var events       = EventCollectionFactory.GetEventSetOne(0, 1000);
                var testCaseList = new CaseList();
                EventExpressionCase testCase;

                // The wait is done when 2 seconds passed
                testCase = new EventExpressionCase("timer:interval(1999 msec)");
                testCase.Add("B1");
                testCaseList.AddTest(testCase);

                var text  = "select * from pattern [timer:interval(1.999d)]";
                var model = new EPStatementObjectModel();

                model.SetSelect(SelectClause.CreateWildcard());
                PatternExpr pattern = Patterns.TimerInterval(1.999d);

                model.SetFrom(FromClause.Create(PatternStream.Create(pattern)));
                model = env.CopyMayFail(model);
                Assert.AreEqual(text, model.ToEPL());
                testCase = new EventExpressionCase(model);
                testCase.Add("B1");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(2 sec)");
                testCase.Add("B1");
                testCaseList.AddTest(testCase);

                // 3 seconds (>2001 microseconds) passed
                testCase = new EventExpressionCase("timer:interval(2.001)");
                testCase.Add("C1");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(2999 milliseconds)");
                testCase.Add("C1");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(3 seconds)");
                testCase.Add("C1");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(3.001 seconds)");
                testCase.Add("B2");
                testCaseList.AddTest(testCase);

                // Try with an all ... repeated timer every 3 seconds
                testCase = new EventExpressionCase("every timer:interval(3.001 sec)");
                testCase.Add("B2");
                testCase.Add("F1");
                testCase.Add("D3");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("every timer:interval(5000 msec)");
                testCase.Add("A2");
                testCase.Add("B3");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(3.999 second) -> b=SupportBean_B");
                testCase.Add("B2", "b", events.GetEvent("B2"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(4 sec) -> b=SupportBean_B");
                testCase.Add("B2", "b", events.GetEvent("B2"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(4.001 sec) -> b=SupportBean_B");
                testCase.Add("B3", "b", events.GetEvent("B3"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(0) -> b=SupportBean_B");
                testCase.Add("B1", "b", events.GetEvent("B1"));
                testCaseList.AddTest(testCase);

                // Try with an followed-by as a second argument
                testCase = new EventExpressionCase("b=SupportBean_B -> timer:interval(0.001)");
                testCase.Add("C1", "b", events.GetEvent("B1"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("b=SupportBean_B -> timer:interval(0)");
                testCase.Add("B1", "b", events.GetEvent("B1"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("b=SupportBean_B -> timer:interval(1 sec)");
                testCase.Add("C1", "b", events.GetEvent("B1"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("b=SupportBean_B -> timer:interval(1.001)");
                testCase.Add("B2", "b", events.GetEvent("B1"));
                testCaseList.AddTest(testCase);

                // Try in a 3-way followed by
                testCase = new EventExpressionCase("b=SupportBean_B() -> timer:interval(6.000) -> d=SupportBean_D");
                testCase.Add("D2", "b", events.GetEvent("B1"), "d", events.GetEvent("D2"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase(
                    "every (b=SupportBean_B() -> timer:interval(2.001) -> d=SupportBean_D())");
                testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase(
                    "every (b=SupportBean_B() -> timer:interval(2.000) -> d=SupportBean_D())");
                testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
                testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
                testCaseList.AddTest(testCase);

                // Try with an "or"
                testCase = new EventExpressionCase("b=SupportBean_B() or timer:interval(1.001)");
                testCase.Add("B1");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("b=SupportBean_B() or timer:interval(2.001)");
                testCase.Add("B1", "b", events.GetEvent("B1"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("b=SupportBean_B(Id='B3') or timer:interval(8.500)");
                testCase.Add("D2");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(8.500) or timer:interval(7.500)");
                testCase.Add("F1");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(999999 msec) or g=SupportBean_G");
                testCase.Add("G1", "g", events.GetEvent("G1"));
                testCaseList.AddTest(testCase);

                // Try with an "and"
                testCase = new EventExpressionCase("b=SupportBean_B() and timer:interval(4000 msec)");
                testCase.Add("B2", "b", events.GetEvent("B1"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("b=SupportBean_B() and timer:interval(4001 msec)");
                testCase.Add("A2", "b", events.GetEvent("B1"));
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(9999999 msec) and b=SupportBean_B");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(1 msec) and b=SupportBean_B(Id='B2')");
                testCase.Add("B2", "b", events.GetEvent("B2"));
                testCaseList.AddTest(testCase);

                // Try with an "within"
                testCase = new EventExpressionCase("timer:interval(3.000) where timer:within(2.000)");
                testCaseList.AddTest(testCase);

                testCase = new EventExpressionCase("timer:interval(3.000) where timer:within (3.000)");
                testCaseList.AddTest(testCase);

                // Run all tests
                var util = new PatternTestHarness(events, testCaseList, GetType());

                util.RunTest(env);
            }
Example #27
0
        private void RunAssertionOp(EPServiceProvider epService)
        {
            EventCollection     events       = EventCollectionFactory.GetEventSetOne(0, 1000);
            var                 testCaseList = new CaseList();
            EventExpressionCase testCase;

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " and not d=" + EVENT_D_CLASS);
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            string text  = "select * from pattern [every b=" + EVENT_B_CLASS + " and not g=" + EVENT_G_CLASS + "]";
            var    model = new EPStatementObjectModel();

            model.SelectClause = SelectClause.CreateWildcard();
            PatternExpr pattern = Patterns.And()
                                  .Add(Patterns.EveryFilter(EVENT_B_CLASS, "b"))
                                  .Add(Patterns.NotFilter(EVENT_G_CLASS, "g"));

            model.FromClause = FromClause.Create(PatternStream.Create(pattern));
            model            = (EPStatementObjectModel)SerializableObjectCopier.Copy(epService.Container, model);
            Assert.AreEqual(text, model.ToEPL());
            testCase = new EventExpressionCase(model);
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + " and not g=" + EVENT_G_CLASS);
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every b=" + EVENT_B_CLASS + " and not d=" + EVENT_D_CLASS);
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " and not a=" + EVENT_A_CLASS + "(id='A1')");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("b=" + EVENT_B_CLASS + " and not a2=" + EVENT_A_CLASS + "(id='A2')");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " and not b3=" + EVENT_B_CLASS + "(id='B3'))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B2", "b", events.GetEvent("B2"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " or not " + EVENT_D_CLASS + "())");
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (every b=" + EVENT_B_CLASS + " and not " + EVENT_B_CLASS + "(id='B2'))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " and not " + EVENT_B_CLASS + "(id='B2'))");
            testCase.Add("B1", "b", events.GetEvent("B1"));
            testCase.Add("B3", "b", events.GetEvent("B3"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(b=" + EVENT_B_CLASS + " -> d=" + EVENT_D_CLASS + ") and " +
                                               " not " + EVENT_A_CLASS);
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("(b=" + EVENT_B_CLASS + " -> d=" + EVENT_D_CLASS + ") and " +
                                               " not " + EVENT_G_CLASS);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " -> d=" + EVENT_D_CLASS + ") and " +
                                               " not " + EVENT_G_CLASS);
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCaseList.AddTest(testCase);

            testCase = new EventExpressionCase("every (b=" + EVENT_B_CLASS + " -> d=" + EVENT_D_CLASS + ") and " +
                                               " not " + EVENT_G_CLASS + "(id='x')");
            testCase.Add("D1", "b", events.GetEvent("B1"), "d", events.GetEvent("D1"));
            testCase.Add("D3", "b", events.GetEvent("B3"), "d", events.GetEvent("D3"));
            testCaseList.AddTest(testCase);

            var util = new PatternTestHarness(events, testCaseList, this.GetType());

            util.RunTest(epService);
        }
Example #28
0
 /// <summary>Ctor.</summary>
 /// <param name="objectModel">of the statement</param>
 /// <param name="substitutionParams">a map of parameter index and parameter</param>
 public StatementSpecUnMapResult(EPStatementObjectModel objectModel, IList <SubstitutionParameterExpressionBase> substitutionParams)
 {
     _objectModel        = objectModel;
     _substitutionParams = substitutionParams;
 }
Example #29
0
        private EPStatement TryAssertsVariant(EPServiceProvider epService, string stmtText, EPStatementObjectModel model, string typeName)
        {
            // Attach listener to feed
            EPStatement stmt;

            if (model != null)
            {
                stmt = epService.EPAdministrator.Create(model, "s1");
            }
            else
            {
                stmt = epService.EPAdministrator.CreateEPL(stmtText);
            }
            var feedListener = new SupportUpdateListener();

            stmt.Events += feedListener.Update;

            // send event for joins to match on
            epService.EPRuntime.SendEvent(new SupportBean_A("myId"));

            // Attach delta statement to statement and add listener
            stmtText = "select MIN(delta) as minD, max(delta) as maxD " +
                       "from " + typeName + "#time(60)";
            EPStatement stmtTwo             = epService.EPAdministrator.CreateEPL(stmtText);
            var         resultListenerDelta = new SupportUpdateListener();

            stmtTwo.Events += resultListenerDelta.Update;

            // Attach prodict statement to statement and add listener
            stmtText = "select min(product) as minP, max(product) as maxP " +
                       "from " + typeName + "#time(60)";
            EPStatement stmtThree             = epService.EPAdministrator.CreateEPL(stmtText);
            var         resultListenerProduct = new SupportUpdateListener();

            stmtThree.Events += resultListenerProduct.Update;

            epService.EPRuntime.SendEvent(new CurrentTimeEvent(0)); // Set the time to 0 seconds

            // send events
            SendEvent(epService, 20, 10);
            AssertReceivedFeed(feedListener, 10, 200);
            AssertReceivedMinMax(resultListenerDelta, resultListenerProduct, 10, 10, 200, 200);

            SendEvent(epService, 50, 25);
            AssertReceivedFeed(feedListener, 25, 25 * 50);
            AssertReceivedMinMax(resultListenerDelta, resultListenerProduct, 10, 25, 200, 1250);

            SendEvent(epService, 5, 2);
            AssertReceivedFeed(feedListener, 3, 2 * 5);
            AssertReceivedMinMax(resultListenerDelta, resultListenerProduct, 3, 25, 10, 1250);

            epService.EPRuntime.SendEvent(new CurrentTimeEvent(10 * 1000)); // Set the time to 10 seconds

            SendEvent(epService, 13, 1);
            AssertReceivedFeed(feedListener, 12, 13);
            AssertReceivedMinMax(resultListenerDelta, resultListenerProduct, 3, 25, 10, 1250);

            epService.EPRuntime.SendEvent(new CurrentTimeEvent(61 * 1000)); // Set the time to 61 seconds
            AssertReceivedMinMax(resultListenerDelta, resultListenerProduct, 12, 12, 13, 13);

            return(stmt);
        }
Example #30
0
        private void RunAssertionHashSegmented(EPServiceProvider epService)
        {
            // Comment-in to see CRC32 code.
            for (int i = 0; i < 10; i++)
            {
                string key      = "E" + i;
                long   code     = SupportHashCodeFuncGranularCRC32.ComputeCrc32(key) % 4;
                int    hashCode = i.GetHashCode() % 4;
                //Log.Info(key + " code " + code + " hashCode " + hashCode);
            }

            // test CRC32 Hash
            FilterServiceSPI filterSPI = (FilterServiceSPI)((EPServiceProviderSPI)epService).FilterService;
            string           ctx       = "HashSegmentedContext";
            string           eplCtx    = "@Name('context') create context " + ctx + " as " +
                                         "coalesce consistent_hash_crc32(TheString) from SupportBean " +
                                         "granularity 4 " +
                                         "preallocate";

            epService.EPAdministrator.CreateEPL(eplCtx);

            string eplStmt = "context " + ctx + " " +
                             "select context.name as c0, TheString as c1, sum(IntPrimitive) as c2 from SupportBean#keepall group by TheString";
            EPStatementSPI statement = (EPStatementSPI)epService.EPAdministrator.CreateEPL(eplStmt);
            var            listener  = new SupportUpdateListener();

            statement.Events += listener.Update;
            Assert.AreEqual(4, filterSPI.FilterCountApprox);
            AgentInstanceAssertionUtil.AssertInstanceCounts(statement.StatementContext, 4, 0, 0, 0);

            TryAssertionHash(epService, listener, ctx, statement, new SupportHashCodeFuncGranularCRC32(4).CodeFor);
            Assert.AreEqual(0, filterSPI.FilterCountApprox);

            // test same with SODA
            EPStatementObjectModel modelCtx = epService.EPAdministrator.CompileEPL(eplCtx);

            Assert.AreEqual(eplCtx, modelCtx.ToEPL());
            EPStatement stmtCtx = epService.EPAdministrator.Create(modelCtx);

            Assert.AreEqual(eplCtx, stmtCtx.Text);

            statement         = (EPStatementSPI)epService.EPAdministrator.CreateEPL(eplStmt);
            statement.Events += listener.Update;
            TryAssertionHash(epService, listener, ctx, statement, new SupportHashCodeFuncGranularCRC32(4).CodeFor);

            // test with Java-hashCode string hash
            epService.EPAdministrator.CreateEPL("@Name('context') create context " + ctx + " " +
                                                "coalesce hash_code(TheString) from SupportBean " +
                                                "granularity 6 " +
                                                "preallocate");

            statement = (EPStatementSPI)epService.EPAdministrator.CreateEPL("context " + ctx + " " +
                                                                            "select context.name as c0, TheString as c1, sum(IntPrimitive) as c2 from SupportBean#keepall group by TheString");
            statement.Events += listener.Update;
            Assert.AreEqual(6, filterSPI.FilterCountApprox);
            AgentInstanceAssertionUtil.AssertInstanceCounts(statement.StatementContext, 6, 0, 0, 0);

            TryAssertionHash(epService, listener, ctx, statement, HashCodeFuncGranularInternalHash(6));
            Assert.AreEqual(0, filterSPI.FilterCountApprox);

            // test no pre-allocate
            epService.EPAdministrator.CreateEPL("@Name('context') create context " + ctx + " " +
                                                "coalesce hash_code(TheString) from SupportBean " +
                                                "granularity 16 ");

            statement = (EPStatementSPI)epService.EPAdministrator.CreateEPL("context " + ctx + " " +
                                                                            "select context.name as c0, TheString as c1, sum(IntPrimitive) as c2 from SupportBean#keepall group by TheString");
            statement.Events += listener.Update;
            Assert.AreEqual(1, filterSPI.FilterCountApprox);
            AgentInstanceAssertionUtil.AssertInstanceCounts(statement.StatementContext, 0, 0, 0, 0);

            TryAssertionHash(epService, listener, ctx, statement, HashCodeFuncGranularInternalHash(16));
            Assert.AreEqual(0, filterSPI.FilterCountApprox);
        }