private void RunAssertionStmtJoin_OM(EPServiceProvider epService)
        {
            var model = new EPStatementObjectModel();

            model.SelectClause = SelectClause.Create("symbol")
                                 .Add(Expressions.Median("price"), "myMedian")
                                 .Add(Expressions.MedianDistinct("price"), "myDistMedian")
                                 .Add(Expressions.Stddev("price"), "myStdev")
                                 .Add(Expressions.Avedev("price"), "myAvedev")
                                 .SetStreamSelector(StreamSelector.RSTREAM_ISTREAM_BOTH);

            FromClause fromClause = FromClause.Create(
                FilterStream.Create(typeof(SupportBeanString).FullName, "one").AddView(View.Create("length", Expressions.Constant(100))),
                FilterStream.Create(typeof(SupportMarketDataBean).FullName, "two").AddView(View.Create("length", Expressions.Constant(5))));

            model.FromClause  = fromClause;
            model.WhereClause = Expressions.And().Add(
                Expressions.Or()
                .Add(Expressions.Eq("symbol", "DELL"))
                .Add(Expressions.Eq("symbol", "IBM"))
                .Add(Expressions.Eq("symbol", "GE"))
                )
                                .Add(Expressions.EqProperty("one.TheString", "two.symbol"));

            model.GroupByClause = GroupByClause.Create("symbol");
            model = (EPStatementObjectModel)SerializableObjectCopier.Copy(epService.Container, model);

            string epl = "select irstream symbol, " +
                         "median(price) as myMedian, " +
                         "median(distinct price) as myDistMedian, " +
                         "stddev(price) as myStdev, " +
                         "avedev(price) as myAvedev " +
                         "from " + typeof(SupportBeanString).FullName + "#length(100) as one, " +
                         typeof(SupportMarketDataBean).FullName + "#length(5) as two " +
                         "where (symbol=\"DELL\" or symbol=\"IBM\" or symbol=\"GE\") " +
                         "and one.TheString=two.symbol " +
                         "group by symbol";

            Assert.AreEqual(epl, model.ToEPL());

            EPStatement stmt     = epService.EPAdministrator.Create(model);
            var         listener = new SupportUpdateListener();

            stmt.Events += listener.Update;

            epService.EPRuntime.SendEvent(new SupportBeanString(SYMBOL_DELL));
            epService.EPRuntime.SendEvent(new SupportBeanString(SYMBOL_IBM));
            epService.EPRuntime.SendEvent(new SupportBeanString("AAA"));

            TryAssertionStmt(epService, listener, stmt);

            stmt.Dispose();
        }
Ejemplo n.º 2
0
            public void Run(RegressionEnvironment env)
            {
                var model = new EPStatementObjectModel();
                model.SelectClause = SelectClause.Create("Symbol")
                    .Add(Expressions.Median("Price"), "myMedian")
                    .Add(Expressions.MedianDistinct("Price"), "myDistMedian")
                    .Add(Expressions.Stddev("Price"), "myStdev")
                    .Add(Expressions.Avedev("Price"), "myAvedev")
                    .SetStreamSelector(StreamSelector.RSTREAM_ISTREAM_BOTH);

                var fromClause = FromClause.Create(
                    FilterStream
                        .Create(typeof(SupportBeanString).Name, "one")
                        .AddView(View.Create("length", Expressions.Constant(100))),
                    FilterStream
                        .Create(typeof(SupportMarketDataBean).Name, "two")
                        .AddView(View.Create("length", Expressions.Constant(5))));
                model.FromClause = fromClause;
                model.WhereClause = Expressions.And()
                    .Add(
                        Expressions.Or()
                            .Add(Expressions.Eq("Symbol", "DELL"))
                            .Add(Expressions.Eq("Symbol", "IBM"))
                            .Add(Expressions.Eq("Symbol", "GE"))
                    )
                    .Add(Expressions.EqProperty("one.TheString", "two.Symbol"));
                model.GroupByClause = GroupByClause.Create("Symbol");
                model = env.CopyMayFail(model);

                var epl = "select irstream Symbol, " +
                          "median(Price) as myMedian, " +
                          "median(distinct Price) as myDistMedian, " +
                          "stddev(Price) as myStdev, " +
                          "avedev(Price) as myAvedev " +
                          "from SupportBeanString#length(100) as one, " +
                          "SupportMarketDataBean#length(5) as two " +
                          "where (Symbol=\"DELL\" or Symbol=\"IBM\" or Symbol=\"GE\") " +
                          "and one.TheString=two.Symbol " +
                          "group by Symbol";
                Assert.AreEqual(epl, model.ToEPL());

                model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("s0"));
                env.CompileDeploy(model).AddListener("s0");

                env.SendEventBean(new SupportBeanString(SYMBOL_DELL));
                env.SendEventBean(new SupportBeanString(SYMBOL_IBM));
                env.SendEventBean(new SupportBeanString("AAA"));

                TryAssertionStmt(env, new AtomicLong());

                env.UndeployAll();
            }
Ejemplo n.º 3
0
        public void TestSumJoin_OM()
        {
            var model = new EPStatementObjectModel();

            model.SelectClause = SelectClause.Create("Symbol")
                                 .Add(Expressions.Median("Price"), "myMedian")
                                 .Add(Expressions.MedianDistinct("Price"), "myDistMedian")
                                 .Add(Expressions.Stddev("Price"), "myStdev")
                                 .Add(Expressions.Avedev("Price"), "myAvedev")
                                 .SetStreamSelector(StreamSelector.RSTREAM_ISTREAM_BOTH);

            var fromClause = FromClause.Create(
                FilterStream.Create(typeof(SupportBeanString).FullName, "one").AddView(View.Create("length", Expressions.Constant(100))),
                FilterStream.Create(typeof(SupportMarketDataBean).FullName, "two").AddView(View.Create("length", Expressions.Constant(5))));

            model.FromClause  = fromClause;
            model.WhereClause = Expressions.And().Add(
                Expressions.Or()
                .Add(Expressions.Eq("Symbol", "DELL"))
                .Add(Expressions.Eq("Symbol", "IBM"))
                .Add(Expressions.Eq("Symbol", "GE"))
                )
                                .Add(Expressions.EqProperty("one.TheString", "two.Symbol"));
            model.GroupByClause = GroupByClause.Create("Symbol");
            model = (EPStatementObjectModel)SerializableObjectCopier.Copy(model);

            var viewExpr = "select irstream Symbol, " +
                           "median(Price) as myMedian, " +
                           "median(distinct Price) as myDistMedian, " +
                           "stddev(Price) as myStdev, " +
                           "avedev(Price) as myAvedev " +
                           "from " + typeof(SupportBeanString).FullName + "#length(100) as one, " +
                           typeof(SupportMarketDataBean).FullName + "#length(5) as two " +
                           "where (Symbol=\"DELL\" or Symbol=\"IBM\" or Symbol=\"GE\") " +
                           "and one.TheString=two.Symbol " +
                           "group by Symbol";

            Assert.AreEqual(viewExpr, model.ToEPL());

            var selectTestView = _epService.EPAdministrator.Create(model);

            selectTestView.AddListener(_testListener);

            _epService.EPRuntime.SendEvent(new SupportBeanString(SYMBOL_DELL));
            _epService.EPRuntime.SendEvent(new SupportBeanString(SYMBOL_IBM));
            _epService.EPRuntime.SendEvent(new SupportBeanString("AAA"));

            RunAssertion(selectTestView);
        }