private void RunAssertionSimpleNoParameter(EPServiceProvider epService)
        {
            string stmt = "select * from " + typeof(SupportBean).FullName + "(TheString=\"e1\")";
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(stmt);

            EPStatement statement   = epService.EPAdministrator.Create(prepared);
            var         listenerOne = new SupportUpdateListener();

            statement.Events += listenerOne.Update;
            Assert.AreEqual("select * from " + typeof(SupportBean).FullName + "(TheString=\"e1\")", statement.Text);

            statement = epService.EPAdministrator.Create(prepared);
            var listenerTwo = new SupportUpdateListener();

            statement.Events += listenerTwo.Update;
            Assert.AreEqual("select * from com.espertech.esper.supportregression.bean.SupportBean(TheString=\"e1\")", statement.Text);

            epService.EPRuntime.SendEvent(new SupportBean("e2", 10));
            Assert.IsFalse(listenerOne.IsInvoked);
            Assert.IsFalse(listenerTwo.IsInvoked);

            epService.EPRuntime.SendEvent(new SupportBean("e1", 10));
            Assert.IsTrue(listenerOne.GetAndClearIsInvoked());
            Assert.IsTrue(listenerTwo.GetAndClearIsInvoked());

            statement.Dispose();
        }
예제 #2
0
        public void TestInvalidSetObject()
        {
            String stmt = "select * from " + typeof(SupportBean).FullName + "(TheString=?)";
            EPPreparedStatement prepared = _epService.EPAdministrator.PrepareEPL(stmt);

            try
            {
                prepared.SetObject(0, "");
                Assert.Fail();
            }
            catch (ArgumentException ex)
            {
                Assert.AreEqual("Substitution parameter index starts at 1", ex.Message);
            }

            try
            {
                prepared.SetObject(2, "");
                Assert.Fail();
            }
            catch (ArgumentException ex)
            {
                Assert.AreEqual("Invalid substitution parameter index of 2 supplied, the maximum for this statement is 1", ex.Message);
            }
        }
예제 #3
0
        public void TestPattern()
        {
            String stmt = typeof(SupportBean).FullName + "(TheString=?)";
            EPPreparedStatement prepared = _epService.EPAdministrator.PreparePattern(stmt);

            prepared.SetObject(1, "e1");
            EPStatement statement = _epService.EPAdministrator.Create(prepared);

            statement.Events += _listenerOne.Update;
            Assert.AreEqual("select * from pattern [com.espertech.esper.support.bean.SupportBean(TheString=\"e1\")]", statement.Text);

            prepared.SetObject(1, "e2");
            statement         = _epService.EPAdministrator.Create(prepared);
            statement.Events += _listenerTwo.Update;
            Assert.AreEqual("select * from pattern [com.espertech.esper.support.bean.SupportBean(TheString=\"e2\")]", statement.Text);

            _epService.EPRuntime.SendEvent(new SupportBean("e2", 10));
            Assert.IsFalse(_listenerOne.IsInvoked);
            Assert.IsTrue(_listenerTwo.GetAndClearIsInvoked());

            _epService.EPRuntime.SendEvent(new SupportBean("e1", 10));
            Assert.IsFalse(_listenerTwo.IsInvoked);
            Assert.IsTrue(_listenerOne.GetAndClearIsInvoked());

            statement.Dispose();
            prepared = _epService.EPAdministrator.PrepareEPL("create window MyWindow.win:time(?) as " + typeof(SupportBean).FullName);
            prepared.SetObject(1, 300);
            statement = _epService.EPAdministrator.Create(prepared);
            Assert.AreEqual("create window MyWindow.win:time(300) as select * from com.espertech.esper.support.bean.SupportBean", statement.Text);
        }
        private void RunAssertionNamedParameter(EPServiceProvider epService)
        {
            epService.EPAdministrator.Configuration.AddEventType <SupportBean>();

            string epl = "select ?:my/value/int as c0 from SupportBean(TheString = ?:somevalue, IntPrimitive=?:my/value/int, LongPrimitive=?:/my/value/long)";
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(epl);

            prepared.SetObject("somevalue", "E1");
            prepared.SetObject("my/value/int", 10);
            prepared.SetObject("/my/value/long", 100L);
            var listenerOne = new SupportUpdateListener();

            epService.EPAdministrator.Create(prepared).Events += listenerOne.Update;

            SupportBean @event = new SupportBean("E1", 10);

            @event.LongPrimitive = 100;
            epService.EPRuntime.SendEvent(@event);
            EPAssertionUtil.AssertProps(listenerOne.AssertOneGetNewAndReset(), "c0".Split(','), new object[] { 10 });

            SupportMessageAssertUtil.TryInvalid(epService, "select ?,?:a from SupportBean",
                                                "Inconsistent use of substitution parameters, expecting all substitutions to either all provide a name or provide no name");

            SupportMessageAssertUtil.TryInvalid(epService, "select ?:select from SupportBean",
                                                "Incorrect syntax near ':' ('select' is a reserved keyword) at line 1 column 8 near reserved keyword 'select' [");

            epService.EPAdministrator.DestroyAllStatements();
        }
