public void TestOuterJoinMultirow() { _epService.EPAdministrator.Configuration.AddEventType(typeof(SupportBean_S0)); _epService.EPAdministrator.Configuration.AddEventType(typeof(SupportBean_S1)); String graph = "create dataflow MySelect\n" + "Emitter -> instream_s0<SupportBean_S0>{name: 'emitterS0'}\n" + "Emitter -> instream_s1<SupportBean_S1>{name: 'emitterS1'}\n" + "Select(instream_s0 as S0, instream_s1 as S1) -> outstream {\n" + " select: (select p00, p10 from S0.win:keepall() full outer join S1.win:keepall())\n" + "}\n" + "CaptureOp(outstream) {}\n"; _epService.EPAdministrator.CreateEPL(graph); DefaultSupportCaptureOp capture = new DefaultSupportCaptureOp(); IDictionary <String, Object> operators = CollectionUtil.PopulateNameValueMap("CaptureOp", capture); EPDataFlowInstantiationOptions options = new EPDataFlowInstantiationOptions().OperatorProvider(new DefaultSupportGraphOpProviderByOpName(operators)); EPDataFlowInstance instance = _epService.EPRuntime.DataFlowRuntime.Instantiate("MySelect", options); EPDataFlowInstanceCaptive captive = instance.StartCaptive(); captive.Emitters.Get("emitterS0").Submit(new SupportBean_S0(1, "S0_1")); EPAssertionUtil.AssertProps(capture.GetCurrentAndReset()[0], "p00,p11".Split(','), new Object[] { "S0_1", null }); instance.Cancel(); }
public void RunAssertionJoinOrder(String fromClause) { String graph = "create dataflow MySelect\n" + "Emitter -> instream_s0<SupportBean_S0>{name: 'emitterS0'}\n" + "Emitter -> instream_s1<SupportBean_S1>{name: 'emitterS1'}\n" + "Emitter -> instream_s2<SupportBean_S2>{name: 'emitterS2'}\n" + "Select(instream_s0 as S0, instream_s1 as S1, instream_s2 as S2) -> outstream {\n" + " select: (select s0.id as s0id, s1.id as s1id, s2.id as s2id " + fromClause + ")\n" + "}\n" + "CaptureOp(outstream) {}\n"; EPStatement stmtGraph = _epService.EPAdministrator.CreateEPL(graph); DefaultSupportCaptureOp capture = new DefaultSupportCaptureOp(); IDictionary <String, Object> operators = CollectionUtil.PopulateNameValueMap("CaptureOp", capture); EPDataFlowInstantiationOptions options = new EPDataFlowInstantiationOptions().OperatorProvider(new DefaultSupportGraphOpProviderByOpName(operators)); EPDataFlowInstance instance = _epService.EPRuntime.DataFlowRuntime.Instantiate("MySelect", options); EPDataFlowInstanceCaptive captive = instance.StartCaptive(); captive.Emitters.Get("emitterS0").Submit(new SupportBean_S0(1)); captive.Emitters.Get("emitterS1").Submit(new SupportBean_S1(10)); Assert.AreEqual(0, capture.GetCurrent().Length); captive.Emitters.Get("emitterS2").Submit(new SupportBean_S2(100)); Assert.AreEqual(1, capture.GetCurrent().Length); EPAssertionUtil.AssertProps(capture.GetCurrentAndReset()[0], "s0id,s1id,s2id".Split(','), new Object[] { 1, 10, 100 }); instance.Cancel(); captive.Emitters.Get("emitterS2").Submit(new SupportBean_S2(101)); Assert.AreEqual(0, capture.GetCurrent().Length); stmtGraph.Dispose(); }
private void RunAssertionOuterJoinMultirow(EPServiceProvider epService) { epService.EPAdministrator.Configuration.AddEventType <SupportBean_S0>(); epService.EPAdministrator.Configuration.AddEventType(typeof(SupportBean_S1)); string graph = "create dataflow MySelect\n" + "Emitter -> instream_s0<SupportBean_S0>{name: 'emitterS0'}\n" + "Emitter -> instream_s1<SupportBean_S1>{name: 'emitterS1'}\n" + "Select(instream_s0 as S0, instream_s1 as S1) -> outstream {\n" + " select: (select p00, p10 from S0#keepall full outer join S1#keepall)\n" + "}\n" + "CaptureOp(outstream) {}\n"; epService.EPAdministrator.CreateEPL(graph); var capture = new DefaultSupportCaptureOp(SupportContainer.Instance.LockManager()); IDictionary <string, Object> operators = CollectionUtil.PopulateNameValueMap("CaptureOp", capture); var options = new EPDataFlowInstantiationOptions().OperatorProvider(new DefaultSupportGraphOpProviderByOpName(operators)); EPDataFlowInstance instance = epService.EPRuntime.DataFlowRuntime.Instantiate("MySelect", options); EPDataFlowInstanceCaptive captive = instance.StartCaptive(); captive.Emitters.Get("emitterS0").Submit(new SupportBean_S0(1, "S0_1")); EPAssertionUtil.AssertProps( epService.Container, capture.GetCurrentAndReset()[0], "p00,p11".Split(','), new object[] { "S0_1", null }); instance.Cancel(); epService.EPAdministrator.DestroyAllStatements(); }
public void TestTimeWindowTriggered() { _epService.EPAdministrator.Configuration.AddEventType <SupportBean>(); String graph = "create dataflow MySelect\n" + "Emitter -> instream_s0<SupportBean>{name: 'emitterS0'}\n" + "Select(instream_s0) -> outstream {\n" + " select: (select sum(IntPrimitive) as sumInt from instream_s0.win:time(1 minute))\n" + "}\n" + "CaptureOp(outstream) {}\n"; _epService.EPRuntime.SendEvent(new CurrentTimeEvent(0)); _epService.EPAdministrator.CreateEPL(graph); DefaultSupportCaptureOp capture = new DefaultSupportCaptureOp(); IDictionary <String, Object> operators = CollectionUtil.PopulateNameValueMap("CaptureOp", capture); EPDataFlowInstantiationOptions options = new EPDataFlowInstantiationOptions().OperatorProvider(new DefaultSupportGraphOpProviderByOpName(operators)); EPDataFlowInstance instance = _epService.EPRuntime.DataFlowRuntime.Instantiate("MySelect", options); EPDataFlowInstanceCaptive captive = instance.StartCaptive(); _epService.EPRuntime.SendEvent(new CurrentTimeEvent(5000)); captive.Emitters.Get("emitterS0").Submit(new SupportBean("E1", 2)); EPAssertionUtil.AssertProps(capture.GetCurrentAndReset()[0], "sumInt".Split(','), new Object[] { 2 }); _epService.EPRuntime.SendEvent(new CurrentTimeEvent(10000)); captive.Emitters.Get("emitterS0").Submit(new SupportBean("E2", 5)); EPAssertionUtil.AssertProps(capture.GetCurrentAndReset()[0], "sumInt".Split(','), new Object[] { 7 }); _epService.EPRuntime.SendEvent(new CurrentTimeEvent(65000)); EPAssertionUtil.AssertProps(capture.GetCurrentAndReset()[0], "sumInt".Split(','), new Object[] { 5 }); instance.Cancel(); }
public override void Run(EPServiceProvider epService) { epService.EPAdministrator.Configuration.AddImport(typeof(DefaultSupportCaptureOp).Name); string[] fields = "p0,p1".Split(','); epService.EPAdministrator.Configuration.AddEventType("MyOAEventType", fields, new object[] { typeof(string), typeof(int) }); epService.EPAdministrator.CreateEPL("create dataflow MyDataFlow " + "Emitter -> outstream<MyOAEventType> {name:'src1'}" + "DefaultSupportCaptureOp(outstream) {}"); var container = epService.Container; var captureOp = new DefaultSupportCaptureOp(SupportContainer.Instance.LockManager()); var options = new EPDataFlowInstantiationOptions(); options.OperatorProvider(new DefaultSupportGraphOpProvider(captureOp)); EPDataFlowInstance instance = epService.EPRuntime.DataFlowRuntime.Instantiate("MyDataFlow", options); EPDataFlowInstanceCaptive captiveStart = instance.StartCaptive(); Assert.AreEqual(0, captiveStart.Runnables.Count); Assert.AreEqual(1, captiveStart.Emitters.Count); Emitter emitter = captiveStart.Emitters.Get("src1"); Assert.AreEqual(EPDataFlowState.RUNNING, instance.State); emitter.Submit(new object[] { "E1", 10 }); EPAssertionUtil.AssertPropsPerRow(container, captureOp.Current, fields, new object[][] { new object[] { "E1", 10 } }); emitter.Submit(new object[] { "E2", 20 }); EPAssertionUtil.AssertPropsPerRow(container, captureOp.Current, fields, new object[][] { new object[] { "E1", 10 }, new object[] { "E2", 20 } }); emitter.SubmitSignal(new EPDataFlowSignalFinalMarkerImpl()); EPAssertionUtil.AssertPropsPerRow(container, captureOp.Current, fields, new Object[0][]); EPAssertionUtil.AssertPropsPerRow(container, captureOp.GetAndReset()[0].ToArray(), fields, new object[][] { new object[] { "E1", 10 }, new object[] { "E2", 20 } }); emitter.Submit(new object[] { "E3", 30 }); EPAssertionUtil.AssertPropsPerRow(container, captureOp.Current, fields, new object[][] { new object[] { "E3", 30 } }); // stays running until cancelled (no transition to complete) Assert.AreEqual(EPDataFlowState.RUNNING, instance.State); instance.Cancel(); Assert.AreEqual(EPDataFlowState.CANCELLED, instance.State); // test doc sample string epl = "create dataflow HelloWorldDataFlow\n" + " create schema SampleSchema(text string),\t// sample type\t\t\n" + "\t\n" + " Emitter -> helloworld.stream<SampleSchema> { name: 'myemitter' }\n" + " LogSink(helloworld.stream) {}"; epService.EPAdministrator.CreateEPL(epl); epService.EPRuntime.DataFlowRuntime.Instantiate("HelloWorldDataFlow"); }
private static void AssertDataflowIds( EPDataFlowInstanceCaptive captive, string id, long[] longs, DefaultSupportCaptureOp<object> capture, string csv) { captive.Emitters.Get("emitterS0").Submit(new SupportEventWithLongArray(id, longs)); var received = (string[]) ((object[]) capture.GetCurrentAndReset()[0])[0]; EPAssertionUtil.AssertEqualsAnyOrder(csv.SplitCsv(), received); }
private void RunAssertionOutputRateLimit(EPServiceProvider epService) { epService.EPAdministrator.Configuration.AddEventType <SupportBean>(); string graph = "create dataflow MySelect\n" + "Emitter -> instream_s0<SupportBean>{name: 'emitterS0'}\n" + "Select(instream_s0) -> outstream {\n" + " select: (select sum(IntPrimitive) as sumInt from instream_s0 output snapshot every 1 minute)\n" + "}\n" + "CaptureOp(outstream) {}\n"; epService.EPRuntime.SendEvent(new CurrentTimeEvent(0)); epService.EPAdministrator.CreateEPL(graph); var capture = new DefaultSupportCaptureOp(SupportContainer.Instance.LockManager()); IDictionary <string, Object> operators = CollectionUtil.PopulateNameValueMap("CaptureOp", capture); var options = new EPDataFlowInstantiationOptions().OperatorProvider(new DefaultSupportGraphOpProviderByOpName(operators)); EPDataFlowInstance instance = epService.EPRuntime.DataFlowRuntime.Instantiate("MySelect", options); EPDataFlowInstanceCaptive captive = instance.StartCaptive(); Emitter emitter = captive.Emitters.Get("emitterS0"); epService.EPRuntime.SendEvent(new CurrentTimeEvent(5000)); emitter.Submit(new SupportBean("E1", 5)); emitter.Submit(new SupportBean("E2", 3)); emitter.Submit(new SupportBean("E3", 6)); Assert.AreEqual(0, capture.GetCurrentAndReset().Length); epService.EPRuntime.SendEvent(new CurrentTimeEvent(60000 + 5000)); EPAssertionUtil.AssertProps( epService.Container, capture.GetCurrentAndReset()[0], "sumInt".Split(','), new object[] { 14 }); emitter.Submit(new SupportBean("E4", 3)); emitter.Submit(new SupportBean("E5", 6)); Assert.AreEqual(0, capture.GetCurrentAndReset().Length); epService.EPRuntime.SendEvent(new CurrentTimeEvent(120000 + 5000)); EPAssertionUtil.AssertProps( epService.Container, capture.GetCurrentAndReset()[0], "sumInt".Split(','), new object[] { 14 + 9 }); instance.Cancel(); emitter.Submit(new SupportBean("E5", 6)); epService.EPRuntime.SendEvent(new CurrentTimeEvent(240000 + 5000)); Assert.AreEqual(0, capture.GetCurrentAndReset().Length); epService.EPAdministrator.DestroyAllStatements(); }
public void TestAllTypes() { DefaultSupportGraphEventUtil.AddTypeConfiguration(_epService); RunAssertionAllTypes("MyXMLEvent", DefaultSupportGraphEventUtil.XMLEvents); RunAssertionAllTypes("MyOAEvent", DefaultSupportGraphEventUtil.OAEvents); RunAssertionAllTypes("MyMapEvent", DefaultSupportGraphEventUtil.MapEvents); RunAssertionAllTypes("MyEvent", DefaultSupportGraphEventUtil.PONOEvents); // test doc sample String epl = "create dataflow MyDataFlow\n" + " create schema SampleSchema(tagId string, locX double),\t// sample type\n" + " BeaconSource -> samplestream<SampleSchema> {}\n" + " \n" + " // Filter all events that have a tag id of '001'\n" + " Filter(samplestream) -> tags_001 {\n" + " filter : tagId = '001' \n" + " }\n" + " \n" + " // Filter all events that have a tag id of '001', putting all other tags into the second stream\n" + " Filter(samplestream) -> tags_001, tags_other {\n" + " filter : tagId = '001' \n" + " }"; _epService.EPAdministrator.CreateEPL(epl); _epService.EPRuntime.DataFlowRuntime.Instantiate("MyDataFlow"); // test two streams DefaultSupportCaptureOpStatic.Instances.Clear(); String graph = "create dataflow MyFilter\n" + "Emitter -> sb<SupportBean> {name : 'e1'}\n" + "Filter(sb) -> out.ok, out.fail {filter: TheString = 'x'}\n" + "DefaultSupportCaptureOpStatic(out.ok) {}" + "DefaultSupportCaptureOpStatic(out.fail) {}"; _epService.EPAdministrator.CreateEPL(graph); EPDataFlowInstance instance = _epService.EPRuntime.DataFlowRuntime.Instantiate("MyFilter"); EPDataFlowInstanceCaptive captive = instance.StartCaptive(); captive.Emitters.Get("e1").Submit(new SupportBean("x", 10)); captive.Emitters.Get("e1").Submit(new SupportBean("y", 11)); Assert.AreEqual(10, ((SupportBean)DefaultSupportCaptureOpStatic.Instances[0].GetCurrent()[0]).IntPrimitive); Assert.AreEqual(11, ((SupportBean)DefaultSupportCaptureOpStatic.Instances[1].GetCurrent()[0]).IntPrimitive); DefaultSupportCaptureOpStatic.Instances.Clear(); }
private void RunAssertionIterateFinalMarker(EPServiceProvider epService) { epService.EPAdministrator.Configuration.AddEventType <SupportBean>(); string graph = "create dataflow MySelect\n" + "Emitter -> instream_s0<SupportBean>{name: 'emitterS0'}\n" + "@Audit Select(instream_s0 as ALIAS) -> outstream {\n" + " select: (select TheString, sum(IntPrimitive) as sumInt from ALIAS group by TheString order by TheString asc),\n" + " iterate: true" + "}\n" + "CaptureOp(outstream) {}\n"; epService.EPRuntime.SendEvent(new CurrentTimeEvent(0)); epService.EPAdministrator.CreateEPL(graph); var capture = new DefaultSupportCaptureOp(SupportContainer.Instance.LockManager()); IDictionary <string, Object> operators = CollectionUtil.PopulateNameValueMap("CaptureOp", capture); var options = new EPDataFlowInstantiationOptions().OperatorProvider(new DefaultSupportGraphOpProviderByOpName(operators)); EPDataFlowInstance instance = epService.EPRuntime.DataFlowRuntime.Instantiate("MySelect", options); EPDataFlowInstanceCaptive captive = instance.StartCaptive(); Emitter emitter = captive.Emitters.Get("emitterS0"); emitter.Submit(new SupportBean("E3", 4)); emitter.Submit(new SupportBean("E2", 3)); emitter.Submit(new SupportBean("E1", 1)); emitter.Submit(new SupportBean("E2", 2)); emitter.Submit(new SupportBean("E1", 5)); Assert.AreEqual(0, capture.Current.Length); emitter.SubmitSignal(new EPDataFlowSignalFinalMarkerImpl()); EPAssertionUtil.AssertPropsPerRow( epService.Container, capture.Current, "TheString,sumInt".Split(','), new[] { new object[] { "E1", 6 }, new object[] { "E2", 5 }, new object[] { "E3", 4 } }); instance.Cancel(); epService.EPAdministrator.DestroyAllStatements(); }