예제 #1
0
 public SupportEvalAssertionBuilder(SupportEvalBuilder builder)
 {
     _builder = builder;
 }
예제 #2
0
        private static void RunEPL(
            RegressionEnvironment env,
            SupportEvalBuilder builder,
            bool soda)
        {
            var epl = new StringBuilder();

            epl.Append("@Name('s0') select ");

            var delimiter = "";

            foreach (var entry in builder.Expressions)
            {
                if (builder.ExcludeNamesExcept != null && !builder.ExcludeNamesExcept.Equals(entry.Key))
                {
                    continue;
                }

                epl.Append(delimiter);
                epl.Append(entry.Value);
                if (!entry.Value.Equals(entry.Key))
                {
                    epl.Append(" as ").Append(entry.Key);
                }

                delimiter = ", ";
            }

            epl.Append(" from ").Append(builder.EventType);
            if (builder.StreamAlias != null)
            {
                epl.Append(" as ").Append(builder.StreamAlias);
            }

            var eplText = epl.ToString();

            if (builder.IsLogging)
            {
                Log.Info("EPL: " + eplText);
            }

            if (builder.Path != null)
            {
                env.CompileDeploy(soda, eplText, builder.Path).AddListener("s0");
            }
            else
            {
                env.CompileDeploy(soda, eplText).AddListener("s0");
            }

            if (builder.StatementConsumer != null && builder.ExcludeAssertionsExcept == null && builder.ExcludeNamesExcept == null)
            {
                builder.StatementConsumer.Invoke(env.Statement("s0"));
            }

            var count = -1;

            foreach (var assertion in builder.Assertions)
            {
                count++;
                if (builder.ExcludeAssertionsExcept != null && count != builder.ExcludeAssertionsExcept)
                {
                    continue;
                }

                RunEPLAssertion(count, builder.EventType, env, assertion, builder);
            }

            env.UndeployModuleContaining("s0");
        }