Beispiel #1
0
 public void TearDown()
 {
     if (InstrumentationHelper.ENABLED)
     {
         InstrumentationHelper.EndTest();
     }
     _dataFlowRuntime = null;
     _epService       = null;
     _listener        = null;
 }
Beispiel #2
0
 public void SetUp()
 {
     _epService = EPServiceProviderManager.GetDefaultProvider(SupportConfigFactory.GetConfiguration());
     _epService.Initialize();
     if (InstrumentationHelper.ENABLED)
     {
         InstrumentationHelper.StartTest(_epService, GetType(), GetType().FullName);
     }
     _dataFlowRuntime = _epService.EPRuntime.DataFlowRuntime;
     _listener        = new SupportUpdateListener();
 }
        public void TestCreateStartStop()
        {
            String      epl  = "@Name('Create-A-Flow') create dataflow MyGraph Emitter -> outstream<?> {}";
            EPStatement stmt = _epService.EPAdministrator.CreateEPL(epl);

            EPDataFlowRuntime dfruntime = _epService.EPRuntime.DataFlowRuntime;

            EPAssertionUtil.AssertEqualsAnyOrder(new String[] { "MyGraph" }, dfruntime.GetDataFlows());
            EPDataFlowDescriptor desc = dfruntime.GetDataFlow("MyGraph");

            Assert.AreEqual("MyGraph", desc.DataFlowName);
            Assert.AreEqual(EPStatementState.STARTED, desc.StatementState);
            Assert.AreEqual("Create-A-Flow", desc.StatementName);

            dfruntime.Instantiate("MyGraph");

            // test duplicate
            TryInvalidCompile(epl, "Error starting statement: Data flow by name 'MyGraph' has already been declared [");

            // stop - can no longer instantiate but still exists
            stmt.Stop();    // not removed
            Assert.AreEqual(EPStatementState.STOPPED, dfruntime.GetDataFlow("MyGraph").StatementState);
            TryInvalidCompile(epl, "Error starting statement: Data flow by name 'MyGraph' has already been declared [");
            TryInstantiate("MyGraph", "Data flow by name 'MyGraph' is currently in STOPPED statement state");
            TryInstantiate("DUMMY", "Data flow by name 'DUMMY' has not been defined");

            // destroy - should be gone
            stmt.Dispose(); // removed, create again
            Assert.AreEqual(null, dfruntime.GetDataFlow("MyGraph"));
            Assert.AreEqual(0, dfruntime.GetDataFlows().Length);
            TryInstantiate("MyGraph", "Data flow by name 'MyGraph' has not been defined");
            try
            {
                stmt.Start();
                Assert.Fail();
            }
            catch (IllegalStateException ex)
            {
                Assert.AreEqual("Cannot start statement, statement is in destroyed state", ex.Message);
            }

            // new one, try start-stop-start
            stmt = _epService.EPAdministrator.CreateEPL(epl);
            stmt.Stop();
            stmt.Start();
            dfruntime.Instantiate("MyGraph");
        }
        public override void Run(EPServiceProvider epService)
        {
            EPDataFlowRuntime dataFlowRuntime = epService.EPRuntime.DataFlowRuntime;

            Assert.AreEqual(0, dataFlowRuntime.SavedConfigurations.Length);
            Assert.IsNull(dataFlowRuntime.GetSavedConfiguration("MyFirstFlow"));
            Assert.IsFalse(dataFlowRuntime.RemoveSavedConfiguration("MyFirstFlow"));
            try {
                dataFlowRuntime.InstantiateSavedConfiguration("MyFirstFlow");
                Assert.Fail();
            } catch (EPDataFlowInstantiationException ex) {
                Assert.AreEqual("Dataflow saved configuration 'MyFirstFlow' could not be found", ex.Message);
            }
            try {
                dataFlowRuntime.SaveConfiguration("MyFirstFlow", "MyDataflow", null);
                Assert.Fail();
            } catch (EPDataFlowNotFoundException ex) {
                Assert.AreEqual("Failed to locate data flow 'MyDataflow'", ex.Message);
            }

            // finally create one
            epService.EPAdministrator.CreateEPL("create objectarray schema MyEvent ()");
            epService.EPAdministrator.CreateEPL("create dataflow MyDataflow " +
                                                "BeaconSource -> outdata<MyEvent> {" +
                                                "  iterations:1" +
                                                "}" +
                                                "EventBusSink(outdata) {}");

            // add it
            dataFlowRuntime.SaveConfiguration("MyFirstFlow", "MyDataflow", null);
            Assert.AreEqual(1, dataFlowRuntime.SavedConfigurations.Length);
            EPDataFlowSavedConfiguration savedConfiguration = dataFlowRuntime.GetSavedConfiguration(dataFlowRuntime.SavedConfigurations[0]);

            Assert.AreEqual("MyFirstFlow", savedConfiguration.SavedConfigurationName);
            Assert.AreEqual("MyDataflow", savedConfiguration.DataflowName);
            try {
                dataFlowRuntime.SaveConfiguration("MyFirstFlow", "MyDataflow", null);
                Assert.Fail();
            } catch (EPDataFlowAlreadyExistsException ex) {
                Assert.AreEqual("Data flow saved configuration by name 'MyFirstFlow' already exists", ex.Message);
            }

            // remove it
            Assert.IsTrue(dataFlowRuntime.RemoveSavedConfiguration("MyFirstFlow"));
            Assert.IsFalse(dataFlowRuntime.RemoveSavedConfiguration("MyFirstFlow"));
            Assert.AreEqual(0, dataFlowRuntime.SavedConfigurations.Length);
            Assert.IsNull(dataFlowRuntime.GetSavedConfiguration("MyFirstFlow"));

            // add once more to instantiate
            dataFlowRuntime.SaveConfiguration("MyFirstFlow", "MyDataflow", null);
            EPDataFlowInstance instance = dataFlowRuntime.InstantiateSavedConfiguration("MyFirstFlow");
            var listener = new SupportUpdateListener();

            epService.EPAdministrator.CreateEPL("select * from MyEvent").Events += listener.Update;
            instance.Run();
            Assert.IsTrue(listener.GetAndClearIsInvoked());
            EPAssertionUtil.AssertEqualsExactOrder(new string[] { "MyFirstFlow" }, dataFlowRuntime.SavedConfigurations);
            Assert.IsNotNull(dataFlowRuntime.GetSavedConfiguration("MyFirstFlow"));

            // add/remove instance
            dataFlowRuntime.SaveInstance("F1", instance);
            EPAssertionUtil.AssertEqualsExactOrder(new string[] { "F1" }, dataFlowRuntime.SavedInstances);
            EPDataFlowInstance instanceFromSvc = dataFlowRuntime.GetSavedInstance("F1");

            Assert.AreEqual("MyDataflow", instanceFromSvc.DataFlowName);
            try {
                dataFlowRuntime.SaveInstance("F1", instance);
                Assert.Fail();
            } catch (EPDataFlowAlreadyExistsException ex) {
                // expected
                Assert.AreEqual("Data flow instance name 'F1' already saved", ex.Message);
            }
            Assert.IsTrue(dataFlowRuntime.RemoveSavedInstance("F1"));
            Assert.IsFalse(dataFlowRuntime.RemoveSavedInstance("F1"));
        }