lightweight-browser-load-tester
Version:
A lightweight load testing tool using real browsers for streaming applications with DRM support
124 lines • 3.31 kB
TypeScript
import { EventEmitter } from 'events';
/**
* Circuit breaker states
*/
export declare enum CircuitBreakerState {
CLOSED = "closed",// Normal operation
OPEN = "open",// Failing, rejecting requests
HALF_OPEN = "half-open"
}
/**
* Circuit breaker configuration
*/
export interface CircuitBreakerConfig {
failureThreshold: number;
recoveryTimeout: number;
successThreshold: number;
monitoringWindow: number;
}
/**
* Browser instance failure tracking
*/
export interface InstanceFailureInfo {
instanceId: string;
failureCount: number;
lastFailureTime: Date;
consecutiveFailures: number;
totalRestarts: number;
isBlacklisted: boolean;
blacklistUntil?: Date;
}
/**
* Recovery attempt result
*/
export interface RecoveryAttempt {
instanceId: string;
timestamp: Date;
success: boolean;
error?: Error;
attemptNumber: number;
}
/**
* Error recovery manager that handles browser instance failures and recovery
*/
export declare class ErrorRecoveryManager extends EventEmitter {
private circuitBreakers;
private failureTracking;
private recoveryAttempts;
private config;
private cleanupInterval?;
constructor(config?: Partial<CircuitBreakerConfig>);
/**
* Record a failure for a browser instance
*/
recordFailure(instanceId: string, error: Error, context?: Record<string, any>): void;
/**
* Record a successful operation for a browser instance
*/
recordSuccess(instanceId: string): void;
/**
* Check if an instance should be allowed to operate
*/
canUseInstance(instanceId: string): boolean;
/**
* Determine if an instance should be restarted
*/
shouldRestartInstance(instanceId: string): boolean;
/**
* Record a restart attempt
*/
recordRestartAttempt(instanceId: string, success: boolean, error?: Error): void;
/**
* Get failure statistics for an instance
*/
getInstanceStats(instanceId: string): InstanceFailureInfo | null;
/**
* Get circuit breaker state for an instance
*/
getCircuitBreakerState(instanceId: string): CircuitBreakerState;
/**
* Get all recovery attempts for an instance
*/
getRecoveryAttempts(instanceId: string): RecoveryAttempt[];
/**
* Get comprehensive error recovery statistics
*/
getRecoveryStats(): {
totalInstances: number;
failingInstances: number;
blacklistedInstances: number;
openCircuitBreakers: number;
halfOpenCircuitBreakers: number;
totalFailures: number;
totalRestarts: number;
};
/**
* Reset failure tracking for an instance
*/
resetInstance(instanceId: string): void;
/**
* Cleanup old tracking data
*/
cleanup(): void;
/**
* Shutdown the error recovery manager
*/
shutdown(): void;
/**
* Evaluate circuit breaker state based on failure info
*/
private evaluateCircuitBreaker;
/**
* Blacklist an instance temporarily
*/
private blacklistInstance;
/**
* Start periodic cleanup process
*/
private startCleanupProcess;
/**
* Log error with comprehensive context
*/
private logError;
}
//# sourceMappingURL=error-recovery.d.ts.map