예제 #5
0
        /// <summary>
        /// Creates and starts a prepared statement.
        /// <para/>
        /// The statement name is optimally a unique name. If a statement of the same name
        /// has already been created, the engine assigns a postfix to create a unique
        /// statement name.
        /// <para/>
        /// Accepts an application defined user data object associated with the statement.
        /// The <em>user object</em> is a single, unnamed field that is stored with every
        /// statement. Applications may put arbitrary objects in this field or a null value.
        /// </summary>
        /// <param name="prepared">is the prepared statement for which all substitution values have been provided</param>
        /// <param name="statementName">is the name to assign to the statement for use in managing the statement</param>
        /// <param name="userObject">is the application-defined user object</param>
        /// <returns>
        /// EPStatement to poll data from or to add listeners to
        /// </returns>
        /// <throws>EPException when the prepared statement was not valid</throws>
        public EPStatement Create(EPPreparedStatement prepared, string statementName, object userObject)
        {
            if (prepared == null)
            {
                throw new ArgumentNullException("prepared");
            }

            var cprepared = prepared as CatalystPreparedStatement;

            if (cprepared == null)
            {
                throw new ArgumentException("prepared statement was of incorrect type", "prepared");
            }

            using (var wrapper = CreateControlManager())
            {
                return(WithExceptionHandling(
                           delegate
                {
                    var controlManager = wrapper.Channel;
                    var statementArgs = new StatementCreationArgs();
                    statementArgs.PreparedStatementId = cprepared.Id;
                    statementArgs.StatementName = statementName;
                    statementArgs.StatementText = null;

                    var statement = controlManager.CreatePrepared(_instanceId, statementArgs);
                    var statementWrapper = new CatalystStatement(_adapter, statement, userObject);
                    BindStatement(statementWrapper);

                    return statementWrapper;
                }));
            }
        }
        private void RunAssertionPattern(EPServiceProvider epService)
        {
            string stmt = typeof(SupportBean).FullName + "(TheString=?)";
            EPPreparedStatement prepared = epService.EPAdministrator.PreparePattern(stmt);

            prepared.SetObject(1, "e1");
            EPStatement statement   = epService.EPAdministrator.Create(prepared);
            var         listenerOne = new SupportUpdateListener();

            statement.Events += listenerOne.Update;
            Assert.AreEqual("select * from pattern [" + typeof(SupportBean).FullName + "(TheString=\"e1\")]", statement.Text);

            prepared.SetObject(1, "e2");
            statement = epService.EPAdministrator.Create(prepared);
            var listenerTwo = new SupportUpdateListener();

            statement.Events += listenerTwo.Update;
            Assert.AreEqual("select * from pattern [com.espertech.esper.supportregression.bean.SupportBean(TheString=\"e2\")]", statement.Text);

            epService.EPRuntime.SendEvent(new SupportBean("e2", 10));
            Assert.IsFalse(listenerOne.IsInvoked);
            Assert.IsTrue(listenerTwo.GetAndClearIsInvoked());

            epService.EPRuntime.SendEvent(new SupportBean("e1", 10));
            Assert.IsFalse(listenerTwo.IsInvoked);
            Assert.IsTrue(listenerOne.GetAndClearIsInvoked());

            statement.Dispose();
            prepared = epService.EPAdministrator.PrepareEPL("create window MyWindow#time(?) as " + typeof(SupportBean).FullName);
            prepared.SetObject(1, 300);
            statement = epService.EPAdministrator.Create(prepared);
            Assert.AreEqual("create window MyWindow#time(300) as select * from " + typeof(SupportBean).FullName, statement.Text);
        }
예제 #7
0
        private void RunAssertionIntervalPrepared(EPServiceProvider epService)
        {
            // External clocking
            SendTimer(0, epService);

            // Set up a timer:within
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(
                "select * from pattern [(every " + typeof(SupportBean).FullName +
                ") where timer:within(? days ? hours ? minutes ? seconds ? milliseconds)]");

            prepared.SetObject(1, 1);
            prepared.SetObject(2, 2);
            prepared.SetObject(3, 3);
            prepared.SetObject(4, 4);
            prepared.SetObject(5, 5);
            EPStatement statement = epService.EPAdministrator.Create(prepared);

            var testListener = new SupportUpdateListener();

            statement.Events += testListener.Update;

            TryAssertion(epService, testListener);

            statement.Dispose();
        }
