Esempio n. 1
0
        public void TimelineStream_Receiver_Cleanup()
        {
            var receiveSpan = TimeSpan.FromMinutes(15);
            var segmentSpan = TimeSpan.FromMinutes(30);
            var now         = DateTime.UtcNow - receiveSpan;
            var segments    = new TimelineStream(receiveSpan, segmentSpan);
            var target      = new[]
            {
                new Fragment
                {
                    Arg1    = now.RoundLower(1) + segmentSpan * 2, Include1 = true,
                    Arg2    = now.RoundLower(1) + segmentSpan * 2 + receiveSpan, Include2 = false,
                    Entries = ToReference(Enumerable.Range(60, 15).Select(x => now + TimeSpan.FromMinutes(x)).ToArray())
                },
                new Fragment
                {
                    Arg1    = now.RoundLower(1) + segmentSpan * 2 + receiveSpan, Include1 = true,
                    Arg2    = null, Include2 = true,
                    Entries = ToReference(Enumerable.Range(75, 15).Select(x => now + TimeSpan.FromMinutes(x)).ToArray())
                }
            };

            for (var i = 0; i < 90; i++)
            {
                segments.Create(now + TimeSpan.FromMinutes(i));
            }
            segments.CleanupExpired(segments.GetItems().Skip(1).Select(x => x.ExpiresOn).First().Value);
            AssertFragments(target, segments.GetItems());
        }
Esempio n. 2
0
        public void TimelineStream_SetSegment_RPMS()
        {
            var source = new[]
            {
                new Fragment {
                    Arg1 = _dpp, Arg2 = _dp1, Entries = _rpp1
                },
                new Fragment {
                    Arg1 = _dp1, Arg2 = _dpx, Entries = _rp1x
                },
                new Fragment {
                    Arg1 = _dpx, Arg2 = _dp3, Entries = _rpx3
                },
                new Fragment {
                    Arg1 = _dp3, Arg2 = _dp4, Entries = _rp34
                }
            };
            var target = new[]
            {
                new Fragment {
                    Arg1 = _dpp, Include1 = true, Arg2 = _dp1, Include2 = false, Entries = _rpp1
                },
                new Fragment {
                    Arg1 = _dp1, Include1 = true, Arg2 = _dp2, Include2 = false, Entries = _rp12
                },
                new Fragment {
                    Arg1 = _dp2, Include1 = true, Arg2 = _dpf, Include2 = true, Entries = _rp2f
                }
            };
            var segments = new TimelineStream(source);
            var result   = segments.Set(_rp2f, _dp2, _dpf);

            AssertFragments(target, segments.GetItems());
        }
Esempio n. 3
0
        public void TimelineStream_Receiver_SetSegment_LX()
        {
            var receiveSpan = TimeSpan.FromMinutes(15);
            var segmentSpan = TimeSpan.FromMinutes(30);
            var now         = DateTime.UtcNow - receiveSpan;
            var segments    = new TimelineStream(receiveSpan, segmentSpan);
            var target      = new[]
            {
                new Fragment
                {
                    Arg1    = now.RoundLower(1), Include1 = true,
                    Arg2    = now.RoundLower(1) + segmentSpan * 2 + receiveSpan, Include2 = false,
                    Entries = ToReference(Enumerable.Range(0, 75).Select(x => now + TimeSpan.FromMinutes(x)).ToArray())
                },
                new Fragment
                {
                    Arg1    = now.RoundLower(1) + segmentSpan * 2 + receiveSpan, Include1 = true,
                    Arg2    = null, Include2 = true,
                    Entries = ToReference(Enumerable.Range(75, 15).Select(x => now + TimeSpan.FromMinutes(x)).ToArray())
                }
            };

            for (var i = 0; i < 90; i++)
            {
                segments.Create(now + TimeSpan.FromMinutes(i));
            }
            var result = segments.Set(Array.Empty <Reference>(), now.RoundLower(1), now.RoundLower(1) + TimeSpan.FromDays(1));

            AssertFragments(target, segments.GetItems());
            AssertSamples(result.ToArray(), ToReference(Enumerable.Range(0, 90).Select(x => now + TimeSpan.FromMinutes(x)).ToArray()));
        }
