public void Intervals_older_than_history_size_are_discarded() { var intervalSize = TimeSpan.FromSeconds(10); var numberOfIntervals = 100; var historySize = TimeSpan.FromTicks(intervalSize.Ticks * numberOfIntervals); var entries = EntriesBuilder.Build(new Dictionary <DateTime, long> { { now.Subtract(historySize), 3L } }); var store = new IntervalsStore <int>(intervalSize, numberOfIntervals, 0); store.Store(0, entries); var timings = store.GetIntervals(now.Add(store.IntervalSize)); Assert.IsTrue(timings[0].Intervals.All(i => i.TotalMeasurements == 0)); }
public void Intervals_are_returned_in_descending_order() { var entries = EntriesBuilder.Build(new Dictionary <DateTime, long> { { now.AddSeconds(-45), 1L }, { now.AddSeconds(-30), 1L }, { now, 1L } }); var store = AnyStore(); store.Store(0, entries); var timings = store.GetIntervals(now); var intervalStarts = timings[0].Intervals.Select(i => i.IntervalStart).ToArray(); Assert.IsTrue(intervalStarts[0] > intervalStarts[1]); Assert.IsTrue(intervalStarts[1] > intervalStarts[2]); }
public void Store_updates_all_supported_historical_periods() { var store = new VariableHistoryIntervalStore <int>(); var entries = EntriesBuilder.Build(new Dictionary <DateTime, long> { { now, 5L } }); store.Store(0, entries); foreach (var period in HistoryPeriod.All) { var reportDelay = TimeSpan.FromTicks(period.IntervalSize.Ticks * period.DelayedIntervals); var intervals = store.GetIntervals(period, now.Add(reportDelay)); Assert.AreEqual(1, intervals.Length); Assert.AreEqual(5L, intervals[0].TotalValue); Assert.AreEqual(1L, intervals[0].TotalMeasurements); } }
public void Delayed_intervals_are_not_reported() { const int delayedIntervals = 5; var intervalSize = TimeSpan.FromSeconds(1); var delay = TimeSpan.FromTicks(delayedIntervals * intervalSize.Ticks); var entries = EntriesBuilder.Build(new Dictionary <DateTime, long> { { now.AddSeconds(-4), 1L }, { now.AddSeconds(-3), 1L }, { now, 1L } }); var store = new IntervalsStore <int>(intervalSize, 10, delayedIntervals); store.Store(0, entries); var timings = store.GetIntervals(now); var delayedTimings = store.GetIntervals(now.Add(delay)); Assert.AreEqual(0, timings[0].TotalMeasurements); Assert.AreEqual(3, delayedTimings[0].TotalMeasurements); }