public void TestNamedWin()
        {
            _epService.EPAdministrator.Configuration.AddEventType <SupportBean>();
            _epService.EPAdministrator.Configuration.AddEventType("SupportBeanVariantStream", typeof(SupportBeanVariantStream));

            ConfigurationVariantStream variant = new ConfigurationVariantStream();

            variant.AddEventTypeName("SupportBeanVariantStream");
            variant.AddEventTypeName("SupportBean");
            _epService.EPAdministrator.Configuration.AddVariantStream("MyVariantStream", variant);

            // test named window
            EPStatement stmt = _epService.EPAdministrator.CreateEPL("create window MyVariantWindow.std:unique(TheString) as select * from MyVariantStream");

            stmt.Events += _listenerOne.Update;
            _epService.EPAdministrator.CreateEPL("insert into MyVariantWindow select * from MyVariantStream");
            _epService.EPAdministrator.CreateEPL("insert into MyVariantStream select * from SupportBeanVariantStream");
            _epService.EPAdministrator.CreateEPL("insert into MyVariantStream select * from SupportBean");

            Object eventOne = new SupportBean("E1", -1);

            _epService.EPRuntime.SendEvent(eventOne);
            Assert.AreSame(eventOne, _listenerOne.AssertOneGetNewAndReset().Underlying);

            Object eventTwo = new SupportBeanVariantStream("E2");

            _epService.EPRuntime.SendEvent(eventTwo);
            Assert.AreSame(eventTwo, _listenerOne.AssertOneGetNewAndReset().Underlying);

            Object eventThree = new SupportBean("E2", -1);

            _epService.EPRuntime.SendEvent(eventThree);
            Assert.AreSame(eventThree, _listenerOne.LastNewData[0].Underlying);
            Assert.AreSame(eventTwo, _listenerOne.LastOldData[0].Underlying);
            _listenerOne.Reset();

            Object eventFour = new SupportBeanVariantStream("E1");

            _epService.EPRuntime.SendEvent(eventFour);
            Assert.AreSame(eventFour, _listenerOne.LastNewData[0].Underlying);
            Assert.AreSame(eventOne, _listenerOne.LastOldData[0].Underlying);
            _listenerOne.Reset();
        }
        private void RunAssertionNamedWin(EPServiceProvider epService)
        {
            var variant = new ConfigurationVariantStream();

            variant.AddEventTypeName("SupportBeanVariantStream");
            variant.AddEventTypeName("SupportBean");
            epService.EPAdministrator.Configuration.AddVariantStream("MyVariantStreamThree", variant);

            // test named window
            EPStatement stmt        = epService.EPAdministrator.CreateEPL("create window MyVariantWindow#unique(TheString) as select * from MyVariantStreamThree");
            var         listenerOne = new SupportUpdateListener();

            stmt.Events += listenerOne.Update;
            epService.EPAdministrator.CreateEPL("insert into MyVariantWindow select * from MyVariantStreamThree");
            epService.EPAdministrator.CreateEPL("insert into MyVariantStreamThree select * from SupportBeanVariantStream");
            epService.EPAdministrator.CreateEPL("insert into MyVariantStreamThree select * from SupportBean");

            var eventOne = new SupportBean("E1", -1);

            epService.EPRuntime.SendEvent(eventOne);
            Assert.AreSame(eventOne, listenerOne.AssertOneGetNewAndReset().Underlying);

            var eventTwo = new SupportBeanVariantStream("E2");

            epService.EPRuntime.SendEvent(eventTwo);
            Assert.AreSame(eventTwo, listenerOne.AssertOneGetNewAndReset().Underlying);

            var eventThree = new SupportBean("E2", -1);

            epService.EPRuntime.SendEvent(eventThree);
            Assert.AreSame(eventThree, listenerOne.LastNewData[0].Underlying);
            Assert.AreSame(eventTwo, listenerOne.LastOldData[0].Underlying);
            listenerOne.Reset();

            var eventFour = new SupportBeanVariantStream("E1");

            epService.EPRuntime.SendEvent(eventFour);
            Assert.AreSame(eventFour, listenerOne.LastNewData[0].Underlying);
            Assert.AreSame(eventOne, listenerOne.LastOldData[0].Underlying);
            listenerOne.Reset();

            epService.EPAdministrator.DestroyAllStatements();
        }
