From 309509032ec7ce16a160e0ea2a38c85d3df1fce7 Mon Sep 17 00:00:00 2001 From: "Abdulmalik A." Date: Thu, 26 Mar 2026 15:28:59 +0100 Subject: [PATCH] Revert "Feat/perf" --- .../middleware/_shared/benchmark-runner.cjs | 220 ------------------ .../_shared/discover-exported-middleware.cjs | 45 ---- .../circuit-breaker.middleware.benchmark.cjs | 23 -- .../jwt-auth.middleware.benchmark.cjs | 26 --- middleware/benchmarks/middleware/run-all.cjs | 31 --- .../timeout.middleware.benchmark.cjs | 20 -- .../benchmarks/middleware/verify-coverage.cjs | 36 --- middleware/docs/PERFORMANCE.md | 13 -- middleware/package.json | 2 - 9 files changed, 416 deletions(-) delete mode 100644 middleware/benchmarks/middleware/_shared/benchmark-runner.cjs delete mode 100644 middleware/benchmarks/middleware/_shared/discover-exported-middleware.cjs delete mode 100644 middleware/benchmarks/middleware/circuit-breaker.middleware.benchmark.cjs delete mode 100644 middleware/benchmarks/middleware/jwt-auth.middleware.benchmark.cjs delete mode 100644 middleware/benchmarks/middleware/run-all.cjs delete mode 100644 middleware/benchmarks/middleware/timeout.middleware.benchmark.cjs delete mode 100644 middleware/benchmarks/middleware/verify-coverage.cjs delete mode 100644 middleware/docs/PERFORMANCE.md diff --git a/middleware/benchmarks/middleware/_shared/benchmark-runner.cjs b/middleware/benchmarks/middleware/_shared/benchmark-runner.cjs deleted file mode 100644 index 9f4a003..0000000 --- a/middleware/benchmarks/middleware/_shared/benchmark-runner.cjs +++ /dev/null @@ -1,220 +0,0 @@ -const fs = require('fs'); -const http = require('http'); -const path = require('path'); -const { pathToFileURL } = require('url'); - -const DEFAULT_WARMUP_MS = 2_000; -const DEFAULT_DURATION_MS = 10_000; -const DEFAULT_CONCURRENCY = 25; - -async function runSuite({ rootDir, benchmarkFiles }) { - const baseline = await runSingle({ - rootDir, - benchmark: createBaselineBenchmark(), - }); - - const results = []; - - for (const benchmarkFile of benchmarkFiles) { - const benchmark = require(benchmarkFile); - const result = await runSingle({ rootDir, benchmark, baseline }); - results.push(result); - } - - return { - baseline, - results, - }; -} - -async function runSingle({ rootDir, benchmark, baseline }) { - const warmupMs = benchmark.warmupMs ?? DEFAULT_WARMUP_MS; - const durationMs = benchmark.durationMs ?? DEFAULT_DURATION_MS; - const concurrency = benchmark.concurrency ?? DEFAULT_CONCURRENCY; - const serverContext = await createServerContext(rootDir, benchmark); - - try { - await exerciseServer(serverContext, warmupMs, concurrency, benchmark, false); - const measured = await exerciseServer( - serverContext, - durationMs, - concurrency, - benchmark, - true, - ); - - return { - name: benchmark.name, - source: benchmark.source ?? 'baseline', - notes: benchmark.notes ?? '', - warmupMs, - durationMs, - concurrency, - p50Ms: percentile(measured.latencies, 50), - p95Ms: percentile(measured.latencies, 95), - p99Ms: percentile(measured.latencies, 99), - requests: measured.requests, - statusCodes: measured.statusCodes, - overheadP99Ms: baseline - ? round(percentile(measured.latencies, 99) - baseline.p99Ms) - : 0, - }; - } finally { - await new Promise((resolve) => serverContext.server.close(resolve)); - } -} - -function createBaselineBenchmark() { - return { - name: 'baseline', - source: 'baseline', - createHandler: () => null, - createRequestOptions: ({ port }) => ({ - hostname: '127.0.0.1', - port, - path: '/benchmark', - method: 'GET', - }), - }; -} - -async function createServerContext(rootDir, benchmark) { - const handler = await benchmark.createHandler({ - rootDir, - importCompiled: (relativePath) => - import(pathToFileURL(path.join(rootDir, 'dist', relativePath)).href), - }); - - const server = http.createServer((req, res) => { - const complete = (error) => { - if (error) { - const status = error.status ?? error.statusCode ?? 503; - const message = error.message ?? 'Middleware benchmark request failed.'; - res.statusCode = status; - res.setHeader('content-type', 'application/json'); - res.end(JSON.stringify({ message })); - return; - } - - if (!res.writableEnded) { - res.statusCode = 200; - res.setHeader('content-type', 'application/json'); - res.end(JSON.stringify({ ok: true })); - } - }; - - if (!handler) { - complete(); - return; - } - - try { - handler(req, res, complete); - } catch (error) { - complete(error); - } - }); - - await new Promise((resolve) => server.listen(0, '127.0.0.1', resolve)); - const address = server.address(); - - return { - server, - port: typeof address === 'object' && address ? address.port : 0, - }; -} - -async function exerciseServer(serverContext, durationMs, concurrency, benchmark, record) { - const startedAt = Date.now(); - const latencies = []; - const statusCodes = new Map(); - let requests = 0; - - const workers = Array.from({ length: concurrency }, async () => { - while (Date.now() - startedAt < durationMs) { - const requestStartedAt = process.hrtime.bigint(); - const statusCode = await issueRequest(serverContext.port, benchmark); - const elapsedMs = Number(process.hrtime.bigint() - requestStartedAt) / 1_000_000; - - if (record) { - latencies.push(elapsedMs); - statusCodes.set(statusCode, (statusCodes.get(statusCode) ?? 0) + 1); - requests += 1; - } - } - }); - - await Promise.all(workers); - - return { - requests, - latencies, - statusCodes: Object.fromEntries([...statusCodes.entries()].sort(([a], [b]) => a - b)), - }; -} - -function issueRequest(port, benchmark) { - return new Promise((resolve, reject) => { - const options = benchmark.createRequestOptions({ port }); - const request = http.request(options, (response) => { - response.resume(); - response.on('end', () => resolve(response.statusCode ?? 0)); - }); - - request.on('error', reject); - - if (benchmark.writeRequestBody) { - benchmark.writeRequestBody(request); - } - - request.end(); - }); -} - -function percentile(values, percentileValue) { - if (values.length === 0) { - return 0; - } - - const sorted = [...values].sort((left, right) => left - right); - const index = Math.min( - sorted.length - 1, - Math.ceil((percentileValue / 100) * sorted.length) - 1, - ); - - return round(sorted[index]); -} - -function round(value) { - return Math.round(value * 100) / 100; -} - -function writePerformanceReport({ rootDir, baseline, results, generatedAt }) { - const docsPath = path.join(rootDir, 'docs', 'PERFORMANCE.md'); - const lines = [ - '# Middleware Performance', - '', - `Last generated: ${generatedAt}`, - '', - 'Benchmarks use a 2 second warmup and 10 second measured run per middleware. Overhead is calculated as `middleware_p99 - baseline_p99`.', - '', - '| Middleware | Source | Baseline p99 (ms) | Middleware p99 (ms) | Overhead p99 (ms) | p95 (ms) | p50 (ms) | Requests | Status Codes | Notes |', - '| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | --- | --- |', - ...results.map((result) => { - const overhead = result.overheadP99Ms >= 0 - ? `+${result.overheadP99Ms.toFixed(2)}` - : result.overheadP99Ms.toFixed(2); - - return `| ${result.name} | \`${result.source}\` | ${baseline.p99Ms.toFixed(2)} | ${result.p99Ms.toFixed(2)} | ${overhead} | ${result.p95Ms.toFixed(2)} | ${result.p50Ms.toFixed(2)} | ${result.requests} | \`${JSON.stringify(result.statusCodes)}\` | ${result.notes || '-'} |`; - }), - '', - ]; - - fs.writeFileSync(docsPath, lines.join('\n')); -} - -module.exports = { - createBaselineBenchmark, - runSuite, - writePerformanceReport, -}; diff --git a/middleware/benchmarks/middleware/_shared/discover-exported-middleware.cjs b/middleware/benchmarks/middleware/_shared/discover-exported-middleware.cjs deleted file mode 100644 index 83f4d1d..0000000 --- a/middleware/benchmarks/middleware/_shared/discover-exported-middleware.cjs +++ /dev/null @@ -1,45 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -function discoverExportedMiddleware(rootDir) { - const srcRoot = path.join(rootDir, 'src'); - const visited = new Set(); - const middlewareFiles = new Set(); - - walkIndex(path.join(srcRoot, 'index.ts')); - - return [...middlewareFiles].sort(); - - function walkIndex(indexFilePath) { - const resolvedPath = path.resolve(indexFilePath); - if (visited.has(resolvedPath) || !fs.existsSync(resolvedPath)) { - return; - } - - visited.add(resolvedPath); - const content = fs.readFileSync(resolvedPath, 'utf8'); - const exportMatches = [...content.matchAll(/export \* from ['"](.+?)['"]/g)]; - - for (const match of exportMatches) { - const target = match[1]; - const absoluteTarget = path.resolve(path.dirname(resolvedPath), target); - const asFile = `${absoluteTarget}.ts`; - const asIndex = path.join(absoluteTarget, 'index.ts'); - - if (fs.existsSync(asFile)) { - if (asFile.endsWith('.middleware.ts')) { - middlewareFiles.add(path.relative(rootDir, asFile).replace(/\\/g, '/')); - } - continue; - } - - if (fs.existsSync(asIndex)) { - walkIndex(asIndex); - } - } - } -} - -module.exports = { - discoverExportedMiddleware, -}; diff --git a/middleware/benchmarks/middleware/circuit-breaker.middleware.benchmark.cjs b/middleware/benchmarks/middleware/circuit-breaker.middleware.benchmark.cjs deleted file mode 100644 index 3defe0d..0000000 --- a/middleware/benchmarks/middleware/circuit-breaker.middleware.benchmark.cjs +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - name: 'CircuitBreakerMiddleware', - source: 'src/middleware/advanced/circuit-breaker.middleware.ts', - notes: 'Healthy CLOSED-state request path with the default next() flow.', - async createHandler({ importCompiled }) { - const mod = await importCompiled('src/middleware/advanced/circuit-breaker.middleware.js'); - const service = new mod.CircuitBreakerService({ - name: 'benchmark-circuit-breaker', - failureThreshold: 5, - timeoutWindowMs: 10_000, - halfOpenRetryIntervalMs: 30_000, - }); - const middleware = new mod.CircuitBreakerMiddleware(service); - - return (req, res, done) => middleware.use(req, res, done); - }, - createRequestOptions: ({ port }) => ({ - hostname: '127.0.0.1', - port, - path: '/benchmark', - method: 'GET', - }), -}; diff --git a/middleware/benchmarks/middleware/jwt-auth.middleware.benchmark.cjs b/middleware/benchmarks/middleware/jwt-auth.middleware.benchmark.cjs deleted file mode 100644 index 9969995..0000000 --- a/middleware/benchmarks/middleware/jwt-auth.middleware.benchmark.cjs +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - name: 'JwtAuthMiddleware', - source: 'src/auth/jwt-auth.middleware.ts', - notes: 'Benchmarks the authenticated success path with token verification and user validation.', - async createHandler({ importCompiled }) { - const mod = await importCompiled('src/auth/jwt-auth.middleware.js'); - const middleware = new mod.JwtAuthMiddleware({ - secret: 'benchmark-secret', - publicRoutes: [], - logging: false, - validateUser: async () => ({ id: 'bench-user' }), - }); - - return (req, res, done) => middleware.use(req, res, done); - }, - createRequestOptions: ({ port }) => ({ - hostname: '127.0.0.1', - port, - path: '/benchmark', - method: 'GET', - headers: { - authorization: - 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJiZW5jaC11c2VyIiwiZW1haWwiOiJiZW5jaEBtaW5kYmxvY2suZGV2IiwidXNlclJvbGUiOiJ1c2VyIn0.FU1kP6QdIbGR0kJ7v7k3m4z29rB5Q6qOYZMquf3F5rA', - }, - }), -}; diff --git a/middleware/benchmarks/middleware/run-all.cjs b/middleware/benchmarks/middleware/run-all.cjs deleted file mode 100644 index 1814ab3..0000000 --- a/middleware/benchmarks/middleware/run-all.cjs +++ /dev/null @@ -1,31 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const { runSuite, writePerformanceReport } = require('./_shared/benchmark-runner.cjs'); - -async function main() { - const rootDir = path.resolve(__dirname, '..', '..'); - const benchmarkFiles = fs - .readdirSync(__dirname) - .filter((file) => file.endsWith('.benchmark.cjs')) - .sort() - .map((file) => path.join(__dirname, file)); - - if (benchmarkFiles.length === 0) { - throw new Error('No middleware benchmark files were found.'); - } - - const suite = await runSuite({ rootDir, benchmarkFiles }); - writePerformanceReport({ - rootDir, - baseline: suite.baseline, - results: suite.results, - generatedAt: new Date().toISOString(), - }); - - console.log(JSON.stringify(suite, null, 2)); -} - -main().catch((error) => { - console.error(error); - process.exit(1); -}); diff --git a/middleware/benchmarks/middleware/timeout.middleware.benchmark.cjs b/middleware/benchmarks/middleware/timeout.middleware.benchmark.cjs deleted file mode 100644 index 39a432c..0000000 --- a/middleware/benchmarks/middleware/timeout.middleware.benchmark.cjs +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - name: 'TimeoutMiddleware', - source: 'src/middleware/advanced/timeout.middleware.ts', - notes: 'Healthy request path where the response completes before the timeout window.', - async createHandler({ importCompiled }) { - const mod = await importCompiled('src/middleware/advanced/timeout.middleware.js'); - const middleware = new mod.TimeoutMiddleware({ - timeoutMs: 5_000, - message: 'Request timed out.', - }); - - return (req, res, done) => middleware.use(req, res, done); - }, - createRequestOptions: ({ port }) => ({ - hostname: '127.0.0.1', - port, - path: '/benchmark', - method: 'GET', - }), -}; diff --git a/middleware/benchmarks/middleware/verify-coverage.cjs b/middleware/benchmarks/middleware/verify-coverage.cjs deleted file mode 100644 index fedf564..0000000 --- a/middleware/benchmarks/middleware/verify-coverage.cjs +++ /dev/null @@ -1,36 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const { discoverExportedMiddleware } = require('./_shared/discover-exported-middleware.cjs'); - -function main() { - const rootDir = path.resolve(__dirname, '..', '..'); - const exportedMiddleware = discoverExportedMiddleware(rootDir); - const benchmarkFiles = fs - .readdirSync(__dirname) - .filter((file) => file.endsWith('.benchmark.cjs')) - .map((file) => require(path.join(__dirname, file)).source) - .sort(); - - const missing = exportedMiddleware.filter( - (middlewareSource) => !benchmarkFiles.includes(middlewareSource), - ); - - if (missing.length > 0) { - throw new Error( - `Missing benchmark files for exported middleware: ${missing.join(', ')}`, - ); - } - - console.log( - JSON.stringify( - { - exportedMiddleware, - benchmarkFiles, - }, - null, - 2, - ), - ); -} - -main(); diff --git a/middleware/docs/PERFORMANCE.md b/middleware/docs/PERFORMANCE.md deleted file mode 100644 index e7835b2..0000000 --- a/middleware/docs/PERFORMANCE.md +++ /dev/null @@ -1,13 +0,0 @@ -# Middleware Performance - -Last generated: pending benchmark execution - -Benchmarks use a 2 second warmup and 10 second measured run per middleware. Overhead is calculated as `middleware_p99 - baseline_p99`. - -The benchmark harness lives in `benchmarks/middleware/` and writes this file when `npm run benchmark:middleware` completes successfully. - -| Middleware | Source | Baseline p99 (ms) | Middleware p99 (ms) | Overhead p99 (ms) | p95 (ms) | p50 (ms) | Requests | Status Codes | Notes | -| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | --- | --- | -| JwtAuthMiddleware | `src/auth/jwt-auth.middleware.ts` | pending | pending | pending | pending | pending | pending | `pending` | Waiting for benchmark execution in a workspace with installed dependencies. | -| TimeoutMiddleware | `src/middleware/advanced/timeout.middleware.ts` | pending | pending | pending | pending | pending | pending | `pending` | Waiting for benchmark execution in a workspace with installed dependencies. | -| CircuitBreakerMiddleware | `src/middleware/advanced/circuit-breaker.middleware.ts` | pending | pending | pending | pending | pending | pending | `pending` | Waiting for benchmark execution in a workspace with installed dependencies. | diff --git a/middleware/package.json b/middleware/package.json index 64ccb9e..240f679 100644 --- a/middleware/package.json +++ b/middleware/package.json @@ -10,8 +10,6 @@ "test": "jest --passWithNoTests", "test:watch": "jest --watch --passWithNoTests", "test:cov": "jest --coverage --passWithNoTests", - "benchmark:middleware": "node benchmarks/middleware/run-all.cjs", - "benchmark:middleware:verify": "node benchmarks/middleware/verify-coverage.cjs", "lint": "eslint -c eslint.config.mjs \"src/**/*.ts\" \"tests/**/*.ts\"", "lint:fix": "eslint -c eslint.config.mjs \"src/**/*.ts\" \"tests/**/*.ts\" --fix", "format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",