Esempio n. 4
0
        public void TimelineStream_GetIntervals_LRIN()
        {
            var source = new[]
            {
                new Fragment {
                    Arg1 = _dp1, Arg2 = _dp2, Entries = _rp12
                },
                new Fragment {
                    Arg1 = _dp3, Arg2 = _dp4, Entries = _rp34
                }
            };
            var target = new[]
            {
                new Interval {
                    Arg1 = _dpp, Include1 = true, Arg2 = _dp1, Include2 = false
                },
                new Interval {
                    Arg1 = _dp2, Include1 = false, Arg2 = _dp3, Include2 = false
                },
                new Interval {
                    Arg1 = _dp4, Include1 = false, Arg2 = _dpf, Include2 = true
                }
            };
            var segments = new TimelineStream(source);
            var result   = segments.Get(_dpp, _dpf);

            AssertTimeIntervals(result, target);
        }
Esempio n. 5
0
        public void TimelineStream_SetSegment_LRXB()
        {
            var source = new[]
            {
                new Fragment {
                    Arg1 = _dpp, Arg2 = _dp2, Entries = _rpp2
                },
                new Fragment {
                    Arg1 = _dp3, Arg2 = _dpf, Entries = _rp3f
                }
            };
            var target = new[]
            {
                new Fragment {
                    Arg1 = _dpp, Include1 = true, Arg2 = _dp1, Include2 = false, Entries = _rpp1
                },
                new Fragment {
                    Arg1 = _dp1, Include1 = true, Arg2 = _dp4, Include2 = true, Entries = _rp14
                },
                new Fragment {
                    Arg1 = _dp4, Include1 = false, Arg2 = _dpf, Include2 = true, Entries = _rp4f
                }
            };
            var segments = new TimelineStream(source);
            var result   = segments.Set(_rp14, _dp1, _dp4);

            AssertFragments(target, segments.GetItems());
        }
Esempio n. 6
0
        public void TimelineStream_GetIntervals_SXB()
        {
            var source = new[] { new Fragment {
                                     Arg1 = _dp2, Arg2 = _dp3, Entries = _rp23
                                 } };
            var segments = new TimelineStream(source);
            var result   = segments.Get(_dp2, _dp3);

            AssertTimeIntervals(result);
        }
Esempio n. 7
0
        public void TimelineStream_SetSegment_Empty()
        {
            var target = new[] { new Fragment {
                                     Arg1 = _dpx, Include1 = true, Arg2 = _dp4, Include2 = true, Entries = _rpx4
                                 } };
            var segments = new TimelineStream();
            var result   = segments.Set(_rpx4, _dpx, _dp4);

            AssertFragments(target, segments.GetItems());
        }
Esempio n. 8
0
        public void TimelineStream_GetIntervals_Empty()
        {
            var target = new[] { new Interval {
                                     Arg1 = _dpx, Include1 = true, Arg2 = _dp4, Include2 = true
                                 } };
            var segments = new TimelineStream();
            var result   = segments.Get(_dpx, _dp4);

            AssertTimeIntervals(result, target);
        }
Esempio n. 9
0
        public void TimelineStream_GetIntervals_IS()
        {
            var source = new[] { new Fragment {
                                     Arg1 = _dp1, Arg2 = _dp4, Entries = _rp14
                                 } };
            var segments = new TimelineStream(source);
            var result   = segments.Get(_dp1, _dp4);

            AssertTimeIntervals(result);
        }
Esempio n. 10
0
        public void TimelineStream_GetIntervals_RXB()
        {
            var source = new[] { new Fragment {
                                     Arg1 = _dp2, Arg2 = _dp4, Entries = _rp24
                                 } };
            var target = new[] { new Interval {
                                     Arg1 = _dp1, Include1 = true, Arg2 = _dp2, Include2 = false
                                 } };
            var segments = new TimelineStream(source);
            var result   = segments.Get(_dp1, _dp3);

            AssertTimeIntervals(result, target);
        }
Esempio n. 11
0
        public void TimelineStream_SetSegment_IN()
        {
            var source = new[] { new Fragment {
                                     Arg1 = _dp2, Arg2 = _dp3, Entries = _rp23
                                 } };
            var target = new[] { new Fragment {
                                     Arg1 = _dp1, Include1 = true, Arg2 = _dp4, Include2 = true, Entries = _rp14
                                 } };
            var segments = new TimelineStream();
            var result   = segments.Set(_rp14, _dp1, _dp4);

            AssertFragments(target, segments.GetItems());
        }
Esempio n. 12
0
        public void TimelineStream_SetSegment_ONLA()
        {
            var source = new[] { new Fragment {
                                     Arg1 = _dp1, Arg2 = _dp4, Entries = _rp14
                                 } };
            var target = new[]
            {
                new Fragment {
                    Arg1 = _dp1, Include1 = true, Arg2 = _dp3, Include2 = true, Entries = _rp13
                },
                new Fragment {
                    Arg1 = _dp3, Include1 = false, Arg2 = _dp4, Include2 = true, Entries = _rp34
                }
            };
            var segments = new TimelineStream(source);
            var result   = segments.Set(_rp13, _dp1, _dp3);

            AssertFragments(target, segments.GetItems());
        }
