Beispiel #1
0
        public void LeaksWithConstantRate()
        {
            using var sut = new SimpleTokenBucket(200, 100, 20000);
            var producer = new Thread(Send);
            var result1  = false;
            var result2  = false;
            var result3  = true;
            var result4  = false;

            producer.Start();
            producer.Join();

            void Send()
            {
                result1 = sut.TrySend(100);
                result2 = sut.TrySend(100);
                result3 = sut.TrySend(100);
                Thread.Sleep(TimeSpan.FromMilliseconds(30000));
                result4 = sut.TrySend(100);
            }

            Assert.True(result1);
            Assert.True(result2);
            Assert.False(result3);
            Assert.True(result4);
        }
Beispiel #2
0
        public void CanSendCorrectPacket()
        {
            using var sut = new SimpleTokenBucket(101, 100, 2000);
            var producer = new Thread(Send);
            var result   = false;

            producer.Start();
            producer.Join();

            void Send()
            {
                result = sut.TrySend(100);
            }

            Assert.True(result);
        }
Beispiel #3
0
        public void PacketBiggerThenBucketIsDropped()
        {
            using var sut = new SimpleTokenBucket(101, 100, 2000);
            var producer = new Thread(Send);
            var result   = true;

            producer.Start();
            producer.Join();


            void Send()
            {
                result = sut.TrySend(102);
            }

            Assert.False(result);
        }
Beispiel #4
0
        public void DropPacketsWhenThereAreNotEnoughTokens()
        {
            using var sut = new SimpleTokenBucket(100, 100, 20000);
            var producer = new Thread(Send);
            var result1  = false;
            var result2  = true;

            producer.Start();
            producer.Join();


            void Send()
            {
                result1 = sut.TrySend(100);
                result2 = sut.TrySend(100);
            }

            Assert.True(result1);
            Assert.False(result2);
        }
Beispiel #5
0
        public void DropPacketsWhenQueueIsFull()
        {
            using var sut = new SimpleTokenBucket(200, 100, 20000);
            var producer = new Thread(Send);
            var result1  = false;
            var result2  = false;
            var result3  = true;

            producer.Start();
            producer.Join();

            void Send()
            {
                result1 = sut.TrySend(100);
                result2 = sut.TrySend(100);
                result3 = sut.TrySend(100);
            }

            Assert.True(result1);
            Assert.True(result2);
            Assert.False(result3);
        }