refactor(tests): adapt unified-session tests to no-circuit-breaker world
- Remove circuitBreakerTrips from the prometheus-metrics mock (metric no longer emitted now that telemetry path skips the circuit breaker). - Drop the enableCircuitBreaker option from the default test setup. - Replace the "with CircuitBreaker" describe block with an equivalent suite that asserts the same observable behavior (single send per call, failures swallowed gracefully) without requiring the option. All 31 unified-session tests pass.
This commit is contained in:
@@ -29,8 +29,7 @@ const TimeMs = {
|
||||
jest.mock('../../Utils/prometheus-metrics.js', () => ({
|
||||
metrics: {
|
||||
socketEvents: { inc: jest.fn() },
|
||||
errors: { inc: jest.fn() },
|
||||
circuitBreakerTrips: { inc: jest.fn() }
|
||||
errors: { inc: jest.fn() }
|
||||
}
|
||||
}))
|
||||
|
||||
@@ -59,7 +58,6 @@ describe('UnifiedSessionManager', () => {
|
||||
manager = createUnifiedSessionManager({
|
||||
enabled: true,
|
||||
logger: mockLogger as any,
|
||||
enableCircuitBreaker: false, // Disable for simpler testing
|
||||
sendNode: mockSendNode
|
||||
})
|
||||
})
|
||||
@@ -356,7 +354,11 @@ describe('shouldEnableUnifiedSession', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('UnifiedSessionManager with CircuitBreaker', () => {
|
||||
describe('UnifiedSessionManager — non-critical send semantics', () => {
|
||||
// The previous "with CircuitBreaker" suite is gone — telemetry no longer
|
||||
// uses a circuit breaker. Verify equivalent behavior still holds:
|
||||
// failures are swallowed (telemetry is non-critical) and don't propagate.
|
||||
|
||||
let manager: UnifiedSessionManager
|
||||
let mockSendNode: MockSendNode
|
||||
|
||||
@@ -366,7 +368,6 @@ describe('UnifiedSessionManager with CircuitBreaker', () => {
|
||||
manager = createUnifiedSessionManager({
|
||||
enabled: true,
|
||||
logger: createMockLogger() as any,
|
||||
enableCircuitBreaker: true,
|
||||
sendNode: mockSendNode
|
||||
})
|
||||
})
|
||||
@@ -375,24 +376,13 @@ describe('UnifiedSessionManager with CircuitBreaker', () => {
|
||||
manager.destroy()
|
||||
})
|
||||
|
||||
it('should work with circuit breaker enabled', async () => {
|
||||
it('should send telemetry once per call', async () => {
|
||||
await manager.send('login')
|
||||
expect(mockSendNode).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
|
||||
it('should handle circuit breaker failures gracefully', async () => {
|
||||
// Make send fail multiple times to trigger circuit breaker
|
||||
let callCount = 0
|
||||
mockSendNode.mockImplementation(async () => {
|
||||
callCount++
|
||||
if (callCount <= 3) {
|
||||
throw new Error(`Fail ${callCount}`)
|
||||
}
|
||||
})
|
||||
|
||||
// These should not throw even with failures
|
||||
await expect(manager.send('login')).resolves.toBeUndefined()
|
||||
await expect(manager.send('login')).resolves.toBeUndefined()
|
||||
it('should swallow send failures gracefully (telemetry is non-critical)', async () => {
|
||||
mockSendNode.mockRejectedValueOnce(new Error('boom'))
|
||||
await expect(manager.send('login')).resolves.toBeUndefined()
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user