fix(rustproxy): Use cooperative cancellation for background tasks, prune stale caches and metric entries, and switch tests to dynamic port allocation to avoid port conflicts
This commit is contained in:
+16
-12
@@ -8,24 +8,25 @@ import * as https from 'https';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { findFreePorts, assertPortsFree } from './helpers/port-allocator.js';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
// ────────────────────────────────────────────────────────────────────────────
|
||||
// Port assignments (unique to avoid conflicts with other tests)
|
||||
// Port assignments (dynamically allocated to avoid conflicts)
|
||||
// ────────────────────────────────────────────────────────────────────────────
|
||||
const TCP_ECHO_PORT = 47500;
|
||||
const HTTP_ECHO_PORT = 47501;
|
||||
const TLS_ECHO_PORT = 47502;
|
||||
const PROXY_TCP_PORT = 47510;
|
||||
const PROXY_HTTP_PORT = 47511;
|
||||
const PROXY_TLS_PASS_PORT = 47512;
|
||||
const PROXY_TLS_TERM_PORT = 47513;
|
||||
const PROXY_SOCKET_PORT = 47514;
|
||||
const PROXY_MULTI_A_PORT = 47515;
|
||||
const PROXY_MULTI_B_PORT = 47516;
|
||||
const PROXY_TP_HTTP_PORT = 47517;
|
||||
let TCP_ECHO_PORT: number;
|
||||
let HTTP_ECHO_PORT: number;
|
||||
let TLS_ECHO_PORT: number;
|
||||
let PROXY_TCP_PORT: number;
|
||||
let PROXY_HTTP_PORT: number;
|
||||
let PROXY_TLS_PASS_PORT: number;
|
||||
let PROXY_TLS_TERM_PORT: number;
|
||||
let PROXY_SOCKET_PORT: number;
|
||||
let PROXY_MULTI_A_PORT: number;
|
||||
let PROXY_MULTI_B_PORT: number;
|
||||
let PROXY_TP_HTTP_PORT: number;
|
||||
|
||||
// ────────────────────────────────────────────────────────────────────────────
|
||||
// Test certificates
|
||||
@@ -49,6 +50,8 @@ async function pollMetrics(proxy: SmartProxy): Promise<void> {
|
||||
// Setup: backend servers
|
||||
// ════════════════════════════════════════════════════════════════════════════
|
||||
tap.test('setup - TCP echo server', async () => {
|
||||
[TCP_ECHO_PORT, HTTP_ECHO_PORT, TLS_ECHO_PORT, PROXY_TCP_PORT, PROXY_HTTP_PORT, PROXY_TLS_PASS_PORT, PROXY_TLS_TERM_PORT, PROXY_SOCKET_PORT, PROXY_MULTI_A_PORT, PROXY_MULTI_B_PORT, PROXY_TP_HTTP_PORT] = await findFreePorts(11);
|
||||
|
||||
tcpEchoServer = net.createServer((socket) => {
|
||||
socket.on('data', (data) => socket.write(data));
|
||||
socket.on('error', () => {});
|
||||
@@ -700,6 +703,7 @@ tap.test('cleanup - close backend servers', async () => {
|
||||
await new Promise<void>((resolve) => httpEchoServer.close(() => resolve()));
|
||||
await new Promise<void>((resolve) => tlsEchoServer.close(() => resolve()));
|
||||
console.log('All backend servers closed');
|
||||
await assertPortsFree([TCP_ECHO_PORT, HTTP_ECHO_PORT, TLS_ECHO_PORT, PROXY_TCP_PORT, PROXY_HTTP_PORT, PROXY_TLS_PASS_PORT, PROXY_TLS_TERM_PORT, PROXY_SOCKET_PORT, PROXY_MULTI_A_PORT, PROXY_MULTI_B_PORT, PROXY_TP_HTTP_PORT]);
|
||||
});
|
||||
|
||||
export default tap.start();
|
||||
|
||||
Reference in New Issue
Block a user