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', () => ({
|
jest.mock('../../Utils/prometheus-metrics.js', () => ({
|
||||||
metrics: {
|
metrics: {
|
||||||
socketEvents: { inc: jest.fn() },
|
socketEvents: { inc: jest.fn() },
|
||||||
errors: { inc: jest.fn() },
|
errors: { inc: jest.fn() }
|
||||||
circuitBreakerTrips: { inc: jest.fn() }
|
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
|
|
||||||
@@ -59,7 +58,6 @@ describe('UnifiedSessionManager', () => {
|
|||||||
manager = createUnifiedSessionManager({
|
manager = createUnifiedSessionManager({
|
||||||
enabled: true,
|
enabled: true,
|
||||||
logger: mockLogger as any,
|
logger: mockLogger as any,
|
||||||
enableCircuitBreaker: false, // Disable for simpler testing
|
|
||||||
sendNode: mockSendNode
|
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 manager: UnifiedSessionManager
|
||||||
let mockSendNode: MockSendNode
|
let mockSendNode: MockSendNode
|
||||||
|
|
||||||
@@ -366,7 +368,6 @@ describe('UnifiedSessionManager with CircuitBreaker', () => {
|
|||||||
manager = createUnifiedSessionManager({
|
manager = createUnifiedSessionManager({
|
||||||
enabled: true,
|
enabled: true,
|
||||||
logger: createMockLogger() as any,
|
logger: createMockLogger() as any,
|
||||||
enableCircuitBreaker: true,
|
|
||||||
sendNode: mockSendNode
|
sendNode: mockSendNode
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -375,24 +376,13 @@ describe('UnifiedSessionManager with CircuitBreaker', () => {
|
|||||||
manager.destroy()
|
manager.destroy()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should work with circuit breaker enabled', async () => {
|
it('should send telemetry once per call', async () => {
|
||||||
await manager.send('login')
|
await manager.send('login')
|
||||||
expect(mockSendNode).toHaveBeenCalledTimes(1)
|
expect(mockSendNode).toHaveBeenCalledTimes(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should handle circuit breaker failures gracefully', async () => {
|
it('should swallow send failures gracefully (telemetry is non-critical)', async () => {
|
||||||
// Make send fail multiple times to trigger circuit breaker
|
mockSendNode.mockRejectedValueOnce(new Error('boom'))
|
||||||
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()
|
|
||||||
await expect(manager.send('login')).resolves.toBeUndefined()
|
await expect(manager.send('login')).resolves.toBeUndefined()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user