* Benchmarks rate limit window reset performance
()
| 207 | * Benchmarks rate limit window reset performance |
| 208 | */ |
| 209 | function benchmarkWindowReset () { |
| 210 | console.log("\n📊 Rate Limit Window Reset Performance"); |
| 211 | console.log("-".repeat(40)); |
| 212 | |
| 213 | const suite = new Benchmark.Suite(); |
| 214 | const rateStore = new Map(); |
| 215 | |
| 216 | const checkWithReset = (req, needsReset = false) => { |
| 217 | const reqId = req.sessionID || req.ip; |
| 218 | const currentTime = Math.floor(Date.now() / 1000); |
| 219 | |
| 220 | if (!rateStore.has(reqId)) { |
| 221 | rateStore.set(reqId, { |
| 222 | remaining: 99, |
| 223 | reset: currentTime + (needsReset ? 0 : 900) // Force reset if needed |
| 224 | }); |
| 225 | } |
| 226 | |
| 227 | const state = rateStore.get(reqId); |
| 228 | |
| 229 | if (needsReset || currentTime >= state.reset) { |
| 230 | // Simulate window reset |
| 231 | state.remaining = 100; |
| 232 | state.reset = currentTime + 900; |
| 233 | |
| 234 | return { reset: true, remaining: state.remaining }; |
| 235 | } |
| 236 | |
| 237 | state.remaining--; |
| 238 | |
| 239 | return { reset: false, remaining: state.remaining }; |
| 240 | }; |
| 241 | |
| 242 | suite |
| 243 | .add("Rate Limit - Normal check (no reset)", () => { |
| 244 | const req = createMockRequest({ sessionID: "normal-client" }); |
| 245 | checkWithReset(req, false); |
| 246 | }) |
| 247 | .add("Rate Limit - With window reset", () => { |
| 248 | const req = createMockRequest({ sessionID: "reset-client" }); |
| 249 | checkWithReset(req, true); |
| 250 | }) |
| 251 | .add("Rate Limit - Batch reset simulation", () => { |
| 252 | // Simulate many clients resetting at once |
| 253 | for (let i = 0; i < 50; i++) { |
| 254 | const req = createMockRequest({ sessionID: `batch-${i}` }); |
| 255 | checkWithReset(req, true); |
| 256 | } |
| 257 | }) |
| 258 | .on("cycle", event => { |
| 259 | console.log(` ${String(event.target)}`); |
| 260 | }) |
| 261 | .on("complete", function () { |
| 262 | console.log(` Fastest: ${this.filter("fastest").map("name")}`); |
| 263 | }) |
| 264 | .run(); |
| 265 | } |
| 266 |
no test coverage detected