mirror of
https://github.com/ruvnet/ruflo.git
synced 2026-11-10 06:23:28 +09:00
Merge PR #4647 into release/3.71.1
This commit is contained in:
commit
b694a8ae01
2 files changed
+28
-2
No files matched your search
@@ -0,0 +1,26 @@
|
||||
import { test } from 'vitest';
|
||||
import assert from 'node:assert/strict';
|
||||
import { SlidingWindowRateLimiter, TokenBucketRateLimiter } from '../v3/@claude-flow/shared/src/resilience/rate-limiter.ts';
|
||||
|
||||
for (const Type of [SlidingWindowRateLimiter, TokenBucketRateLimiter]) {
|
||||
test(`${Type.name} resets only the explicit empty key`, () => {
|
||||
const limiter = new Type({ maxRequests: 1, windowMs: 60_000 });
|
||||
try {
|
||||
assert.equal(limiter.consume('').allowed, true);
|
||||
assert.equal(limiter.consume('other').allowed, true);
|
||||
assert.equal(limiter.consume('').allowed, false);
|
||||
limiter.reset('');
|
||||
assert.equal(limiter.consume('').allowed, true);
|
||||
assert.equal(limiter.consume('other').allowed, false);
|
||||
} finally { limiter.destroy(); }
|
||||
});
|
||||
test(`${Type.name} omitted reset key still resets every key`, () => {
|
||||
const limiter = new Type({ maxRequests: 1, windowMs: 60_000 });
|
||||
try {
|
||||
limiter.consume(''); limiter.consume('other');
|
||||
limiter.reset();
|
||||
assert.equal(limiter.consume('').allowed, true);
|
||||
assert.equal(limiter.consume('other').allowed, true);
|
||||
} finally { limiter.destroy(); }
|
||||
});
|
||||
}
|
||||
@@ -161,7 +161,7 @@ export class SlidingWindowRateLimiter implements RateLimiter {
|
||||
* Reset rate limit for a key
|
||||
*/
|
||||
reset(key?: string): void {
|
||||
if (key) {
|
||||
if (key !== undefined) {
|
||||
this.requests.delete(key);
|
||||
} else {
|
||||
this.requests.clear();
|
||||
@@ -317,7 +317,7 @@ export class TokenBucketRateLimiter implements RateLimiter {
|
||||
* Reset bucket for a key
|
||||
*/
|
||||
reset(key?: string): void {
|
||||
if (key) {
|
||||
if (key !== undefined) {
|
||||
this.buckets.delete(key);
|
||||
} else {
|
||||
this.buckets.clear();
|
||||
|
||||
Reference in new issue
Block a user