Exemplo n.º 1
0
        public void It_should_sleep_if_we_rollover_twice_in_the_same_millisecond()
        {
            var worker = new WakingIdWorker(1, 1);
            var iter   = new List <long>()
            {
                2, 2, 3
            };
            int         idx      = 0;
            Func <long> timeFunc = () =>
            {
                var res = iter[idx++];
                if (idx > iter.Count - 1)
                {
                    idx = 0;
                }
                return(res);
            };

            using (TimeExtensions.StubCurrentTime(timeFunc))
            {
                worker.Sequence = 4095;
                worker.NextId();
                worker.Sequence = 4095;
                worker.NextId();
            }
            Assert.That(worker.Slept, Is.EqualTo(1));
        }
Exemplo n.º 2
0
        public void It_should_properly_mask_timestamp()
        {
            var worker = new IdWorker(31, 31);

            for (var i = 0; i < 100; i++)
            {
                var t = TimeExtensions.CurrentTimeMillis();
                using (TimeExtensions.StubCurrentTime(t))
                {
                    var id       = worker.NextId();
                    var actual   = (((ulong)id & TimestampMask) >> 22);
                    var expected = (t - IdWorker.Twepoch);
                    Assert.That(expected, Is.EqualTo(actual));
                }
            }
        }