protected override bool ActivityStop(DateTime timestamp, string activityId, long durationTicks, int statusCode)
        {
            if (Settings.StatusCodes.Any(r => statusCode >= r.Min && statusCode <= r.Max))
            {
                _window.AddDataPoint(timestamp);
            }

            return(_window.Count >= Settings.RequestCount);
        }
 protected override bool ActivityStart(DateTime timestamp, string activityId)
 {
     _window.AddDataPoint(timestamp);
     return(_window.Count >= Settings.RequestCount);
 }
예제 #3
0
        public void TestSlidingWindow()
        {
            DateTime start = DateTime.UtcNow;

            SlidingWindow window = new SlidingWindow(TimeSpan.FromSeconds(30));

            window.AddDataPoint(start);
            Assert.Equal(1, window.Count);

            window.AddDataPoint(start);
            window.AddDataPoint(start);

            window.AddDataPoint(start + TimeSpan.FromSeconds(10));
            window.AddDataPoint(start + TimeSpan.FromSeconds(15));
            window.AddDataPoint(start + TimeSpan.FromSeconds(20));
            window.AddDataPoint(start + TimeSpan.FromSeconds(20.5));
            window.AddDataPoint(start + TimeSpan.FromSeconds(25));

            Assert.Equal(8, window.Count);

            window.AddDataPoint(start + TimeSpan.FromSeconds(42));
            Assert.Equal(5, window.Count);

            window.AddDataPoint(start + TimeSpan.FromSeconds(52));
            Assert.Equal(3, window.Count);

            window.AddDataPoint(start + TimeSpan.FromSeconds(100));
            Assert.Equal(1, window.Count);

            window.Clear();
            Assert.Equal(0, window.Count);
        }