Skip to content

Commit 41b6e20

Browse files
committed
Fix flaky test
1 parent b549df5 commit 41b6e20

File tree

1 file changed

+40
-84
lines changed

1 file changed

+40
-84
lines changed

Tests/GRPCNIOTransportHTTP2Tests/HTTP2TransportTLSEnabledTests.swift

+40-84
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,7 @@ struct HTTP2TransportTLSEnabledTests {
154154

155155
@Test(
156156
"Error is surfaced when server fails client verification",
157-
arguments: TransportKind.supported,
158-
TransportKind.supported
157+
arguments: [TransportKind.posix], [TransportKind.posix]
159158
)
160159
// Verification should fail because the client does not offer a cert that
161160
// the server can use for mutual verification.
@@ -229,8 +228,6 @@ struct HTTP2TransportTLSEnabledTests {
229228
enum TLSEnabledTestsError: Error {
230229
case failedToImportPKCS12
231230
case unexpectedListeningAddress
232-
case serverError(cause: any Error)
233-
case clientError(cause: any Error)
234231
}
235232

236233
struct Config<Transport, Security> {
@@ -477,98 +474,57 @@ struct HTTP2TransportTLSEnabledTests {
477474
serverConfig: ServerConfig,
478475
_ test: (ControlClient<NIOClientTransport>) async throws -> Void
479476
) async throws {
480-
try await withThrowingDiscardingTaskGroup { group in
481-
let server = self.makeServer(config: serverConfig)
482-
483-
group.addTask {
484-
do {
485-
try await server.serve()
486-
} catch {
487-
throw TLSEnabledTestsError.serverError(cause: error)
488-
}
489-
}
477+
let serverTransport: NIOServerTransport
478+
switch serverConfig {
479+
case .posix(let posix):
480+
serverTransport = NIOServerTransport(
481+
.http2NIOPosix(
482+
address: .ipv4(host: "127.0.0.1", port: 0),
483+
transportSecurity: posix.security,
484+
config: posix.transport
485+
)
486+
)
487+
#if canImport(Network)
488+
case .transportServices(let config):
489+
serverTransport = NIOServerTransport(
490+
.http2NIOTS(
491+
address: .ipv4(host: "127.0.0.1", port: 0),
492+
transportSecurity: config.security,
493+
config: config.transport
494+
)
495+
)
496+
#endif
497+
}
490498

499+
try await withGRPCServer(transport: serverTransport, services: [ControlService()]) { server in
491500
guard let address = try await server.listeningAddress?.ipv4 else {
492501
throw TLSEnabledTestsError.unexpectedListeningAddress
493502
}
494503

495504
let target: any ResolvableTarget = .ipv4(host: address.host, port: address.port)
496-
let client = try self.makeClient(config: clientConfig, target: target)
497-
498-
group.addTask {
499-
do {
500-
try await client.runConnections()
501-
} catch {
502-
throw TLSEnabledTestsError.clientError(cause: error)
503-
}
504-
}
505-
506-
let control = ControlClient(wrapping: client)
507-
try await test(control)
508-
509-
client.beginGracefulShutdown()
510-
server.beginGracefulShutdown()
511-
}
512-
}
513-
514-
private func makeServer(config: ServerConfig) -> GRPCServer<NIOServerTransport> {
515-
let services = [ControlService()]
516-
517-
switch config {
518-
case .posix(let config):
519-
return GRPCServer(
520-
transport: NIOServerTransport(
505+
let clientTransport: NIOClientTransport
506+
switch clientConfig {
507+
case .posix(let config):
508+
clientTransport = try NIOClientTransport(
521509
.http2NIOPosix(
522-
address: .ipv4(host: "127.0.0.1", port: 0),
510+
target: target,
523511
transportSecurity: config.security,
524512
config: config.transport
525513
)
526-
),
527-
services: services
528-
)
529-
530-
#if canImport(Network)
531-
case .transportServices(let config):
532-
return GRPCServer(
533-
transport: NIOServerTransport(
534-
.http2NIOTS(
535-
address: .ipv4(host: "127.0.0.1", port: 0),
536-
transportSecurity: config.security,
537-
config: config.transport
538-
)
539-
),
540-
services: services
541-
)
542-
#endif
543-
}
544-
}
545-
546-
private func makeClient(
547-
config: ClientConfig,
548-
target: any ResolvableTarget
549-
) throws -> GRPCClient<NIOClientTransport> {
550-
switch config {
551-
case .posix(let config):
552-
let transport = try HTTP2ClientTransport.Posix(
553-
target: target,
554-
transportSecurity: config.security,
555-
config: config.transport,
556-
serviceConfig: ServiceConfig()
557-
)
558-
return GRPCClient(transport: NIOClientTransport(transport))
514+
)
515+
#if canImport(Network)
516+
case .transportServices(let config):
517+
clientTransport = try NIOClientTransport(
518+
.http2NIOTS(target: target, transportSecurity: config.security, config: config.transport)
519+
)
520+
#endif
521+
}
559522

560-
#if canImport(Network)
561-
case .transportServices(let config):
562-
let transport = try HTTP2ClientTransport.TransportServices(
563-
target: target,
564-
transportSecurity: config.security,
565-
config: config.transport,
566-
serviceConfig: ServiceConfig()
567-
)
568-
return GRPCClient(transport: NIOClientTransport(transport))
569-
#endif
523+
try await withGRPCClient(transport: clientTransport) { client in
524+
let control = ControlClient(wrapping: client)
525+
try await test(control)
526+
}
570527
}
571-
572528
}
573529

574530
private func executeUnaryRPC(control: ControlClient<NIOClientTransport>) async throws {

0 commit comments

Comments
 (0)