Esempio n. 1
0
        public void WhenJoinersAndLeaversAlternate_ThenHighWatermarkIsOne()
        {
            var baseDate = new DateTime(2020, 1, 1);

            var joiners = new[]
            {
                baseDate,
                baseDate.AddHours(2)
            };

            var leavers = new[]
            {
                baseDate.AddHours(1),
                baseDate.AddHours(3)
            };

            Assert.AreEqual(1, TimeseriesUtil.HighWatermark(joiners, leavers));
        }
Esempio n. 2
0
        public void WhenJoinersAndLeaversOverlap_ThenHighWatermarkIsOverOne()
        {
            var baseDate = new DateTime(2020, 1, 1);

            var joiners = new[]
            {
                baseDate,
                baseDate.AddHours(1),
                baseDate.AddHours(2),
                baseDate.AddHours(6)
            };

            var leavers = new[]
            {
                baseDate.AddHours(3),
                baseDate.AddHours(4),
                baseDate.AddHours(5),
                baseDate.AddHours(7)
            };

            Assert.AreEqual(3, TimeseriesUtil.HighWatermark(joiners, leavers));
        }
Esempio n. 3
0
        public void WhenJoinerOnFirstDay_ThenDailyHistoramIsOneAtFirstDay()
        {
            var baseDate = new DateTime(2020, 1, 1);

            var joiners = new[]
            {
                baseDate
            };

            var leavers = new[]
            {
                baseDate.AddDays(4).AddMinutes(30)
            };

            var histogram = TimeseriesUtil.DailyHistogram(joiners, leavers).ToList();

            Assert.AreEqual(1, histogram[0].Value);
            Assert.AreEqual(1, histogram[1].Value);
            Assert.AreEqual(1, histogram[2].Value);
            Assert.AreEqual(1, histogram[3].Value);
            Assert.AreEqual(1, histogram[4].Value);
        }
Esempio n. 4
0
        public void WhenJoinersAndLeaversOverlap_ThenDailyHistogramUsesTotal()
        {
            var baseDate = new DateTime(2020, 1, 1);

            var joiners = new[]
            {
                baseDate.AddDays(1),
                baseDate.AddDays(2).AddHours(1),
                baseDate.AddDays(3),
                baseDate.AddDays(7).AddSeconds(1)
            };

            var leavers = new[]
            {
                baseDate.AddDays(4).AddMinutes(30),
                baseDate.AddDays(5),
                baseDate.AddDays(6),
                baseDate.AddDays(10)
            };

            var histogram = TimeseriesUtil.DailyHistogram(joiners, leavers).ToList();

            Assert.AreEqual(1, histogram[0].Value);
            Assert.AreEqual(2, histogram[1].Value);
            Assert.AreEqual(3, histogram[2].Value);
            Assert.AreEqual(3, histogram[3].Value);
            Assert.AreEqual(2, histogram[4].Value);
            Assert.AreEqual(1, histogram[5].Value);
            Assert.AreEqual(1, histogram[6].Value);
            Assert.AreEqual(1, histogram[7].Value);
            Assert.AreEqual(1, histogram[8].Value);
            Assert.AreEqual(1, histogram[9].Value);

            Assert.AreEqual(baseDate.AddDays(1), histogram[0].Timestamp);
            Assert.AreEqual(baseDate.AddDays(10), histogram[9].Timestamp);
        }
Esempio n. 5
0
        public void WhenBalanceChagesThroughoutDay_ThenDailyHistoramReportsMaxButRepeatsLast()
        {
            var baseDate = new DateTime(2020, 1, 1);

            var joiners = new[]
            {
                baseDate.AddMinutes(1),
                baseDate.AddMinutes(2),
                baseDate.AddMinutes(3),
            };

            var leavers = new[]
            {
                baseDate.AddMinutes(4),
                baseDate.AddMinutes(5),
                baseDate.AddDays(2)
            };

            var histogram = TimeseriesUtil.DailyHistogram(joiners, leavers).ToList();

            Assert.AreEqual(3, histogram[0].Value);
            Assert.AreEqual(1, histogram[1].Value);
            Assert.AreEqual(1, histogram[2].Value);
        }