Skip to content

Commit ca808d0

Browse files
test: streaming test uses dynamic wait
1 parent f6314a6 commit ca808d0

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

Tests/GraphQLWSTests/GraphQLWSTests.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class GraphqlWsTests: XCTestCase {
1010
var serverMessenger: TestMessenger!
1111
var server: Server<TokenInitPayload, AsyncThrowingStream<GraphQLResult, Error>>!
1212
var context: TestContext!
13+
var subscribeReady: Bool! = false
1314

1415
override func setUp() {
1516
// Point the client and server at each other
@@ -30,10 +31,12 @@ class GraphqlWsTests: XCTestCase {
3031
)
3132
},
3233
onSubscribe: { graphQLRequest in
33-
try await api.subscribe(
34+
let subscription = try await api.subscribe(
3435
request: graphQLRequest.query,
3536
context: context
3637
).get()
38+
self.subscribeReady = true
39+
return subscription
3740
}
3841
)
3942
self.context = context
@@ -168,8 +171,15 @@ class GraphqlWsTests: XCTestCase {
168171
id: id
169172
)
170173

171-
// Short sleep to allow for server to register subscription
172-
usleep(3000)
174+
// Wait until server has registered subscription
175+
var i = 0
176+
while !self.subscribeReady, i < 50 {
177+
usleep(1000)
178+
i = i + 1
179+
}
180+
if i == 50 {
181+
XCTFail("Subscription timeout: Took longer than 50ms to set up")
182+
}
173183

174184
self.context.publisher.emit(event: "hello \(dataIndex)")
175185
}

0 commit comments

Comments
 (0)