Skip to content

Commit

Permalink
Add testGracefulShutdown (#69)
Browse files Browse the repository at this point in the history
* Add testGracefulShutdown

* Add XCT tests inside testGracefulShutdown
  • Loading branch information
adam-fowler committed Jul 8, 2024
1 parent 356b319 commit 6ea08b2
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions Tests/HummingbirdWebSocketTests/WebSocketTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -658,6 +658,56 @@ final class HummingbirdWebSocketTests: XCTestCase {
XCTAssertEqual(rt?.closeCode, .protocolError)
}
}

// test WebSocket channel graceful shutdown
func testGracefulShutdown() async throws {
await withThrowingTaskGroup(of: Void.self) { group in
let promise = Promise<Int>()
let logger = {
var logger = Logger(label: "WebSocketTest")
logger.logLevel = .debug
return logger
}()
let router = Router()
let serviceGroup: ServiceGroup
let app = Application(
router: router,
server: .http1WebSocketUpgrade { _, _, _ in
return .upgrade { inbound, outbound, _ in
try await outbound.write(.text("Hello"))
for try await _ in inbound {
XCTFail("Shouldn't receive anything")
}
}
},
configuration: .init(address: .hostname("127.0.0.1", port: 0)),
onServerRunning: { channel in await promise.complete(channel.localAddress!.port!) },
logger: logger
)
serviceGroup = ServiceGroup(
configuration: .init(
services: [app],
gracefulShutdownSignals: [.sigterm, .sigint],
logger: app.logger
)
)
group.addTask {
try await serviceGroup.run()
}
let connectPromise = Promise<Void>()
group.addTask {
try await WebSocketClient.connect(url: .init("ws://localhost:\(promise.wait())/ws"), logger: logger) { inbound, _, _ in
await connectPromise.complete(())
var iterator = inbound.makeAsyncIterator()
let firstMessage = try await iterator.nextMessage(maxSize: .max)
XCTAssertEqual(firstMessage, .text("Hello"))
while try await iterator.next() != nil {}
}
}
_ = await connectPromise.wait()
await serviceGroup.triggerGracefulShutdown()
}
}
}

extension Logger {
Expand Down

0 comments on commit 6ea08b2

Please sign in to comment.