Files
openclaw/apps/macos/Tests/OpenClawIPCTests/GatewayChannelShutdownTests.swift
2026-03-08 13:22:46 +00:00

30 lines
1.0 KiB
Swift

import Foundation
import OpenClawKit
import Testing
@testable import OpenClaw
struct GatewayChannelShutdownTests {
@Test func `shutdown prevents reconnect loop from receive failure`() async throws {
let session = GatewayTestWebSocketSession()
let channel = try GatewayChannelActor(
url: #require(URL(string: "ws://example.invalid")),
token: nil,
session: WebSocketSessionBox(session: session))
// Establish a connection so `listen()` is active.
try await channel.connect()
#expect(session.snapshotMakeCount() == 1)
// Simulate a socket receive failure, which would normally schedule a reconnect.
session.latestTask()?.emitReceiveFailure()
// Shut down quickly, before backoff reconnect triggers.
await channel.shutdown()
// Wait longer than the default reconnect backoff (500ms) to ensure no reconnect happens.
try? await Task.sleep(nanoseconds: 750 * 1_000_000)
#expect(session.snapshotMakeCount() == 1)
}
}