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);
        }
Esempio n. 3
0
            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();
            }