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); }
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); }
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); }
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); }
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); }