예제 #8
0
        public void TestLikeRegexStringAndNull_OM()
        {
            String stmtText = "select p00 like p01 as r1, " +
                              "p00 like p01 escape \"!\" as r2, " +
                              "p02 regexp p03 as r3 " +
                              "from " + typeof(SupportBean_S0).FullName;

            EPStatementObjectModel model = new EPStatementObjectModel();

            model.SelectClause = SelectClause.Create()
                                 .Add(Expressions.Like(Expressions.Property("p00"), Expressions.Property("p01")), "r1")
                                 .Add(Expressions.Like(Expressions.Property("p00"), Expressions.Property("p01"), Expressions.Constant("!")), "r2")
                                 .Add(Expressions.Regexp(Expressions.Property("p02"), Expressions.Property("p03")), "r3");
            model.FromClause = FromClause.Create(FilterStream.Create(typeof(SupportBean_S0).FullName));
            model            = (EPStatementObjectModel)SerializableObjectCopier.Copy(model);
            Assert.AreEqual(stmtText, model.ToEPL());

            EPStatement selectTestCase = _epService.EPAdministrator.Create(model);

            selectTestCase.Events += _testListener.Update;

            RunLikeRegexStringAndNull();

            String epl = "select * from " + typeof(SupportBean).FullName + "(TheString not like \"foo%\")";
            EPPreparedStatement eps       = _epService.EPAdministrator.PrepareEPL(epl);
            EPStatement         statement = _epService.EPAdministrator.Create(eps);

            Assert.AreEqual(epl, statement.Text);

            epl       = "select * from " + typeof(SupportBean).FullName + "(TheString not regexp \"foo\")";
            eps       = _epService.EPAdministrator.PrepareEPL(epl);
            statement = _epService.EPAdministrator.Create(eps);
            Assert.AreEqual(epl, statement.Text);
        }
        private void RunAssertionInvalidParameterNotSet(EPServiceProvider epService)
        {
            string stmt = "select * from " + typeof(SupportBean).FullName + "(TheString=?)";
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(stmt);

            try {
                epService.EPAdministrator.Create(prepared);
                Assert.Fail();
            } catch (EPException ex) {
                Assert.AreEqual("Substitution parameter value for index 1 not set, please provide a value for this parameter", ex.Message);
            }

            stmt     = "select * from " + typeof(SupportBean).FullName + "(TheString in (?, ?))";
            prepared = epService.EPAdministrator.PrepareEPL(stmt);

            try {
                epService.EPAdministrator.Create(prepared);
                Assert.Fail();
            } catch (EPException) {
                // expected
            }

            try {
                prepared.SetObject(1, "");
                epService.EPAdministrator.Create(prepared);
                Assert.Fail();
            } catch (EPException) {
                // expected
            }

            // success
            prepared.SetObject(2, "");
            epService.EPAdministrator.Create(prepared).Dispose();
        }
예제 #10
0
        public EPStatement Create(EPPreparedStatement prepared, string statementName, object userobject, int?optionalStatementId)
        {
            var impl = (EPPreparedStatementImpl)prepared;

            var statementSpec = MapSODAToRaw(impl.Model);
            var eplStatement  = impl.Model.ToEPL();

            return(_services.StatementLifecycleSvc.CreateAndStart(statementSpec, eplStatement, false, statementName, userobject, null, optionalStatementId, impl.Model));
        }
