fix(connection-manager): set default maxConnections to 10000 if not specified
This commit is contained in:
parent
829ae0d6a3
commit
96c4de0f8a
@ -1,207 +0,0 @@
|
|||||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
|
||||||
import {
|
|
||||||
EventSystem,
|
|
||||||
ProxyEvents,
|
|
||||||
ComponentType
|
|
||||||
} from '../../../ts/core/utils/event-system.js';
|
|
||||||
|
|
||||||
// Setup function for creating a new event system
|
|
||||||
function setupEventSystem(): { eventSystem: EventSystem, receivedEvents: any[] } {
|
|
||||||
const eventSystem = new EventSystem(ComponentType.SMART_PROXY, 'test-id');
|
|
||||||
const receivedEvents: any[] = [];
|
|
||||||
return { eventSystem, receivedEvents };
|
|
||||||
}
|
|
||||||
|
|
||||||
tap.test('Event System - certificate events with correct structure', async () => {
|
|
||||||
const { eventSystem, receivedEvents } = setupEventSystem();
|
|
||||||
|
|
||||||
// Set up listeners
|
|
||||||
eventSystem.on(ProxyEvents.CERTIFICATE_ISSUED, (data) => {
|
|
||||||
receivedEvents.push({
|
|
||||||
type: 'issued',
|
|
||||||
data
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
eventSystem.on(ProxyEvents.CERTIFICATE_RENEWED, (data) => {
|
|
||||||
receivedEvents.push({
|
|
||||||
type: 'renewed',
|
|
||||||
data
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Emit events
|
|
||||||
eventSystem.emitCertificateIssued({
|
|
||||||
domain: 'example.com',
|
|
||||||
certificate: 'cert-content',
|
|
||||||
privateKey: 'key-content',
|
|
||||||
expiryDate: new Date('2025-01-01')
|
|
||||||
});
|
|
||||||
|
|
||||||
eventSystem.emitCertificateRenewed({
|
|
||||||
domain: 'example.com',
|
|
||||||
certificate: 'new-cert-content',
|
|
||||||
privateKey: 'new-key-content',
|
|
||||||
expiryDate: new Date('2026-01-01'),
|
|
||||||
isRenewal: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// Verify events
|
|
||||||
expect(receivedEvents.length).toEqual(2);
|
|
||||||
|
|
||||||
// Check issuance event
|
|
||||||
expect(receivedEvents[0].type).toEqual('issued');
|
|
||||||
expect(receivedEvents[0].data.domain).toEqual('example.com');
|
|
||||||
expect(receivedEvents[0].data.certificate).toEqual('cert-content');
|
|
||||||
expect(receivedEvents[0].data.componentType).toEqual(ComponentType.SMART_PROXY);
|
|
||||||
expect(receivedEvents[0].data.componentId).toEqual('test-id');
|
|
||||||
expect(typeof receivedEvents[0].data.timestamp).toEqual('number');
|
|
||||||
|
|
||||||
// Check renewal event
|
|
||||||
expect(receivedEvents[1].type).toEqual('renewed');
|
|
||||||
expect(receivedEvents[1].data.domain).toEqual('example.com');
|
|
||||||
expect(receivedEvents[1].data.isRenewal).toEqual(true);
|
|
||||||
expect(receivedEvents[1].data.expiryDate).toEqual(new Date('2026-01-01'));
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('Event System - component lifecycle events', async () => {
|
|
||||||
const { eventSystem, receivedEvents } = setupEventSystem();
|
|
||||||
|
|
||||||
// Set up listeners
|
|
||||||
eventSystem.on(ProxyEvents.COMPONENT_STARTED, (data) => {
|
|
||||||
receivedEvents.push({
|
|
||||||
type: 'started',
|
|
||||||
data
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
eventSystem.on(ProxyEvents.COMPONENT_STOPPED, (data) => {
|
|
||||||
receivedEvents.push({
|
|
||||||
type: 'stopped',
|
|
||||||
data
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Emit events
|
|
||||||
eventSystem.emitComponentStarted('TestComponent', '1.0.0');
|
|
||||||
eventSystem.emitComponentStopped('TestComponent');
|
|
||||||
|
|
||||||
// Verify events
|
|
||||||
expect(receivedEvents.length).toEqual(2);
|
|
||||||
|
|
||||||
// Check started event
|
|
||||||
expect(receivedEvents[0].type).toEqual('started');
|
|
||||||
expect(receivedEvents[0].data.name).toEqual('TestComponent');
|
|
||||||
expect(receivedEvents[0].data.version).toEqual('1.0.0');
|
|
||||||
|
|
||||||
// Check stopped event
|
|
||||||
expect(receivedEvents[1].type).toEqual('stopped');
|
|
||||||
expect(receivedEvents[1].data.name).toEqual('TestComponent');
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('Event System - connection events', async () => {
|
|
||||||
const { eventSystem, receivedEvents } = setupEventSystem();
|
|
||||||
|
|
||||||
// Set up listeners
|
|
||||||
eventSystem.on(ProxyEvents.CONNECTION_ESTABLISHED, (data) => {
|
|
||||||
receivedEvents.push({
|
|
||||||
type: 'established',
|
|
||||||
data
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
eventSystem.on(ProxyEvents.CONNECTION_CLOSED, (data) => {
|
|
||||||
receivedEvents.push({
|
|
||||||
type: 'closed',
|
|
||||||
data
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Emit events
|
|
||||||
eventSystem.emitConnectionEstablished({
|
|
||||||
connectionId: 'conn-123',
|
|
||||||
clientIp: '192.168.1.1',
|
|
||||||
port: 443,
|
|
||||||
isTls: true,
|
|
||||||
domain: 'example.com'
|
|
||||||
});
|
|
||||||
|
|
||||||
eventSystem.emitConnectionClosed({
|
|
||||||
connectionId: 'conn-123',
|
|
||||||
clientIp: '192.168.1.1',
|
|
||||||
port: 443
|
|
||||||
});
|
|
||||||
|
|
||||||
// Verify events
|
|
||||||
expect(receivedEvents.length).toEqual(2);
|
|
||||||
|
|
||||||
// Check established event
|
|
||||||
expect(receivedEvents[0].type).toEqual('established');
|
|
||||||
expect(receivedEvents[0].data.connectionId).toEqual('conn-123');
|
|
||||||
expect(receivedEvents[0].data.clientIp).toEqual('192.168.1.1');
|
|
||||||
expect(receivedEvents[0].data.port).toEqual(443);
|
|
||||||
expect(receivedEvents[0].data.isTls).toEqual(true);
|
|
||||||
|
|
||||||
// Check closed event
|
|
||||||
expect(receivedEvents[1].type).toEqual('closed');
|
|
||||||
expect(receivedEvents[1].data.connectionId).toEqual('conn-123');
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('Event System - once and off subscription methods', async () => {
|
|
||||||
const { eventSystem, receivedEvents } = setupEventSystem();
|
|
||||||
|
|
||||||
// Set up a listener that should fire only once
|
|
||||||
eventSystem.once(ProxyEvents.CONNECTION_ESTABLISHED, (data) => {
|
|
||||||
receivedEvents.push({
|
|
||||||
type: 'once',
|
|
||||||
data
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Set up a persistent listener
|
|
||||||
const persistentHandler = (data: any) => {
|
|
||||||
receivedEvents.push({
|
|
||||||
type: 'persistent',
|
|
||||||
data
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
eventSystem.on(ProxyEvents.CONNECTION_ESTABLISHED, persistentHandler);
|
|
||||||
|
|
||||||
// First event should trigger both listeners
|
|
||||||
eventSystem.emitConnectionEstablished({
|
|
||||||
connectionId: 'conn-1',
|
|
||||||
clientIp: '192.168.1.1',
|
|
||||||
port: 443
|
|
||||||
});
|
|
||||||
|
|
||||||
// Second event should only trigger the persistent listener
|
|
||||||
eventSystem.emitConnectionEstablished({
|
|
||||||
connectionId: 'conn-2',
|
|
||||||
clientIp: '192.168.1.1',
|
|
||||||
port: 443
|
|
||||||
});
|
|
||||||
|
|
||||||
// Unsubscribe the persistent listener
|
|
||||||
eventSystem.off(ProxyEvents.CONNECTION_ESTABLISHED, persistentHandler);
|
|
||||||
|
|
||||||
// Third event should not trigger any listeners
|
|
||||||
eventSystem.emitConnectionEstablished({
|
|
||||||
connectionId: 'conn-3',
|
|
||||||
clientIp: '192.168.1.1',
|
|
||||||
port: 443
|
|
||||||
});
|
|
||||||
|
|
||||||
// Verify events
|
|
||||||
expect(receivedEvents.length).toEqual(3);
|
|
||||||
expect(receivedEvents[0].type).toEqual('once');
|
|
||||||
expect(receivedEvents[0].data.connectionId).toEqual('conn-1');
|
|
||||||
|
|
||||||
expect(receivedEvents[1].type).toEqual('persistent');
|
|
||||||
expect(receivedEvents[1].data.connectionId).toEqual('conn-1');
|
|
||||||
|
|
||||||
expect(receivedEvents[2].type).toEqual('persistent');
|
|
||||||
expect(receivedEvents[2].data.connectionId).toEqual('conn-2');
|
|
||||||
});
|
|
||||||
|
|
||||||
export default tap.start();
|
|
@ -34,7 +34,7 @@ export class ConnectionManager extends LifecycleComponent {
|
|||||||
super();
|
super();
|
||||||
|
|
||||||
// Set reasonable defaults for connection limits
|
// Set reasonable defaults for connection limits
|
||||||
this.maxConnections = settings.defaults.security.maxConnections
|
this.maxConnections = settings.defaults?.security?.maxConnections || 10000;
|
||||||
|
|
||||||
// Start inactivity check timer if not disabled
|
// Start inactivity check timer if not disabled
|
||||||
if (!settings.disableInactivityCheck) {
|
if (!settings.disableInactivityCheck) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user