Esempio n. 13
0
        public void TimelineStream_SetSegment_LAB()
        {
            var source = new[] { new Fragment {
                                     Arg1 = _dp1, Arg2 = _dpx, Entries = _rp1x
                                 } };
            var target = new[]
            {
                new Fragment {
                    Arg1 = _dp1, Include1 = true, Arg2 = _dpx, Include2 = false, Entries = _rp1x
                },
                new Fragment {
                    Arg1 = _dpx, Include1 = true, Arg2 = _dp4, Include2 = true, Entries = _rpx4
                }
            };
            var segments = new TimelineStream(source);
            var result   = segments.Set(_rpx4, _dpx, _dp4);

            AssertFragments(target, segments.GetItems());
        }
Esempio n. 14
0
        public void TimelineStream_Receiver_Clear()
        {
            var receiveSpan = TimeSpan.FromMinutes(15);
            var segmentSpan = TimeSpan.FromMinutes(30);
            var now         = DateTime.UtcNow - receiveSpan;
            var segments    = new TimelineStream(receiveSpan, segmentSpan);
            var target      = new[]
            {
                new Fragment
                {
                    Arg1    = now.RoundLower(1) + segmentSpan * 2 + receiveSpan, Include1 = true,
                    Arg2    = null, Include2 = true,
                    Entries = Array.Empty <Reference>().ToArray()
                }
            };

            for (var i = 0; i < 90; i++)
            {
                segments.Create(now + TimeSpan.FromMinutes(i));
            }
            segments.Clear();
            AssertFragments(target, segments.GetItems());
        }
Esempio n. 15
0
        public void TimelineStream_Clear()
        {
            var source = new[]
            {
                new Fragment {
                    Arg1 = _dpp, Arg2 = _dp1, Entries = _rpp1
                },
                new Fragment {
                    Arg1 = _dp4, Arg2 = _dpf, Entries = _rp4f
                },
                new Fragment {
                    Arg1 = _dp1, Arg2 = _dp4, Entries = _rp14
                }
            };
            var target = new Fragment[]
            {
            };
            var segments = new TimelineStream(source);
            var result   = segments.Set(_rp23, _dp2, _dp3);

            segments.Clear();
            AssertFragments(target, segments.GetItems());
        }
Esempio n. 16
0
        public void TimelineStream_Receiver_PushSegmentation()
        {
            var receiveSpan = TimeSpan.FromMinutes(15);
            var segmentSpan = TimeSpan.FromMinutes(30);
            var now         = DateTime.UtcNow - receiveSpan;
            var segments    = new TimelineStream(receiveSpan, segmentSpan);
            var target      = new[]
            {
                new Fragment
                {
                    Arg1    = now.RoundLower(1), Include1 = true,
                    Arg2    = now.RoundLower(1) + segmentSpan, Include2 = false,
                    Entries = ToReference(Enumerable.Range(0, 30).Select(x => now + TimeSpan.FromMinutes(x)).ToArray())
                },
                new Fragment
                {
                    Arg1    = now.RoundLower(1) + segmentSpan, Include1 = true,
                    Arg2    = now.RoundLower(1) + segmentSpan * 2, Include2 = false,
                    Entries = ToReference(Enumerable.Range(30, 30).Select(x => now + TimeSpan.FromMinutes(x)).ToArray())
                },
                new Fragment
                {
                    Arg1    = now.RoundLower(1) + segmentSpan * 2, Include1 = true,
                    Arg2    = now.RoundLower(1) + segmentSpan * 2 + receiveSpan, Include2 = false,
                    Entries = ToReference(Enumerable.Range(60, 15).Select(x => now + TimeSpan.FromMinutes(x)).ToArray())
                },
                new Fragment
                {
                    Arg1    = now.RoundLower(1) + segmentSpan * 2 + receiveSpan, Include1 = true,
                    Arg2    = null, Include2 = true,
                    Entries = ToReference(Enumerable.Range(75, 15).Select(x => now + TimeSpan.FromMinutes(x)).ToArray())
                }
            };

            segments.Push(ToReference(Enumerable.Range(0, 90).Select(x => now + TimeSpan.FromMinutes(x)).ToArray()));
            AssertFragments(target, segments.GetItems());
        }