예제 #11
0
        public EPStatement Create(EPPreparedStatement prepared, String statementName, Object userObject, String statementId)
        {
            EPPreparedStatementImpl impl = (EPPreparedStatementImpl)prepared;

            StatementSpecRaw statementSpec = MapSODAToRaw(impl.Model);
            String           eplStatement  = impl.Model.ToEPL();

            return(_services.StatementLifecycleSvc.CreateAndStart(statementSpec, eplStatement, false, statementName, userObject, null, statementId, impl.Model));
        }
        private void RunSimpleTwoParameter(EPServiceProvider epService, string stmtText, string statementName, bool compareText)
        {
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(stmtText);

            prepared.SetObject(1, "e1");
            prepared.SetObject(2, 1);
            EPStatement statement;

            if (statementName != null)
            {
                statement = epService.EPAdministrator.Create(prepared, statementName);
            }
            else
            {
                statement = epService.EPAdministrator.Create(prepared);
            }
            var listenerOne = new SupportUpdateListener();

            statement.Events += listenerOne.Update;
            if (compareText)
            {
                Assert.AreEqual("select * from " + typeof(SupportBean).FullName + "(TheString=\"e1\" and IntPrimitive=1)", statement.Text);
            }

            prepared.SetObject(1, "e2");
            prepared.SetObject(2, 2);
            if (statementName != null)
            {
                statement = epService.EPAdministrator.Create(prepared, statementName + "_1");
            }
            else
            {
                statement = epService.EPAdministrator.Create(prepared);
            }
            var listenerTwo = new SupportUpdateListener();

            statement.Events += listenerTwo.Update;
            if (compareText)
            {
                Assert.AreEqual("select * from " + typeof(SupportBean).FullName + "(TheString=\"e2\" and IntPrimitive=2)", statement.Text);
            }

            epService.EPRuntime.SendEvent(new SupportBean("e2", 2));
            Assert.IsFalse(listenerOne.IsInvoked);
            Assert.IsTrue(listenerTwo.GetAndClearIsInvoked());

            epService.EPRuntime.SendEvent(new SupportBean("e1", 1));
            Assert.IsFalse(listenerTwo.IsInvoked);
            Assert.IsTrue(listenerOne.GetAndClearIsInvoked());

            epService.EPRuntime.SendEvent(new SupportBean("e1", 2));
            Assert.IsFalse(listenerOne.IsInvoked);
            Assert.IsFalse(listenerTwo.IsInvoked);

            statement.Dispose();
        }
        private void RunAssertionSimpleOneParameter(EPServiceProvider epService)
        {
            string stmt = "select * from " + typeof(SupportBean).FullName + "(TheString=?)";
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(stmt);

            prepared.SetObject(1, "e1");
            EPStatement statement   = epService.EPAdministrator.Create(prepared);
            var         listenerOne = new SupportUpdateListener();

            statement.Events += listenerOne.Update;
            Assert.AreEqual("select * from " + typeof(SupportBean).FullName + "(TheString=\"e1\")", statement.Text);

            prepared.SetObject(1, "e2");
            statement = epService.EPAdministrator.Create(prepared);
            var listenerTwo = new SupportUpdateListener();

            statement.Events += listenerTwo.Update;
            Assert.AreEqual("select * from com.espertech.esper.supportregression.bean.SupportBean(TheString=\"e2\")", statement.Text);

            epService.EPRuntime.SendEvent(new SupportBean("e2", 10));
            Assert.IsFalse(listenerOne.IsInvoked);
            Assert.IsTrue(listenerTwo.GetAndClearIsInvoked());

            epService.EPRuntime.SendEvent(new SupportBean("e1", 10));
            Assert.IsFalse(listenerTwo.IsInvoked);
            Assert.IsTrue(listenerOne.GetAndClearIsInvoked());

            // Test substitution parameter and inheritance in key matching
            epService.EPAdministrator.Configuration.AddEventType("MyEventOne", typeof(MyEventOne));
            string epl = "select * from MyEventOne(key = ?)";
            EPPreparedStatement preparedStatement = epService.EPAdministrator.PrepareEPL(epl);
            var lKey = new MyObjectKeyInterface();

            preparedStatement.SetObject(1, lKey);
            statement         = epService.EPAdministrator.Create(preparedStatement);
            statement.Events += listenerOne.Update;

            epService.EPRuntime.SendEvent(new MyEventOne(lKey));
            Assert.IsTrue(listenerOne.GetAndClearIsInvoked());

            // Test substitution parameter and concrete subclass in key matching
            epService.EPAdministrator.Configuration.AddEventType("MyEventTwo", typeof(MyEventTwo));
            epl = "select * from MyEventTwo where key = ?";
            preparedStatement = epService.EPAdministrator.PrepareEPL(epl);
            var cKey = new MyObjectKeyConcrete();

            preparedStatement.SetObject(1, cKey);
            statement         = epService.EPAdministrator.Create(preparedStatement);
            statement.Events += listenerOne.Update;

            epService.EPRuntime.SendEvent(new MyEventTwo(cKey));
            Assert.IsTrue(listenerOne.GetAndClearIsInvoked());

            epService.EPAdministrator.DestroyAllStatements();
        }
        private void RunAssertionInvalidNoParameters(EPServiceProvider epService)
        {
            string stmt = "select * from " + typeof(SupportBean).FullName + "(TheString='ABC')";
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(stmt);

            try {
                prepared.SetObject(1, -1);
                Assert.Fail();
            } catch (ArgumentException ex) {
                Assert.AreEqual("Statement does not have substitution parameters indicated by the '?' character", ex.Message);
            }
        }
        private void RunAssertionInvalidParameterType(EPServiceProvider epService)
        {
            string stmt = "select * from " + typeof(SupportBean).FullName + "(TheString=?)";
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(stmt);

            try {
                prepared.SetObject(1, -1);
                epService.EPAdministrator.Create(prepared);
                Assert.Fail();
            } catch (EPException ex) {
                SupportMessageAssertUtil.AssertMessage(ex, "Failed to validate filter expression 'TheString=-1': Implicit conversion from datatype '" + Name.Clean <int>() + "' to '" + Name.Clean <string>() + "' is not allowed [");
            }
        }