Exemplo n.º 3
0
            public void Run(RegressionEnvironment env)
            {
                // test named window
                var path = new RegressionPath();
                env.CompileDeploy(
                    "@Name('window') create window MyVariantWindow#unique(TheString) as select * from MyVariantTwoTypedSB",
                    path);
                env.AddListener("window");
                env.CompileDeploy("insert into MyVariantWindow select * from MyVariantTwoTypedSB", path);
                env.CompileDeploy("insert into MyVariantTwoTypedSB select * from SupportBeanVariantStream", path);
                env.CompileDeploy("insert into MyVariantTwoTypedSB select * from SupportBean", path);

                object eventOne = new SupportBean("E1", -1);
                env.SendEventBean(eventOne);
                Assert.AreSame(eventOne, env.Listener("window").AssertOneGetNewAndReset().Underlying);

                env.Milestone(0);

                object eventTwo = new SupportBeanVariantStream("E2");
                env.SendEventBean(eventTwo);
                Assert.AreSame(eventTwo, env.Listener("window").AssertOneGetNewAndReset().Underlying);

                env.Milestone(1);

                object eventThree = new SupportBean("E2", -1);
                env.SendEventBean(eventThree);
                Assert.AreEqual(eventThree, env.Listener("window").LastNewData[0].Underlying);
                Assert.AreEqual(eventTwo, env.Listener("window").LastOldData[0].Underlying);
                env.Listener("window").Reset();

                env.Milestone(2);

                object eventFour = new SupportBeanVariantStream("E1");
                env.SendEventBean(eventFour);
                Assert.AreEqual(eventFour, env.Listener("window").LastNewData[0].Underlying);
                Assert.AreEqual(eventOne, env.Listener("window").LastOldData[0].Underlying);
                env.Listener("window").Reset();

                env.UndeployAll();
            }
        public void TestCoercionBoxedTypeMatch()
        {
            _epService.EPAdministrator.Configuration.AddEventType <SupportBean>();
            _epService.EPAdministrator.Configuration.AddEventType("SupportBeanVariantStream", typeof(SupportBeanVariantStream));

            ConfigurationVariantStream variant = new ConfigurationVariantStream();

            variant.AddEventTypeName("SupportBean");
            variant.AddEventTypeName("SupportBeanVariantStream");
            _epService.EPAdministrator.Configuration.AddVariantStream("MyVariantStream", variant);

            EPStatement stmt = _epService.EPAdministrator.CreateEPL("select * from MyVariantStream");

            stmt.Events += _listenerOne.Update;
            EventType typeSelectAll = stmt.EventType;

            AssertEventTypeDefault(typeSelectAll);
            Assert.AreEqual(typeof(Object), stmt.EventType.UnderlyingType);

            _epService.EPAdministrator.CreateEPL("insert into MyVariantStream select * from SupportBean");
            _epService.EPAdministrator.CreateEPL("insert into MyVariantStream select * from SupportBeanVariantStream");

            // try wildcard
            Object eventOne = new SupportBean("E0", -1);

            _epService.EPRuntime.SendEvent(eventOne);
            Assert.AreSame(eventOne, _listenerOne.AssertOneGetNewAndReset().Underlying);

            Object eventTwo = new SupportBeanVariantStream("E1");

            _epService.EPRuntime.SendEvent(eventTwo);
            Assert.AreSame(eventTwo, _listenerOne.AssertOneGetNewAndReset().Underlying);

            stmt.Dispose();
            String fields = "TheString,BoolBoxed,IntPrimitive,LongPrimitive,DoublePrimitive,EnumValue";

            stmt         = _epService.EPAdministrator.CreateEPL("select " + fields + " from MyVariantStream");
            stmt.Events += _listenerOne.Update;
            AssertEventTypeDefault(stmt.EventType);

            // coerces to the higher resolution type, accepts boxed versus not boxed
            _epService.EPRuntime.SendEvent(new SupportBeanVariantStream("s1", true, 1, 20, 30, SupportEnum.ENUM_VALUE_1));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), fields.Split(','), new Object[] { "s1", true, 1, 20L, 30d, SupportEnum.ENUM_VALUE_1 });

            SupportBean bean = new SupportBean("s2", 99);

            bean.LongPrimitive   = 33;
            bean.DoublePrimitive = 50;
            bean.EnumValue       = SupportEnum.ENUM_VALUE_3;
            _epService.EPRuntime.SendEvent(bean);
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), fields.Split(','), new Object[] { "s2", null, 99, 33L, 50d, SupportEnum.ENUM_VALUE_3 });

            // make sure a property is not known since the property is not found on SupportBeanVariantStream
            try
            {
                _epService.EPAdministrator.CreateEPL("select CharBoxed from MyVariantStream");
                Assert.Fail();
            }
            catch (EPStatementException ex)
            {
                Assert.AreEqual("Error starting statement: Failed to validate select-clause expression 'CharBoxed': Property named 'CharBoxed' is not valid in any stream [select CharBoxed from MyVariantStream]", ex.Message);
            }

            // try dynamic property: should exists but not show up as a declared property
            stmt.Dispose();
            fields       = "v1,v2,v3";
            stmt         = _epService.EPAdministrator.CreateEPL("select LongBoxed? as v1,CharBoxed? as v2,DoubleBoxed? as v3 from MyVariantStream");
            stmt.Events += _listenerOne.Update;
            AssertEventTypeDefault(typeSelectAll);  // asserts prior "select *" event type

            bean             = new SupportBean();
            bean.LongBoxed   = 33L;
            bean.CharBoxed   = 'a';
            bean.DoubleBoxed = Double.NaN;
            _epService.EPRuntime.SendEvent(bean);
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), fields.Split(','), new Object[] { 33L, 'a', Double.NaN });

            _epService.EPRuntime.SendEvent(new SupportBeanVariantStream("s2"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), fields.Split(','), new Object[] { null, null, null });
        }
