Example #1
0
 private static void TryInvalidStage(
     RegressionEnvironment env,
     EPStage stage,
     string[] idsStaged)
 {
     TryInvalidStage(env, stage, idsStaged, "skip");
 }
Example #2
0
            public void Run(RegressionEnvironment env)
            {
                RegressionPath path = new RegressionPath();

                env.CompileDeploy("@Name('create') @public create window MyWindow#keepall as SupportBean", path);
                EPStage stage    = env.Runtime.StageService.GetStage("S1");
                string  idCreate = env.DeploymentId("create");

                string namedWindowObjectName = "named window 'MyWindow'";
                string eventTypeObjectName   = "event type 'MyWindow'";

                string[][] namedWindowDependencies = new string[][] {
                    new string[] { "select * from MyWindow", namedWindowObjectName },
                    new string[] { "insert into MyWindow select * from SupportBean", namedWindowObjectName },
                    new string[] { "select (select count(*) from MyWindow) from SupportBean", namedWindowObjectName },
                    new string[] { "on SupportBean delete from MyWindow", namedWindowObjectName },
                    new string[] { "select * from pattern[every MyWindow]", eventTypeObjectName },
                    new string[] { "on MyWindow merge MyWindow where 1=1 when not matched then insert into ABC select *", namedWindowObjectName }
                };
                foreach (string[] line in namedWindowDependencies)
                {
                    AssertPrecondition(env, path, stage, idCreate, line[1], line[0]);
                }

                env.UndeployAll();
            }
Example #3
0
        public RegressionEnvironment UndeployAll()
        {
            Runtime.DeploymentService.UndeployAll();

            string[] stageURIs = Runtime.StageService.StageURIs;
            foreach (string uri in stageURIs) {
                EPStage stage = Runtime.StageService.GetExistingStage(uri);
                stage.Destroy();
            }

            return this;
        }
Example #4
0
        private static void AssertPrecondition(
            RegressionEnvironment env,
            RegressionPath path,
            EPStage stage,
            string idCreate,
            string objectName,
            string epl)
        {
            env.CompileDeploy("@Name('tester') " + epl, path);
            string idTester = env.DeploymentId("tester");

            TryInvalidStageProvides(env, stage, idCreate, idTester, objectName);
            TryInvalidStageConsumes(env, stage, idTester, idCreate, objectName);
            env.UndeployModuleContaining("tester");
        }
Example #5
0
        public RegressionEnvironment SendEventBeanStage(
            string stageUri,
            object @event)
        {
            if (stageUri == null) {
                return SendEventBean(@event);
            }

            EPStage stage = Runtime.StageService.GetExistingStage(stageUri);
            if (stage == null) {
                throw new EPRuntimeException("Failed to find stage '" + stageUri + "'");
            }

            stage.EventService.SendEventBean(@event, @event.GetType().Name);
            return this;
        }
Example #6
0
            public void Run(RegressionEnvironment env)
            {
                RegressionPath path = new RegressionPath();

                env.CompileDeploy("@Name('variable') @public create variable int MyVariable", path);
                env.CompileDeploy("@Name('stmt') select MyVariable from SupportBean_S0", path);

                EPStage stage    = env.Runtime.StageService.GetStage("S1");
                string  idCreate = env.DeploymentId("variable");
                string  idStmt   = env.DeploymentId("stmt");

                TryInvalidStageProvides(env, stage, idCreate, idStmt, "variable 'MyVariable'");
                TryInvalidStageConsumes(env, stage, idStmt, idCreate, "variable 'MyVariable'");

                env.UndeployAll();
            }
Example #7
0
        public RegressionEnvironment AdvanceTimeStage(
            string stageUri,
            long msec)
        {
            if (stageUri == null) {
                AdvanceTime(msec);
                return this;
            }

            EPStage stage = Runtime.StageService.GetExistingStage(stageUri);
            if (stage == null) {
                throw new EPRuntimeException("Failed to find stage '" + stageUri + "'");
            }

            stage.EventService.AdvanceTime(msec);
            return this;
        }
