mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-07 08:23:08 +00:00
fix: lint
This commit is contained in:
parent
d1ffeb7fb7
commit
340b82f7b6
@ -116,28 +116,28 @@ suite "Token Bucket":
|
|||||||
reqTime += 1.minutes
|
reqTime += 1.minutes
|
||||||
let (availableBudget, maxCap) = bucket.getAvailableCapacity(reqTime)
|
let (availableBudget, maxCap) = bucket.getAvailableCapacity(reqTime)
|
||||||
check maxCap == 1000
|
check maxCap == 1000
|
||||||
check availableBudget >= 1000 # Should have compensation
|
check availableBudget >= 1000 # Should have compensation
|
||||||
check availableBudget <= 1250 # But limited to 25% max compensation
|
check availableBudget <= 1250 # But limited to 25% max compensation
|
||||||
|
|
||||||
# Test with minimal usage - less consumption means less compensation
|
# Test with minimal usage - less consumption means less compensation
|
||||||
bucket = TokenBucket.new(1000, 1.minutes, ReplenishMode.Compensating)
|
bucket = TokenBucket.new(1000, 1.minutes, ReplenishMode.Compensating)
|
||||||
reqTime = Moment.now()
|
reqTime = Moment.now()
|
||||||
check bucket.tryConsume(50, reqTime) == true # Use only 5% of capacity (950 remaining)
|
check bucket.tryConsume(50, reqTime) == true
|
||||||
|
# Use only 5% of capacity (950 remaining)
|
||||||
|
|
||||||
# Move to next period - compensation based on remaining budget
|
# Move to next period - compensation based on remaining budget
|
||||||
# UsageAverage = 950/1000/1.0 = 0.95, so compensation = (1.0-0.95)*1000 = 50
|
# UsageAverage = 950/1000/1.0 = 0.95, so compensation = (1.0-0.95)*1000 = 50
|
||||||
reqTime += 1.minutes
|
reqTime += 1.minutes
|
||||||
let (compensatedBudget, _) = bucket.getAvailableCapacity(reqTime)
|
let (compensatedBudget, _) = bucket.getAvailableCapacity(reqTime)
|
||||||
check compensatedBudget == 1050 # 1000 + 50 compensation
|
check compensatedBudget == 1050 # 1000 + 50 compensation
|
||||||
|
|
||||||
# Test with full usage - maximum compensation due to zero remaining budget
|
# Test with full usage - maximum compensation due to zero remaining budget
|
||||||
bucket = TokenBucket.new(1000, 1.minutes, ReplenishMode.Compensating)
|
bucket = TokenBucket.new(1000, 1.minutes, ReplenishMode.Compensating)
|
||||||
reqTime = Moment.now()
|
reqTime = Moment.now()
|
||||||
check bucket.tryConsume(1000, reqTime) == true # Use full capacity (0 remaining)
|
check bucket.tryConsume(1000, reqTime) == true # Use full capacity (0 remaining)
|
||||||
|
|
||||||
# Move to next period - maximum compensation since usage average is 0
|
# Move to next period - maximum compensation since usage average is 0
|
||||||
# UsageAverage = 0/1000/1.0 = 0.0, so compensation = (1.0-0.0)*1000 = 1000, capped at 250
|
# UsageAverage = 0/1000/1.0 = 0.0, so compensation = (1.0-0.0)*1000 = 1000, capped at 250
|
||||||
reqTime += 1.minutes
|
reqTime += 1.minutes
|
||||||
let (maxCompensationBudget, _) = bucket.getAvailableCapacity(reqTime)
|
let (maxCompensationBudget, _) = bucket.getAvailableCapacity(reqTime)
|
||||||
check maxCompensationBudget == 1250 # 1000 + 250 max compensation
|
check maxCompensationBudget == 1250 # 1000 + 250 max compensation
|
||||||
|
|
||||||
|
|||||||
@ -110,7 +110,9 @@ proc update(bucket: TokenBucket, currentTime: Moment) =
|
|||||||
updateStrict(bucket, currentTime)
|
updateStrict(bucket, currentTime)
|
||||||
|
|
||||||
## Returns the available capacity of the bucket: (budget, budgetCap)
|
## Returns the available capacity of the bucket: (budget, budgetCap)
|
||||||
proc getAvailableCapacity*(bucket: TokenBucket, currentTime: Moment = Moment.now()): tuple[budget: int, budgetCap: int] =
|
proc getAvailableCapacity*(
|
||||||
|
bucket: TokenBucket, currentTime: Moment = Moment.now()
|
||||||
|
): tuple[budget: int, budgetCap: int] =
|
||||||
if periodElapsed(bucket, currentTime):
|
if periodElapsed(bucket, currentTime):
|
||||||
case bucket.replenishMode
|
case bucket.replenishMode
|
||||||
of ReplenishMode.Strict:
|
of ReplenishMode.Strict:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user