public void EmptyTokenBucketCapacity() { var mockedTokenBucket = new MockedTokenBucket(); mockedTokenBucket.EmptyCapacity(); TokenBucket = mockedTokenBucket; }
public void VerifyUpdateClientSendingRate() { var measuredTxRate = new double[] { 0.000000, 0.000000, 4.800000, 4.800000, 4.160000, 4.160000, 4.160000, 5.632000, 5.632000, 4.326400, 4.326400, 4.326400, 5.665280, 5.665280, 4.333056, 4.333056, 4.333056 }; var newTokenBucketRate = new double[] { 0.500000, 0.500000, 0.500000, 0.500000, 0.500000, 0.691200, 1.097600, 1.638400, 2.332800, 3.028480, 3.486639, 3.821874, 4.053386, 4.200373, 4.282037, 2.997426, 3.452226 }; var tokenBucket = new MockedTokenBucket(minRate: 0.5, minCapacity: 1.0, beta: 0.7, scaleConstant: 0.4, smooth: 0.8); for (var request = 1; request <= 17; request++) { tokenBucket.CurrentTimestamp = request * 0.2; tokenBucket.UpdateClientSendingRate(request == 10 || request == 16); Assert.AreEqual(measuredTxRate[request - 1], tokenBucket.LastMeasuredTxRate, .000001); Assert.AreEqual(newTokenBucketRate[request - 1], tokenBucket.LastNewTokenBucketRate, .000001); } }
public void VerifyCUBICCalculations() { var expectedRates = new double[] { 7.0, 9.64893600966, 10.000030849917364, 10.453284520772092, 13.408697022224185, 21.266268354273642, 36.425998516920465 }; var baseTimestamp = 5; var tokenBucket = new MockedTokenBucket(minRate: 0.5, minCapacity: 1.0, beta: 0.7, scaleConstant: 0.4, smooth: 0.8); tokenBucket.SetupTest(lastMaxRate: 10, lastThrottleTime: 5); for (var timestamp = baseTimestamp; timestamp <= 11; timestamp++) { tokenBucket.CurrentTimestamp = timestamp; tokenBucket.DoTestCalculation(false); Assert.AreEqual(expectedRates[timestamp - baseTimestamp], tokenBucket.LastCalculatedRate, .00000000001); } }
public void VerifyCUBICCalculationsWithThrottling() { var expectedRates = new double[] { 7.0, 9.64893600966, 6.754255206761999, 4.727978644733399, 6.606547753887045, 6.763279816944947, 7.598174833907107, 11.511232804773524 }; var tokenBucket = new MockedTokenBucket(minRate: 0.5, minCapacity: 1.0, beta: 0.7, scaleConstant: 0.4, smooth: 0.8); tokenBucket.SetupTest(lastMaxRate: 10, lastThrottleTime: 5); var baseTimestamp = 5; for (var timestamp = baseTimestamp; timestamp <= 12; timestamp++) { tokenBucket.CurrentTimestamp = timestamp; tokenBucket.DoTestCalculation(timestamp == 7 || timestamp == 8); Assert.AreEqual(expectedRates[timestamp - baseTimestamp], tokenBucket.LastCalculatedRate, .00000000001); } }