예제 #16
0
        private void RunSimpleTwoParameter(String stmtText, String statementName, bool compareText)
        {
            EPPreparedStatement prepared = _epService.EPAdministrator.PrepareEPL(stmtText);

            prepared.SetObject(1, "e1");
            prepared.SetObject(2, 1);
            EPStatement statement;

            if (statementName != null)
            {
                statement = _epService.EPAdministrator.Create(prepared, statementName);
            }
            else
            {
                statement = _epService.EPAdministrator.Create(prepared);
            }
            statement.Events += _listenerOne.Update;
            if (compareText)
            {
                Assert.AreEqual("select * from com.espertech.esper.support.bean.SupportBean(TheString=\"e1\" and IntPrimitive=1)", statement.Text);
            }

            prepared.SetObject(1, "e2");
            prepared.SetObject(2, 2);
            if (statementName != null)
            {
                statement = _epService.EPAdministrator.Create(prepared, statementName + "_1");
            }
            else
            {
                statement = _epService.EPAdministrator.Create(prepared);
            }
            statement.Events += _listenerTwo.Update;
            if (compareText)
            {
                Assert.AreEqual("select * from com.espertech.esper.support.bean.SupportBean(TheString=\"e2\" and IntPrimitive=2)", statement.Text);
            }

            _epService.EPRuntime.SendEvent(new SupportBean("e2", 2));
            Assert.IsFalse(_listenerOne.IsInvoked);
            Assert.IsTrue(_listenerTwo.GetAndClearIsInvoked());

            _epService.EPRuntime.SendEvent(new SupportBean("e1", 1));
            Assert.IsFalse(_listenerTwo.IsInvoked);
            Assert.IsTrue(_listenerOne.GetAndClearIsInvoked());

            _epService.EPRuntime.SendEvent(new SupportBean("e1", 2));
            Assert.IsFalse(_listenerOne.IsInvoked);
            Assert.IsFalse(_listenerTwo.IsInvoked);
        }
예제 #17
0
        public void TestSimpleOneParameter()
        {
            String stmt = "select * from " + typeof(SupportBean).FullName + "(TheString=?)";
            EPPreparedStatement prepared = _epService.EPAdministrator.PrepareEPL(stmt);

            prepared.SetObject(1, "e1");
            EPStatement statement = _epService.EPAdministrator.Create(prepared);

            statement.Events += _listenerOne.Update;
            Assert.AreEqual("select * from " + Name.Of <SupportBean>() + "(TheString=\"e1\")", statement.Text);

            prepared.SetObject(1, "e2");
            statement         = _epService.EPAdministrator.Create(prepared);
            statement.Events += _listenerTwo.Update;
            Assert.AreEqual("select * from " + Name.Of <SupportBean>() + "(TheString=\"e2\")", statement.Text);

            _epService.EPRuntime.SendEvent(new SupportBean("e2", 10));
            Assert.IsFalse(_listenerOne.IsInvoked);
            Assert.IsTrue(_listenerTwo.GetAndClearIsInvoked());

            _epService.EPRuntime.SendEvent(new SupportBean("e1", 10));
            Assert.IsFalse(_listenerTwo.IsInvoked);
            Assert.IsTrue(_listenerOne.GetAndClearIsInvoked());

            // Test substitution parameter and inheritance in key matching
            _epService.EPAdministrator.Configuration.AddEventType("MyEventOne", typeof(MyEventOne));
            String epl = "select * from MyEventOne(key = ?)";
            EPPreparedStatement  preparedStatement = _epService.EPAdministrator.PrepareEPL(epl);
            MyObjectKeyInterface lKey = new MyObjectKeyInterface();

            preparedStatement.SetObject(1, lKey);
            statement         = _epService.EPAdministrator.Create(preparedStatement);
            statement.Events += _listenerOne.Update;

            _epService.EPRuntime.SendEvent(new MyEventOne(lKey));
            Assert.IsTrue(_listenerOne.GetAndClearIsInvoked());

            // Test substitution parameter and concrete subclass in key matching
            _epService.EPAdministrator.Configuration.AddEventType("MyEventTwo", typeof(MyEventTwo));
            epl = "select * from MyEventTwo where key = ?";
            preparedStatement = _epService.EPAdministrator.PrepareEPL(epl);
            MyObjectKeyConcrete cKey = new MyObjectKeyConcrete();

            preparedStatement.SetObject(1, cKey);
            statement         = _epService.EPAdministrator.Create(preparedStatement);
            statement.Events += _listenerOne.Update;

            _epService.EPRuntime.SendEvent(new MyEventTwo(cKey));
            Assert.IsTrue(_listenerOne.GetAndClearIsInvoked());
        }
