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