UNPKG

lightweight-browser-load-tester

Version:

A lightweight load testing tool using real browsers for streaming applications with DRM support

130 lines 3.8 kB
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