예제 #18
0
        public void TestInvalidParameterType()
        {
            String stmt = "select * from " + typeof(SupportBean).FullName + "(TheString=?)";
            EPPreparedStatement prepared = _epService.EPAdministrator.PrepareEPL(stmt);

            try
            {
                prepared.SetObject(1, -1);
                _epService.EPAdministrator.Create(prepared);
                Assert.Fail();
            }
            catch (EPException ex)
            {
                Assert.AreEqual(string.Format("Failed to validate filter expression 'TheString=-1': Implicit conversion from datatype '{0}' to 'System.String' is not allowed [select * from com.espertech.esper.support.bean.SupportBean(TheString=-1)]", typeof(int?).FullName), ex.Message);
            }
        }
        private void RunAssertionMethodInvocation(EPServiceProvider epService)
        {
            epService.EPAdministrator.Configuration.AddEventType <SupportBean>();
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(
                "select * from SupportBean(TheString = ?.get_TheString())");

            prepared.SetObject(1, new SupportBean("E1", 0));
            var listenerOne = new SupportUpdateListener();

            epService.EPAdministrator.Create(prepared).Events += listenerOne.Update;

            epService.EPRuntime.SendEvent(new SupportBean("E1", 0));
            Assert.IsTrue(listenerOne.IsInvoked);

            epService.EPAdministrator.DestroyAllStatements();
        }
        private void RunAssertionSubselect(EPServiceProvider epService)
        {
            string stmtText = "select (" +
                              "select symbol from " + typeof(SupportMarketDataBean).FullName + "(symbol=?)#lastevent) as mysymbol from " +
                              typeof(SupportBean).FullName;

            EPPreparedStatement preparedStmt = epService.EPAdministrator.PrepareEPL(stmtText);

            preparedStmt.SetObject(1, "S1");
            EPStatement stmtS1      = epService.EPAdministrator.Create(preparedStmt);
            var         listenerOne = new SupportUpdateListener();

            stmtS1.Events += listenerOne.Update;

            preparedStmt.SetObject(1, "S2");
            EPStatement stmtS2      = epService.EPAdministrator.Create(preparedStmt);
            var         listenerTwo = new SupportUpdateListener();

            stmtS2.Events += listenerTwo.Update;

            // test no event, should return null
            epService.EPRuntime.SendEvent(new SupportBean("e1", -1));
            Assert.AreEqual(null, listenerOne.AssertOneGetNewAndReset().Get("mysymbol"));
            Assert.AreEqual(null, listenerTwo.AssertOneGetNewAndReset().Get("mysymbol"));

            // test one non-matching event
            epService.EPRuntime.SendEvent(new SupportMarketDataBean("XX", 0, 0L, ""));
            epService.EPRuntime.SendEvent(new SupportBean("e1", -1));
            Assert.AreEqual(null, listenerOne.AssertOneGetNewAndReset().Get("mysymbol"));
            Assert.AreEqual(null, listenerTwo.AssertOneGetNewAndReset().Get("mysymbol"));

            // test S2 matching event
            epService.EPRuntime.SendEvent(new SupportMarketDataBean("S2", 0, 0L, ""));
            epService.EPRuntime.SendEvent(new SupportBean("e1", -1));
            Assert.AreEqual(null, listenerOne.AssertOneGetNewAndReset().Get("mysymbol"));
            Assert.AreEqual("S2", listenerTwo.AssertOneGetNewAndReset().Get("mysymbol"));

            // test S1 matching event
            epService.EPRuntime.SendEvent(new SupportMarketDataBean("S1", 0, 0L, ""));
            epService.EPRuntime.SendEvent(new SupportBean("e1", -1));
            Assert.AreEqual("S1", listenerOne.AssertOneGetNewAndReset().Get("mysymbol"));
            Assert.AreEqual("S2", listenerTwo.AssertOneGetNewAndReset().Get("mysymbol"));

            epService.EPAdministrator.DestroyAllStatements();
        }
예제 #21
0
        private void TrySubstitutionParameter(Object parameter)
        {
            SupportUpdateListener listener = new SupportUpdateListener();

            _epService.EPAdministrator.Configuration.AddEventType <SupportBean>();
            EPPreparedStatement prepared = _epService.EPAdministrator.PrepareEPL("select * from SupportBean(?.sequenceEqual({1, IntPrimitive, 100}))");

            prepared.SetObject(1, parameter);
            _epService.EPAdministrator.Create(prepared).Events += listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 10));
            Assert.IsTrue(listener.GetAndClearIsInvoked());

            _epService.EPRuntime.SendEvent(new SupportBean("E2", 20));
            Assert.IsFalse(listener.GetAndClearIsInvoked());

            _epService.EPAdministrator.DestroyAllStatements();
        }