Exemplo n.º 5
0
            public void Run(RegressionEnvironment env)
            {
                string fields;
                SupportBean bean;

                env.CompileDeploy("@Name('s0') select * from MyVariantTwoTypedSB").AddListener("s0");
                var typeSelectAll = env.Statement("s0").EventType;
                AssertEventTypeDefault(typeSelectAll);
                Assert.AreEqual(typeof(object), env.Statement("s0").EventType.UnderlyingType);

                env.CompileDeploy("insert into MyVariantTwoTypedSB select * from SupportBean");
                env.CompileDeploy("insert into MyVariantTwoTypedSB select * from SupportBeanVariantStream");

                // try wildcard
                object eventOne = new SupportBean("E0", -1);
                env.SendEventBean(eventOne);
                Assert.AreSame(eventOne, env.Listener("s0").AssertOneGetNewAndReset().Underlying);

                object eventTwo = new SupportBeanVariantStream("E1");
                env.SendEventBean(eventTwo);
                Assert.AreSame(eventTwo, env.Listener("s0").AssertOneGetNewAndReset().Underlying);

                env.UndeployModuleContaining("s0");

                fields = "TheString,BoolBoxed,IntPrimitive,LongPrimitive,DoublePrimitive,EnumValue";
                env.CompileDeploy("@Name('s0') select " + fields + " from MyVariantTwoTypedSB").AddListener("s0");
                AssertEventTypeDefault(env.Statement("s0").EventType);

                // coerces to the higher resolution type, accepts boxed versus not boxed
                env.SendEventBean(new SupportBeanVariantStream("s1", true, 1, 20, 30, SupportEnum.ENUM_VALUE_1));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields.SplitCsv(),
                    new object[] {"s1", true, 1, 20L, 30d, SupportEnum.ENUM_VALUE_1});

                bean = new SupportBean("s2", 99);
                bean.LongPrimitive = 33;
                bean.DoublePrimitive = 50;
                bean.EnumValue = SupportEnum.ENUM_VALUE_3;
                env.SendEventBean(bean);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields.SplitCsv(),
                    new object[] {"s2", null, 99, 33L, 50d, SupportEnum.ENUM_VALUE_3});
                env.UndeployModuleContaining("s0");

                // make sure a property is not known since the property is not found on SupportBeanVariantStream
                TryInvalidCompile(
                    env,
                    "select CharBoxed from MyVariantTwoTypedSB",
                    "Failed to validate select-clause expression 'CharBoxed': Property named 'CharBoxed' is not valid in any stream");

                // try dynamic property: should exists but not show up as a declared property
                fields = "v1,v2,v3";
                env.CompileDeploy(
                        "@Name('s0') select LongBoxed? as v1,CharBoxed? as v2,DoubleBoxed? as v3 from MyVariantTwoTypedSB")
                    .AddListener("s0");

                bean = new SupportBean();
                bean.LongBoxed = 33L;
                bean.CharBoxed = 'a';
                bean.DoubleBoxed = double.NaN;
                env.SendEventBean(bean);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields.SplitCsv(),
                    new object[] {33L, 'a', double.NaN});

                env.SendEventBean(new SupportBeanVariantStream("s2"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields.SplitCsv(),
                    new object[] {null, null, null});

                env.UndeployAll();
            }