public void TestPerfUnidirectionalRelOp() { _epService.EPAdministrator.CreateEPL("create window SB.win:keepall() as SupportBean"); _epService.EPAdministrator.CreateEPL("@Name('I') insert into SB select * from SupportBean"); // Preload Log.Info("Preloading events"); for (int i = 0; i < 100000; i++) { _epService.EPRuntime.SendEvent(new SupportBean("E" + i, i)); } Log.Info("Done preloading"); // Test range String rangeEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive between r.rangeStart and r.rangeEnd"; String rangeEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive between r.rangeStart and r.rangeEnd"; String rangeEplThree = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange.std:lastevent() r, SB a " + "where a.IntPrimitive between r.rangeStart and r.rangeEnd"; String rangeEplFour = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange.std:lastevent() r " + "where a.IntPrimitive between r.rangeStart and r.rangeEnd"; String rangeEplFive = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a\n" + "where a.IntPrimitive >= r.rangeStart and a.IntPrimitive <= r.rangeEnd"; String rangeEplSix = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive <= r.rangeEnd and a.IntPrimitive >= r.rangeStart"; AssertionCallback rangeCallback = new ProxyAssertionCallback { GetEventFunc = iteration => new SupportBeanRange("E", iteration + 50000, iteration + 50100), GetExpectedValueFunc = iteration => new Object[] { 50000 + iteration, 50100 + iteration } }; RunAssertion(rangeEplOne, 100, rangeCallback); RunAssertion(rangeEplTwo, 100, rangeCallback); RunAssertion(rangeEplThree, 100, rangeCallback); RunAssertion(rangeEplFour, 100, rangeCallback); RunAssertion(rangeEplFive, 100, rangeCallback); RunAssertion(rangeEplSix, 100, rangeCallback); // Test Greater-Equals String geEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive >= r.rangeStart and a.IntPrimitive <= 99200"; String geEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive >= r.rangeStart and a.IntPrimitive <= 99200"; AssertionCallback geCallback = new ProxyAssertionCallback { GetEventFunc = iteration => new SupportBeanRange("E", iteration + 99000, null), GetExpectedValueFunc = iteration => new Object[] { 99000 + iteration, 99200 } }; RunAssertion(geEplOne, 100, geCallback); RunAssertion(geEplTwo, 100, geCallback); // Test Greater-Then String gtEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive <= 99200"; String gtEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive <= 99200"; String gtEplThree = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange.std:lastevent() r, SB a " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive <= 99200"; String gtEplFour = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange.std:lastevent() r " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive <= 99200"; AssertionCallback gtCallback = new ProxyAssertionCallback { GetEventFunc = iteration => new SupportBeanRange("E", iteration + 99000, null), GetExpectedValueFunc = iteration => new Object[] { 99001 + iteration, 99200 } }; RunAssertion(gtEplOne, 100, gtCallback); RunAssertion(gtEplTwo, 100, gtCallback); RunAssertion(gtEplThree, 100, gtCallback); RunAssertion(gtEplFour, 100, gtCallback); // Test Less-Then String ltEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive < r.rangeStart and a.IntPrimitive > 100"; String ltEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive < r.rangeStart and a.IntPrimitive > 100"; AssertionCallback ltCallback = new ProxyAssertionCallback { GetEventFunc = iteration => new SupportBeanRange("E", iteration + 500, null), GetExpectedValueFunc = iteration => new Object[] { 101, 499 + iteration } }; RunAssertion(ltEplOne, 100, ltCallback); RunAssertion(ltEplTwo, 100, ltCallback); // Test Less-Equals String leEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive <= r.rangeStart and a.IntPrimitive > 100"; String leEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive <= r.rangeStart and a.IntPrimitive > 100"; AssertionCallback leCallback = new ProxyAssertionCallback { GetEventFunc = iteration => new SupportBeanRange("E", iteration + 500, null), GetExpectedValueFunc = iteration => new Object[] { 101, 500 + iteration } }; RunAssertion(leEplOne, 100, leCallback); RunAssertion(leEplTwo, 100, leCallback); // Test open range String openEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive < r.rangeEnd"; String openEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive in (r.rangeStart:r.rangeEnd)"; AssertionCallback openCallback = new ProxyAssertionCallback { GetEventFunc = iteration => new SupportBeanRange("E", iteration + 3, iteration + 7), GetExpectedValueFunc = iteration => new Object[] { iteration + 4, iteration + 6 } }; RunAssertion(openEplOne, 100, openCallback); RunAssertion(openEplTwo, 100, openCallback); // Test half-open range String hopenEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive >= r.rangeStart and a.IntPrimitive < r.rangeEnd"; String hopenEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive in [r.rangeStart:r.rangeEnd)"; AssertionCallback halfOpenCallback = new ProxyAssertionCallback { GetEventFunc = iteration => new SupportBeanRange("E", iteration + 3, iteration + 7), GetExpectedValueFunc = iteration => new Object[] { iteration + 3, iteration + 6 } }; RunAssertion(hopenEplOne, 100, halfOpenCallback); RunAssertion(hopenEplTwo, 100, halfOpenCallback); // Test half-closed range String hclosedEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive <= r.rangeEnd"; String hclosedEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive in (r.rangeStart:r.rangeEnd]"; AssertionCallback halfClosedCallback = new ProxyAssertionCallback { GetEventFunc = iteration => new SupportBeanRange("E", iteration + 3, iteration + 7), GetExpectedValueFunc = iteration => new Object[] { iteration + 4, iteration + 7 } }; RunAssertion(hclosedEplOne, 100, halfClosedCallback); RunAssertion(hclosedEplTwo, 100, halfClosedCallback); // Test inverted closed range String invertedClosedEPLOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive not in [r.rangeStart:r.rangeEnd]"; String invertedClosedEPLTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive not between r.rangeStart and r.rangeEnd"; AssertionCallback invertedClosedCallback = new ProxyAssertionCallback { GetEventFunc = iteration => new SupportBeanRange("E", 20, 99990), GetExpectedValueFunc = iteration => new Object[] { 0, 99999 } }; RunAssertion(invertedClosedEPLOne, 100, invertedClosedCallback); RunAssertion(invertedClosedEPLTwo, 100, invertedClosedCallback); // Test inverted open range String invertedOpenEPLOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive not in (r.rangeStart:r.rangeEnd)"; RunAssertion(invertedOpenEPLOne, 100, invertedClosedCallback); }
private void RunAssertionPerfUnidirectionalRelOp(EPServiceProvider epService) { epService.EPAdministrator.CreateEPL("create window SB#keepall as SupportBean"); epService.EPAdministrator.CreateEPL("@Name('I') insert into SB select * from SupportBean"); // Preload Log.Info("Preloading events"); for (int i = 0; i < 100000; i++) { epService.EPRuntime.SendEvent(new SupportBean("E" + i, i)); } Log.Info("Done preloading"); // Test range string rangeEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive between r.rangeStart and r.rangeEnd"; string rangeEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive between r.rangeStart and r.rangeEnd"; string rangeEplThree = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange#lastevent r, SB a " + "where a.IntPrimitive between r.rangeStart and r.rangeEnd"; string rangeEplFour = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange#lastevent r " + "where a.IntPrimitive between r.rangeStart and r.rangeEnd"; string rangeEplFive = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a\n" + "where a.IntPrimitive >= r.rangeStart and a.IntPrimitive <= r.rangeEnd"; string rangeEplSix = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive <= r.rangeEnd and a.IntPrimitive >= r.rangeStart"; var rangeCallback = new ProxyAssertionCallback() { ProcGetEvent = (iteration) => new SupportBeanRange("E", iteration + 50000, iteration + 50100), ProcGetExpectedValue = (iteration) => new object[] { 50000 + iteration, 50100 + iteration } }; TryAssertion(epService, rangeEplOne, 100, rangeCallback); TryAssertion(epService, rangeEplTwo, 100, rangeCallback); TryAssertion(epService, rangeEplThree, 100, rangeCallback); TryAssertion(epService, rangeEplFour, 100, rangeCallback); TryAssertion(epService, rangeEplFive, 100, rangeCallback); TryAssertion(epService, rangeEplSix, 100, rangeCallback); // Test Greater-Equals string geEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive >= r.rangeStart and a.IntPrimitive <= 99200"; string geEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive >= r.rangeStart and a.IntPrimitive <= 99200"; var geCallback = new ProxyAssertionCallback() { ProcGetEvent = (iteration) => new SupportBeanRange("E", iteration + 99000, null), ProcGetExpectedValue = (iteration) => new object[] { 99000 + iteration, 99200 } }; TryAssertion(epService, geEplOne, 100, geCallback); TryAssertion(epService, geEplTwo, 100, geCallback); // Test Greater-Then string gtEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive <= 99200"; string gtEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive <= 99200"; string gtEplThree = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange#lastevent r, SB a " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive <= 99200"; string gtEplFour = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange#lastevent r " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive <= 99200"; var gtCallback = new ProxyAssertionCallback() { ProcGetEvent = (iteration) => new SupportBeanRange("E", iteration + 99000, null), ProcGetExpectedValue = (iteration) => new object[] { 99001 + iteration, 99200 } }; TryAssertion(epService, gtEplOne, 100, gtCallback); TryAssertion(epService, gtEplTwo, 100, gtCallback); TryAssertion(epService, gtEplThree, 100, gtCallback); TryAssertion(epService, gtEplFour, 100, gtCallback); // Test Less-Then string ltEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive < r.rangeStart and a.IntPrimitive > 100"; string ltEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive < r.rangeStart and a.IntPrimitive > 100"; var ltCallback = new ProxyAssertionCallback() { ProcGetEvent = (iteration) => new SupportBeanRange("E", iteration + 500, null), ProcGetExpectedValue = (iteration) => new object[] { 101, 499 + iteration } }; TryAssertion(epService, ltEplOne, 100, ltCallback); TryAssertion(epService, ltEplTwo, 100, ltCallback); // Test Less-Equals string leEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive <= r.rangeStart and a.IntPrimitive > 100"; string leEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive <= r.rangeStart and a.IntPrimitive > 100"; var leCallback = new ProxyAssertionCallback() { ProcGetEvent = (iteration) => new SupportBeanRange("E", iteration + 500, null), ProcGetExpectedValue = (iteration) => new object[] { 101, 500 + iteration } }; TryAssertion(epService, leEplOne, 100, leCallback); TryAssertion(epService, leEplTwo, 100, leCallback); // Test open range string openEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive < r.rangeEnd"; string openEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive in (r.rangeStart:r.rangeEnd)"; var openCallback = new ProxyAssertionCallback() { ProcGetEvent = (iteration) => new SupportBeanRange("E", iteration + 3, iteration + 7), ProcGetExpectedValue = (iteration) => new object[] { iteration + 4, iteration + 6 } }; TryAssertion(epService, openEplOne, 100, openCallback); TryAssertion(epService, openEplTwo, 100, openCallback); // Test half-open range string hopenEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive >= r.rangeStart and a.IntPrimitive < r.rangeEnd"; string hopenEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive in [r.rangeStart:r.rangeEnd)"; var halfOpenCallback = new ProxyAssertionCallback() { ProcGetEvent = (iteration) => new SupportBeanRange("E", iteration + 3, iteration + 7), ProcGetExpectedValue = (iteration) => new object[] { iteration + 3, iteration + 6 } }; TryAssertion(epService, hopenEplOne, 100, halfOpenCallback); TryAssertion(epService, hopenEplTwo, 100, halfOpenCallback); // Test half-closed range string hclosedEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive > r.rangeStart and a.IntPrimitive <= r.rangeEnd"; string hclosedEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive in (r.rangeStart:r.rangeEnd]"; var halfClosedCallback = new ProxyAssertionCallback() { ProcGetEvent = (iteration) => new SupportBeanRange("E", iteration + 3, iteration + 7), ProcGetExpectedValue = (iteration) => new object[] { iteration + 4, iteration + 7 } }; TryAssertion(epService, hclosedEplOne, 100, halfClosedCallback); TryAssertion(epService, hclosedEplTwo, 100, halfClosedCallback); // Test inverted closed range string invertedClosedEPLOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive not in [r.rangeStart:r.rangeEnd]"; string invertedClosedEPLTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive not between r.rangeStart and r.rangeEnd"; var invertedClosedCallback = new ProxyAssertionCallback() { ProcGetEvent = (iteration) => new SupportBeanRange("E", 20, 99990), ProcGetExpectedValue = (iteration) => new object[] { 0, 99999 } }; TryAssertion(epService, invertedClosedEPLOne, 100, invertedClosedCallback); TryAssertion(epService, invertedClosedEPLTwo, 100, invertedClosedCallback); // Test inverted open range string invertedOpenEPLOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive not in (r.rangeStart:r.rangeEnd)"; TryAssertion(epService, invertedOpenEPLOne, 100, invertedClosedCallback); }
public void Run(RegressionEnvironment env) { var milestone = new AtomicLong(); var path = new RegressionPath(); var epl = "create window SB#keepall as SupportBean;\n" + "@Name('I') insert into SB select * from SupportBean;\n"; env.CompileDeploy(epl, path).Milestone(0); // Preload log.Info("Preloading events"); for (var i = 0; i < 100000; i++) { env.SendEventBean(new SupportBean("E" + i, i)); } log.Info("Done preloading"); // Test range var rangeEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive between r.RangeStart and r.RangeEnd"; var rangeEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive between r.RangeStart and r.RangeEnd"; var rangeEplThree = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange#lastevent r, SB a " + "where a.IntPrimitive between r.RangeStart and r.RangeEnd"; var rangeEplFour = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange#lastevent r " + "where a.IntPrimitive between r.RangeStart and r.RangeEnd"; var rangeEplFive = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a\n" + "where a.IntPrimitive >= r.RangeStart and a.IntPrimitive <= r.RangeEnd"; var rangeEplSix = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive <= r.RangeEnd and a.IntPrimitive >= r.RangeStart"; AssertionCallback rangeCallback = new ProxyAssertionCallback { ProcGetEvent = iteration => new SupportBeanRange("E", iteration + 50000, iteration + 50100), ProcGetExpectedValue = iteration => new object[] {50000 + iteration, 50100 + iteration} }; TryAssertion(env, path, milestone, rangeEplOne, 100, rangeCallback); TryAssertion(env, path, milestone, rangeEplTwo, 100, rangeCallback); TryAssertion(env, path, milestone, rangeEplThree, 100, rangeCallback); TryAssertion(env, path, milestone, rangeEplFour, 100, rangeCallback); TryAssertion(env, path, milestone, rangeEplFive, 100, rangeCallback); TryAssertion(env, path, milestone, rangeEplSix, 100, rangeCallback); // Test Greater-Equals var geEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive >= r.RangeStart and a.IntPrimitive <= 99200"; var geEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive >= r.RangeStart and a.IntPrimitive <= 99200"; AssertionCallback geCallback = new ProxyAssertionCallback { ProcGetEvent = iteration => new SupportBeanRange("E", iteration + 99000, null), ProcGetExpectedValue = iteration => new object[] {99000 + iteration, 99200} }; TryAssertion(env, path, milestone, geEplOne, 100, geCallback); TryAssertion(env, path, milestone, geEplTwo, 100, geCallback); // Test Greater-Then var gtEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive > r.RangeStart and a.IntPrimitive <= 99200"; var gtEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive > r.RangeStart and a.IntPrimitive <= 99200"; var gtEplThree = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange#lastevent r, SB a " + "where a.IntPrimitive > r.RangeStart and a.IntPrimitive <= 99200"; var gtEplFour = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange#lastevent r " + "where a.IntPrimitive > r.RangeStart and a.IntPrimitive <= 99200"; AssertionCallback gtCallback = new ProxyAssertionCallback { ProcGetEvent = iteration => { return new SupportBeanRange("E", iteration + 99000, null); }, ProcGetExpectedValue = iteration => { return new object[] {99001 + iteration, 99200}; } }; TryAssertion(env, path, milestone, gtEplOne, 100, gtCallback); TryAssertion(env, path, milestone, gtEplTwo, 100, gtCallback); TryAssertion(env, path, milestone, gtEplThree, 100, gtCallback); TryAssertion(env, path, milestone, gtEplFour, 100, gtCallback); // Test Less-Then var ltEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive < r.RangeStart and a.IntPrimitive > 100"; var ltEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive < r.RangeStart and a.IntPrimitive > 100"; AssertionCallback ltCallback = new ProxyAssertionCallback { ProcGetEvent = iteration => { return new SupportBeanRange("E", iteration + 500, null); }, ProcGetExpectedValue = iteration => { return new object[] {101, 499 + iteration}; } }; TryAssertion(env, path, milestone, ltEplOne, 100, ltCallback); TryAssertion(env, path, milestone, ltEplTwo, 100, ltCallback); // Test Less-Equals var leEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive <= r.RangeStart and a.IntPrimitive > 100"; var leEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SB a, SupportBeanRange r unidirectional " + "where a.IntPrimitive <= r.RangeStart and a.IntPrimitive > 100"; AssertionCallback leCallback = new ProxyAssertionCallback { ProcGetEvent = iteration => new SupportBeanRange("E", iteration + 500, null), ProcGetExpectedValue = iteration => new object[] {101, 500 + iteration} }; TryAssertion(env, path, milestone, leEplOne, 100, leCallback); TryAssertion(env, path, milestone, leEplTwo, 100, leCallback); // Test open range var openEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive > r.RangeStart and a.IntPrimitive < r.RangeEnd"; var openEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive in (r.RangeStart:r.RangeEnd)"; AssertionCallback openCallback = new ProxyAssertionCallback { ProcGetEvent = iteration => { return new SupportBeanRange("E", iteration + 3, iteration + 7); }, ProcGetExpectedValue = iteration => { return new object[] {iteration + 4, iteration + 6}; } }; TryAssertion(env, path, milestone, openEplOne, 100, openCallback); TryAssertion(env, path, milestone, openEplTwo, 100, openCallback); // Test half-open range var hopenEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive >= r.RangeStart and a.IntPrimitive < r.RangeEnd"; var hopenEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive in [r.RangeStart:r.RangeEnd)"; AssertionCallback halfOpenCallback = new ProxyAssertionCallback { ProcGetEvent = iteration => { return new SupportBeanRange("E", iteration + 3, iteration + 7); }, ProcGetExpectedValue = iteration => { return new object[] {iteration + 3, iteration + 6}; } }; TryAssertion(env, path, milestone, hopenEplOne, 100, halfOpenCallback); TryAssertion(env, path, milestone, hopenEplTwo, 100, halfOpenCallback); // Test half-closed range var hclosedEplOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive > r.RangeStart and a.IntPrimitive <= r.RangeEnd"; var hclosedEplTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive in (r.RangeStart:r.RangeEnd]"; AssertionCallback halfClosedCallback = new ProxyAssertionCallback { ProcGetEvent = iteration => { return new SupportBeanRange("E", iteration + 3, iteration + 7); }, ProcGetExpectedValue = iteration => { return new object[] {iteration + 4, iteration + 7}; } }; TryAssertion(env, path, milestone, hclosedEplOne, 100, halfClosedCallback); TryAssertion(env, path, milestone, hclosedEplTwo, 100, halfClosedCallback); // Test inverted closed range var invertedClosedEPLOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive not in [r.RangeStart:r.RangeEnd]"; var invertedClosedEPLTwo = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive not between r.RangeStart and r.RangeEnd"; AssertionCallback invertedClosedCallback = new ProxyAssertionCallback { ProcGetEvent = iteration => { return new SupportBeanRange("E", 20, 99990); }, ProcGetExpectedValue = iteration => { return new object[] {0, 99999}; } }; TryAssertion(env, path, milestone, invertedClosedEPLOne, 100, invertedClosedCallback); TryAssertion(env, path, milestone, invertedClosedEPLTwo, 100, invertedClosedCallback); // Test inverted open range var invertedOpenEPLOne = "select min(a.IntPrimitive) as mini, max(a.IntPrimitive) as maxi from SupportBeanRange r unidirectional, SB a " + "where a.IntPrimitive not in (r.RangeStart:r.RangeEnd)"; TryAssertion(env, path, milestone, invertedOpenEPLOne, 100, invertedClosedCallback); env.UndeployAll(); }