예제 #22
0
        public void TestSubselect()
        {
            String stmtText = "select (" +
                              "select symbol from " + typeof(SupportMarketDataBean).FullName + "(symbol=?).std:lastevent()) as mysymbol from " +
                              typeof(SupportBean).FullName;

            EPPreparedStatement preparedStmt = _epService.EPAdministrator.PrepareEPL(stmtText);

            preparedStmt.SetObject(1, "S1");
            EPStatement stmtS1 = _epService.EPAdministrator.Create(preparedStmt);

            stmtS1.Events += _listenerOne.Update;

            preparedStmt.SetObject(1, "S2");
            EPStatement stmtS2 = _epService.EPAdministrator.Create(preparedStmt);

            stmtS2.Events += _listenerTwo.Update;

            // test no event, should return null
            _epService.EPRuntime.SendEvent(new SupportBean("e1", -1));
            Assert.AreEqual(null, _listenerOne.AssertOneGetNewAndReset().Get("mysymbol"));
            Assert.AreEqual(null, _listenerTwo.AssertOneGetNewAndReset().Get("mysymbol"));

            // test one non-matching event
            _epService.EPRuntime.SendEvent(new SupportMarketDataBean("XX", 0, 0L, ""));
            _epService.EPRuntime.SendEvent(new SupportBean("e1", -1));
            Assert.AreEqual(null, _listenerOne.AssertOneGetNewAndReset().Get("mysymbol"));
            Assert.AreEqual(null, _listenerTwo.AssertOneGetNewAndReset().Get("mysymbol"));

            // test S2 matching event
            _epService.EPRuntime.SendEvent(new SupportMarketDataBean("S2", 0, 0L, ""));
            _epService.EPRuntime.SendEvent(new SupportBean("e1", -1));
            Assert.AreEqual(null, _listenerOne.AssertOneGetNewAndReset().Get("mysymbol"));
            Assert.AreEqual("S2", _listenerTwo.AssertOneGetNewAndReset().Get("mysymbol"));

            // test S1 matching event
            _epService.EPRuntime.SendEvent(new SupportMarketDataBean("S1", 0, 0L, ""));
            _epService.EPRuntime.SendEvent(new SupportBean("e1", -1));
            Assert.AreEqual("S1", _listenerOne.AssertOneGetNewAndReset().Get("mysymbol"));
            Assert.AreEqual("S2", _listenerTwo.AssertOneGetNewAndReset().Get("mysymbol"));
        }
예제 #23
0
        public void TestTimeWindowPreparedStmt()
        {
            SendTimer(0);
            String text = "select rstream TheString from SupportBean.win:time(?)";
            EPPreparedStatement prepared = _epService.EPAdministrator.PrepareEPL(
                text);

            prepared.SetObject(1, 4);
            EPStatement           stmtOne     = _epService.EPAdministrator.Create(prepared);
            SupportUpdateListener listenerOne = new SupportUpdateListener();

            stmtOne.Events += listenerOne.Update;

            prepared.SetObject(1, 3);
            EPStatement           stmtTwo     = _epService.EPAdministrator.Create(prepared);
            SupportUpdateListener listenerTwo = new SupportUpdateListener();

            stmtTwo.Events += listenerTwo.Update;

            RunAssertion(listenerOne, listenerTwo);
        }
예제 #24
0
        public void TestSimpleNoParameter()
        {
            String stmt = "select * from " + typeof(SupportBean).FullName + "(TheString=\"e1\")";
            EPPreparedStatement prepared = _epService.EPAdministrator.PrepareEPL(stmt);

            EPStatement statement = _epService.EPAdministrator.Create(prepared);

            statement.Events += _listenerOne.Update;
            Assert.AreEqual("select * from com.espertech.esper.support.bean.SupportBean(TheString=\"e1\")", statement.Text);

            statement         = _epService.EPAdministrator.Create(prepared);
            statement.Events += _listenerTwo.Update;
            Assert.AreEqual("select * from com.espertech.esper.support.bean.SupportBean(TheString=\"e1\")", statement.Text);

            _epService.EPRuntime.SendEvent(new SupportBean("e2", 10));
            Assert.IsFalse(_listenerOne.IsInvoked);
            Assert.IsFalse(_listenerTwo.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean("e1", 10));
            Assert.IsTrue(_listenerOne.GetAndClearIsInvoked());
            Assert.IsTrue(_listenerTwo.GetAndClearIsInvoked());
        }
예제 #25
0
        private void RunAssertionTimeWindowPreparedStmt(EPServiceProvider epService)
        {
            SendTimer(epService, 0);
            string text = "select rstream TheString from SupportBean#time(?)";
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(text);

            prepared.SetObject(1, 4);
            EPStatement stmtOne     = epService.EPAdministrator.Create(prepared);
            var         listenerOne = new SupportUpdateListener();

            stmtOne.Events += listenerOne.Update;

            prepared.SetObject(1, 3);
            EPStatement stmtTwo     = epService.EPAdministrator.Create(prepared);
            var         listenerTwo = new SupportUpdateListener();

            stmtTwo.Events += listenerTwo.Update;

            RunAssertion(epService, listenerOne, listenerTwo);

            stmtOne.Dispose();
            stmtTwo.Dispose();
        }
예제 #26
0
        private void RunAssertionSimpleIntAndEnumWrite(EPServiceProvider epService)
        {
            string      expr     = "select * from " + typeof(SupportBean).FullName + "(IntPrimitive in (1, 10))";
            EPStatement stmt     = epService.EPAdministrator.CreateEPL(expr);
            var         listener = new SupportUpdateListener();

            stmt.Events += listener.Update;

            SendBeanInt(epService, 10);
            Assert.IsTrue(listener.GetAndClearIsInvoked());
            SendBeanInt(epService, 11);
            Assert.IsFalse(listener.GetAndClearIsInvoked());
            SendBeanInt(epService, 1);
            Assert.IsTrue(listener.GetAndClearIsInvoked());
            stmt.Dispose();

            // try enum - ESPER-459
            var types = new HashSet <SupportEnum>();

            types.Add(SupportEnum.ENUM_VALUE_2);
            EPPreparedStatement inPstmt = epService.EPAdministrator.PrepareEPL("select * from " + typeof(SupportBean).FullName + " ev " + "where ev.enumValue in (?)");

            inPstmt.SetObject(1, types);

            EPStatement inStmt = epService.EPAdministrator.Create(inPstmt);

            inStmt.Events += listener.Update;

            var theEvent = new SupportBean();

            theEvent.EnumValue = SupportEnum.ENUM_VALUE_2;
            epService.EPRuntime.SendEvent(theEvent);

            Assert.IsTrue(listener.IsInvoked);

            inStmt.Dispose();
        }
