Exemplo n.º 1
0
        private static void RunNonCompileAssertion(
            int assertionNumber,
            EventType eventType,
            IDictionary <string, ExprEvaluator> nodes,
            SupportEvalAssertionPair assertion,
            RegressionEnvironment env,
            SupportEvalBuilder builder)
        {
            EventBean theEvent;

            if (assertion.Underlying is IDictionary <string, object> )
            {
                theEvent = new MapEventBean((IDictionary <string, object>)assertion.Underlying, eventType);
            }
            else
            {
                if (eventType.UnderlyingType != assertion.Underlying)
                {
                    eventType = GetSubtype(assertion.Underlying, env);
                }

                theEvent = new BeanEventBean(assertion.Underlying, eventType);
            }

            var eventsPerStream = new EventBean[] {
                theEvent
            };

            foreach (var expected in assertion.Builder.Results)
            {
                if (builder.ExcludeNamesExcept != null && !builder.ExcludeNamesExcept.Equals(expected.Key))
                {
                    continue;
                }

                var eval = nodes.Get(expected.Key);

                object result = null;
                try {
                    result = eval.Evaluate(eventsPerStream, true, null);
                }
                catch (Exception ex) {
                    Console.WriteLine("Failed at expression " + expected.Key + " at event #" + assertionNumber);

                    for (Exception exx = ex; exx != null; exx = exx.InnerException)
                    {
                        Console.WriteLine(">> {0}", exx.GetType().CleanName());
                        Console.WriteLine("--------------------");
                        Console.WriteLine(ex.Message);
                        Console.WriteLine(ex.StackTrace.ToString());
                    }

                    Log.Error("Failed at expression " + expected.Key + " at event #" + assertionNumber, ex);
                    Assert.Fail();
                }

                DoAssert(false, assertionNumber, expected.Key, expected.Value, result);
            }
        }
Exemplo n.º 2
0
        private static void PerformanceTestIdentNode()
        {
            var bidData    = new BidData("IBM", 0L, 0.50);
            var identNode1 = new ExprIdentNodeImpl("BidPrice");

            var bidDataEventType  = _espServiceProvider.EventAdapterService.GetEventTypeByName("BidData");
            var streamTypeService = new StreamTypeServiceImpl(bidDataEventType, null, false, null);

            identNode1.Validate(
                new ExprValidationContext(
                    _container,
                    streamTypeService,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    null,
                    -1,
                    null,
                    null,
                    null,
                    false,
                    false,
                    false,
                    false,
                    null,
                    false
                    ));

            var exprEvaluatorContext = (ExprEvaluatorContext)null;

            Console.WriteLine("IdentNode");

            for (var nn = 0; nn < 10; nn++)
            {
                var eventBean  = new BeanEventBean(bidData, bidDataEventType);
                var eventBeans = new EventBean[] { eventBean };
                var timeItem   = PerformanceObserver.TimeMicro(
                    delegate
                {
                    for (var ii = 1000000; ii >= 0; ii--)
                    {
                        identNode1.ExprEvaluator.Evaluate(
                            new EvaluateParams(eventBeans, false, exprEvaluatorContext));
                    }
                });

                Console.WriteLine("time: {0} {1:N3} {2:N3}", timeItem, timeItem / 1000000.0m, 1000000.0m / timeItem);
            }
        }
        public bool EvaluateStatement(
            ExprNode expression,
            EPStatement stmt)
        {
            if (expression == null)
            {
                return(true);
            }

            var returnType = expression.Forge.EvaluationType;

            if (!returnType.IsBoolean())
            {
                throw new EPException(
                          "Invalid expression, expected a boolean return type for expression and received '" +
                          returnType.CleanName() +
                          "' for expression '" +
                          ExprNodeUtilityPrint.ToExpressionStringMinPrecedenceSafe(expression) +
                          "'");
            }

            var evaluator = expression.Forge.ExprEvaluator;

            try {
                var       row     = GetRow(stmt);
                EventBean rowBean = new BeanEventBean(row, _statementRowType);

                var pass = evaluator.Evaluate(new EventBean[] { rowBean }, true, null);
                return(true.Equals(pass));
                //return !((pass == null) || (false.Equals(pass)));
            }
            catch (Exception ex) {
                log.Error("Unexpected exception filtering statements by expression, skipping statement: " + ex.Message, ex);
            }

            return(false);
        }