Example #8
0
            public void Run(RegressionEnvironment env)
            {
                EPStage stageA = env.StageService.GetStage("ST");

                env.CompileDeploy("@Name('s0') select * from SupportBean");
                string deploymentId = env.DeploymentId("s0");

                StageIt(env, "ST", deploymentId);
                try {
                    stageA.Destroy();
                    Assert.Fail();
                }
                catch (EPException ex) {
                    Assert.AreEqual("Failed to destroy stage 'ST': The stage has existing deployments", ex.Message);
                }

                UnstageIt(env, "ST", deploymentId);

                stageA.Destroy();
                Assert.AreEqual("ST", stageA.URI);

                TryInvalidDestroyed(() => Noop(stageA.EventService));
                TryInvalidDestroyed(() => Noop(stageA.DeploymentService));

                TryInvalidDestroyed(
                    () => {
                    try {
                        stageA.Stage(Collections.SingletonList(deploymentId));
                    }
                    catch (EPStageException ex) {
                        throw new EPRuntimeException(ex);
                    }
                });

                TryInvalidDestroyed(
                    () => {
                    try {
                        stageA.Unstage(Collections.SingletonList(deploymentId));
                    }
                    catch (EPStageException ex) {
                        throw new EPRuntimeException(ex);
                    }
                });

                env.UndeployAll();
            }
Example #9
0
            public void Run(RegressionEnvironment env)
            {
                EPStage stageA = env.StageService.GetStage("ST");

                TryIllegalArgument(() => stageA.Stage(null));
                TryOp(() => stageA.Stage(EmptyList <string> .Instance));
                TryIllegalArgument(() => stageA.Stage(Arrays.AsList(new string[] { null })));
                TryIllegalArgument(() => stageA.Stage(Arrays.AsList(new string[] { "a", null })));

                TryIllegalArgument(() => stageA.Unstage(null));
                TryOp(() => stageA.Unstage(EmptyList <string> .Instance));
                TryIllegalArgument(() => stageA.Unstage(Arrays.AsList(new string[] { null })));
                TryIllegalArgument(() => stageA.Unstage(Arrays.AsList(new string[] { "a", null })));

                TryDeploymentNotFound(() => stageA.Stage(Arrays.AsList(new string[] { "x" })), "Deployment 'x' was not found");
                TryDeploymentNotFound(() => stageA.Unstage(Arrays.AsList(new string[] { "x" })), "Deployment 'x' was not found");
            }
Example #10
0
        private static void TryInvalidStageConsumes(
            RegressionEnvironment env,
            EPStage stage,
            string idStaged,
            string idProviding,
            string objectName)
        {
            string expected = "Failed to stage deployment '" +
                              idStaged +
                              "': Deployment consumes " +
                              objectName +
                              " from deployment '" +
                              idProviding +
                              "' and must therefore also be staged";

            TryInvalidStage(env, stage, new string[] { idStaged }, expected);
        }
Example #11
0
        private static void RunAssertion(
            RegressionEnvironment env,
            RegressionPath path,
            EPStage stage,
            string typename,
            object underlying,
            Consumer <EPEventService> sender)
        {
            string epl = "@public @buseventtype create schema TriggerEvent();\n" +
                         "@public @buseventtype @name('schema') create json schema " +
                         JSON_TYPENAME +
                         "();\n" +
                         "@Name('trigger') select * from TriggerEvent;\n" +
                         "@Name('s0') select * from " +
                         typename +
                         ";\n";

            env.CompileDeploy(epl, path).AddListener("s0");
            string deploymentId = env.DeploymentId("s0");

            StageIt(env, "ST", deploymentId);

            // test normal send
            sender.Invoke(stage.EventService);
            AssertUnderlying(env, typename, underlying);

            // test EventSender#send
            EventSender eventSender = stage.EventService.GetEventSender(typename);

            eventSender.SendEvent(underlying);
            AssertUnderlying(env, typename, underlying);

            // test EventSender#route
            GetStatement("trigger", "ST", env.Runtime).Events += (_, args) => { eventSender.RouteEvent(underlying); };
            stage.EventService.SendEventMap(new Dictionary <string, object>(), "TriggerEvent");
            AssertUnderlying(env, typename, underlying);

            UnstageIt(env, "ST", deploymentId);

            path.Clear();
            env.UndeployModuleContaining("s0");
        }