예제 #27
0
        public void TestIntervalPrepared()
        {
            Configuration     config    = SupportConfigFactory.GetConfiguration();
            EPServiceProvider epService = EPServiceProviderManager.GetDefaultProvider(config);

            epService.Initialize();
            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.StartTest(epService, GetType(), GetType().FullName);
            }

            // External clocking
            SendTimer(0, epService);

            // Set up a timer:within
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(
                "select * from pattern [(every " + typeof(SupportBean).FullName +
                ") where timer:within(? days ? hours ? minutes ? seconds ? milliseconds)]");

            prepared.SetObject(1, 1);
            prepared.SetObject(2, 2);
            prepared.SetObject(3, 3);
            prepared.SetObject(4, 4);
            prepared.SetObject(5, 5);
            EPStatement statement = epService.EPAdministrator.Create(prepared);

            SupportUpdateListener testListener = new SupportUpdateListener();

            statement.Events += testListener.Update;

            RunAssertion(epService, testListener);

            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.EndTest();
            }
        }
예제 #28
0
        public void TestIntervalSpecPreparedStmt()
        {
            EPServiceProvider epService = EPServiceProviderManager.GetDefaultProvider(SupportConfigFactory.GetConfiguration());

            epService.Initialize();
            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.StartTest(epService, GetType(), GetType().FullName);
            }

            // External clocking
            SendTimer(0, epService);

            // Set up a timer:within
            EPPreparedStatement prepared = epService.EPAdministrator.PrepareEPL(
                "select * from pattern [timer:interval(? minute ? seconds)]");

            prepared.SetObject(1, 1);
            prepared.SetObject(2, 2);
            EPStatement statement = epService.EPAdministrator.Create(prepared);

            SupportUpdateListener testListener = new SupportUpdateListener();

            statement.Events += testListener.Update;

            SendTimer(62 * 1000 - 1, epService);
            Assert.IsFalse(testListener.IsInvoked);

            SendTimer(62 * 1000, epService);
            Assert.IsTrue(testListener.IsInvoked);

            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.EndTest();
            }
        }
예제 #29
0
        public void TestInArraySubstitution()
        {
            _epService.EPAdministrator.Configuration.AddEventType(
                "SupportBean", typeof(SupportBean));
            String stmtText = "select IntPrimitive in (?) as result from SupportBean";
            EPPreparedStatement prepared = _epService.EPAdministrator.PrepareEPL(
                stmtText);

            prepared.SetObject(
                1, new int[]
            {
                10, 20, 30
            }
                );
            EPStatement stmt = _epService.EPAdministrator.Create(prepared);

            stmt.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 10));
            Assert.IsTrue((bool)_listener.AssertOneGetNewAndReset().Get("result"));

            _epService.EPRuntime.SendEvent(new SupportBean("E2", 9));
            Assert.IsFalse((bool)_listener.AssertOneGetNewAndReset().Get("result"));
        }
예제 #30
0
        public void TestSimpleIntAndEnumWrite()
        {
            String expr = "select * from " + typeof(SupportBean).FullName
                          + "(IntPrimitive in (1, 10))";
            EPStatement stmt = _epService.EPAdministrator.CreateEPL(expr);

            stmt.Events += _testListener.Update;

            SendBeanInt(10);
            Assert.IsTrue(_testListener.GetAndClearIsInvoked());
            SendBeanInt(11);
            Assert.IsFalse(_testListener.GetAndClearIsInvoked());
            SendBeanInt(1);
            Assert.IsTrue(_testListener.GetAndClearIsInvoked());
            stmt.Dispose();

            // try enum - ESPER-459
            ICollection <SupportEnum> types = new HashSet <SupportEnum>();

            types.Add(SupportEnum.ENUM_VALUE_2);
            EPPreparedStatement inPstmt = _epService.EPAdministrator.PrepareEPL(
                string.Format("select * from {0} ev where ev.EnumValue in (?)", typeof(SupportBean).FullName));

            inPstmt.SetObject(1, types);

            EPStatement inStmt = _epService.EPAdministrator.Create(inPstmt);

            inStmt.Events += _testListener.Update;

            var theEvent = new SupportBean();

            theEvent.EnumValue = SupportEnum.ENUM_VALUE_2;
            _epService.EPRuntime.SendEvent(theEvent);

            Assert.IsTrue(_testListener.IsInvoked);
        }