lightweight-browser-load-tester
Version:
A lightweight load testing tool using real browsers for streaming applications with DRM support
130 lines • 3.8 kB
TypeScript
import { EventEmitter } from 'events';
import { BrowserMetrics, BrowserPoolConfig, ManagedBrowserInstance } from '../types';
/**
* Browser pool manager that handles browser instance lifecycle and resource monitoring
*/
export declare class BrowserPool extends EventEmitter {
private instances;
private availableInstances;
private config;
private resourceMonitorInterval?;
private isShuttingDown;
private errorRecovery;
private metricsHistory;
constructor(config: BrowserPoolConfig);
/**
* Initialize the browser pool with minimum instances
*/
initialize(): Promise<void>;
/**
* Acquire a browser instance from the pool
*/
acquireInstance(): Promise<ManagedBrowserInstance>;
/**
* Release a browser instance back to the pool
*/
releaseInstance(instanceId: string): Promise<void>;
/**
* Get current metrics for all browser instances (including recently disconnected)
*/
getMetrics(): BrowserMetrics[];
/**
* Get pool status information
*/
getPoolStatus(): {
totalInstances: number;
availableInstances: number;
activeInstances: number;
maxInstances: number;
resourceLimits: import("../types").ResourceLimits;
};
/**
* Shutdown the browser pool and cleanup all instances
*/
shutdown(): Promise<void>;
/**
* Get error recovery statistics
*/
getErrorRecoveryStats(): {
totalInstances: number;
failingInstances: number;
blacklistedInstances: number;
openCircuitBreakers: number;
halfOpenCircuitBreakers: number;
totalFailures: number;
totalRestarts: number;
};
/**
* Setup error recovery event handlers
*/
private setupErrorRecoveryEvents;
/**
* Create a new browser instance
*/
private createBrowserInstance;
/**
* Destroy a browser instance and clean up resources
*/
private destroyInstance;
/**
* Handle browser disconnect events
*/
private handleBrowserDisconnect;
/**
* Ensure the pool maintains minimum instance count
*/
private ensureMinimumPoolSize;
/**
* Attempt to restart a failed browser instance
*/
private attemptInstanceRestart;
/**
* Start monitoring resource usage of browser instances
*/
private startResourceMonitoring;
/**
* Update resource metrics for all browser instances
*/
private updateResourceMetrics;
/**
* Get memory usage for a browser instance
*/
private getBrowserMemoryUsage;
/**
* Enforce resource limits by destroying instances that exceed limits
*/
private enforceResourceLimits;
/**
* Perform comprehensive memory cleanup on browser instance
*/
private performMemoryCleanup;
/**
* Perform aggressive memory cleanup for instances approaching limits
*/
private performAggressiveMemoryCleanup;
/**
* Get detailed resource usage statistics
*/
getResourceUsageStats(): {
totalInstances: number;
activeInstances: number;
totalMemoryUsage: number;
averageMemoryUsage: number;
totalCpuUsage: number;
averageCpuUsage: number;
memoryUtilization: number;
cpuUtilization: number;
instancesNearMemoryLimit: number;
instancesNearCpuLimit: number;
resourceLimits: import("../types").ResourceLimits;
};
/**
* Force cleanup of idle instances to free resources
*/
cleanupIdleInstances(maxIdleTime?: number): Promise<number>;
/**
* Initialize localStorage for all configured domains
*/
private initializeLocalStorage;
}
//# sourceMappingURL=browser-pool.d.ts.map