fix: lint

This commit is contained in:
pablo 2025-07-07 09:00:41 +03:00
parent d1ffeb7fb7
commit 340b82f7b6
2 changed files with 12 additions and 10 deletions

View File

@ -116,28 +116,28 @@ suite "Token Bucket":
reqTime += 1.minutes
let (availableBudget, maxCap) = bucket.getAvailableCapacity(reqTime)
check maxCap == 1000
check availableBudget >= 1000 # Should have compensation
check availableBudget <= 1250 # But limited to 25% max compensation
check availableBudget >= 1000 # Should have compensation
check availableBudget <= 1250 # But limited to 25% max compensation
# Test with minimal usage - less consumption means less compensation
bucket = TokenBucket.new(1000, 1.minutes, ReplenishMode.Compensating)
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
# UsageAverage = 950/1000/1.0 = 0.95, so compensation = (1.0-0.95)*1000 = 50
reqTime += 1.minutes
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
bucket = TokenBucket.new(1000, 1.minutes, ReplenishMode.Compensating)
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
# UsageAverage = 0/1000/1.0 = 0.0, so compensation = (1.0-0.0)*1000 = 1000, capped at 250
reqTime += 1.minutes
let (maxCompensationBudget, _) = bucket.getAvailableCapacity(reqTime)
check maxCompensationBudget == 1250 # 1000 + 250 max compensation
check maxCompensationBudget == 1250 # 1000 + 250 max compensation

View File

@ -110,7 +110,9 @@ proc update(bucket: TokenBucket, currentTime: Moment) =
updateStrict(bucket, currentTime)
## 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):
case bucket.replenishMode
of ReplenishMode.Strict: