Beispiel #1
0
        private void RunAssertionEquals(string epl, SupportUpdateListener[] listeners)
        {
            // test function returns lookup value and "equals"
            for (var i = 0; i < listeners.Length; i++)
            {
                var stmt = _epService.EPAdministrator.CreateEPL(epl.Replace("!NUM!", i.ToString(CultureInfo.InvariantCulture)));
                stmt.AddListener(listeners[i]);
            }

            MyLib.ResetCountInvoked();

            var loops = 1000;
            var delta = PerformanceObserver.TimeMillis(
                () =>
            {
                for (var i = 0; i < loops; i++)
                {
                    _epService.EPRuntime.SendEvent(new SupportBean("E_" + i % listeners.Length, 0));
                    var listener = listeners[i % listeners.Length];
                    Assert.IsTrue(listener.GetAndClearIsInvoked());
                }
            });

            Assert.AreEqual(loops, MyLib.CountInvoked);

            Log.Info("Equals delta=" + delta);
            Assert.That(delta, Is.LessThan(1000), "Delta is " + delta);
            _epService.EPAdministrator.DestroyAllStatements();
        }
Beispiel #2
0
        private void RunAssertionBoolean(string epl)
        {
            // test function returns lookup value and "equals"
            var count = 10;

            for (var i = 0; i < count; i++)
            {
                var stmt = _epService.EPAdministrator.CreateEPL(epl);
                stmt.AddListener(_listener);
            }

            MyLib.ResetCountInvoked();

            var loops = 10000;
            var delta = PerformanceObserver.TimeMillis(
                () =>
            {
                for (var i = 0; i < loops; i++)
                {
                    var key = "E_" + i % 100;

                    _epService.EPRuntime.SendEvent(new SupportBean(key, 0));

                    if (key.Equals("E_1"))
                    {
                        Assert.AreEqual(count, _listener.NewDataList.Count);
                        _listener.Reset();
                    }
                    else
                    {
                        Assert.IsFalse(_listener.IsInvoked);
                    }
                }
            });

            // As noted in my analysis, the invocation count can actually be larger than the number of loops,
            // this occurs because of the way in which the weak references are handled in the caching layers
            // below.  Java soft-references behave much better, but we don't have access to them in the CLR.

            Assert.That(MyLib.CountInvoked, Is.GreaterThanOrEqualTo(loops),
                        string.Format("MyLib.CountInvoked = {0}", MyLib.CountInvoked));

            Log.Info("Boolean delta=" + delta);
            Assert.That(delta, Is.LessThan(1000), "Delta is " + delta);
            _epService.EPAdministrator.DestroyAllStatements();
        }