Example #12
0
 private static void TryInvalidStage(
     RegressionEnvironment env,
     EPStage stage,
     string[] idsStaged,
     string message)
 {
     try {
         stage.Stage(Arrays.AsList(idsStaged));
         Assert.Fail();
     }
     catch (EPStagePreconditionException ex) {
         if (!message.Equals("skip"))
         {
             AssertMessage(ex.Message, message);
         }
     }
     catch (EPStageException) {
         throw;
     }
 }
Example #13
0
            public void Run(RegressionEnvironment env)
            {
                RegressionPath path = new RegressionPath();

                env.CompileDeploy("@Name('context') @public create context MyContext initiated by SupportBean", path);
                env.CompileDeploy("@Name('stmt') context MyContext select count(*) from SupportBean_S0", path);

                EPStage stage    = env.Runtime.StageService.GetStage("S1");
                string  idCreate = env.DeploymentId("context");
                string  idStmt   = env.DeploymentId("stmt");

                TryInvalidStageProvides(env, stage, idCreate, idStmt, "context 'MyContext'");
                TryInvalidStageConsumes(env, stage, idStmt, idCreate, "context 'MyContext'");

                env.CompileDeploy("@Name('stmt-2') context MyContext select count(*) from SupportBean_S1", path);
                string idStmt2 = env.DeploymentId("stmt-2");

                TryInvalidStage(env, stage, new string[] { idCreate, idStmt });
                TryInvalidStage(env, stage, new string[] { idStmt2, idStmt });
                TryInvalidStage(env, stage, new string[] { idStmt2, idCreate });

                env.UndeployAll();
            }
Example #14
0
            public void Run(RegressionEnvironment env)
            {
                EPStage        stage = env.StageService.GetStage("ST");
                RegressionPath path  = new RegressionPath();

                // Bean
                RunAssertion(
                    env,
                    path,
                    stage,
                    "SupportBean",
                    new SupportBean(),
                    svc => svc.SendEventBean(new SupportBean(), "SupportBean"));

                // Map
                RunAssertion(
                    env,
                    path,
                    stage,
                    MAP_TYPENAME,
                    new Dictionary <string, object>(),
                    svc => svc.SendEventMap(new Dictionary <string, object>(), MAP_TYPENAME));

                // Object-Array
                RunAssertion(
                    env,
                    path,
                    stage,
                    OA_TYPENAME,
                    new object[0],
                    svc => svc.SendEventObjectArray(new object[0], OA_TYPENAME));

                // XML
                var node = SupportXML.GetDocument("<myevent/>").DocumentElement;

                RunAssertion(
                    env,
                    path,
                    stage,
                    XML_TYPENAME,
                    node,
                    svc => svc.SendEventXMLDOM(node, XML_TYPENAME));

                // Avro
                var schema = AvroSchemaUtil.ResolveAvroSchema(env.Runtime.EventTypeService.GetEventTypePreconfigured(AVRO_TYPENAME));
                var record = new GenericRecord(schema.AsRecordSchema());

                RunAssertion(
                    env,
                    path,
                    stage,
                    AVRO_TYPENAME,
                    record,
                    svc => svc.SendEventAvro(record, AVRO_TYPENAME));

                // Json
                RunAssertion(
                    env,
                    path,
                    stage,
                    JSON_TYPENAME,
                    "{}",
                    svc => svc.SendEventJson("{}", JSON_TYPENAME));

                env.UndeployAll();
            }