@@ -123,78 +123,84 @@ final class CAresDNSResolverTests: XCTestCase {
123
123
124
124
func test_concurrency( ) async throws {
125
125
func run(
126
+ _ name: String ,
126
127
times: Int = 100 ,
127
128
_ query: @Sendable @escaping ( _ index: Int ) async throws -> Void
128
129
) async throws {
129
- try await withThrowingTaskGroup ( of: Void . self) { group in
130
- for i in 1 ... times {
131
- group. addTask {
132
- try await query ( i)
130
+ do {
131
+ try await withThrowingTaskGroup ( of: Void . self) { group in
132
+ for i in 1 ... times {
133
+ group. addTask {
134
+ try await query ( i)
135
+ }
133
136
}
137
+ for try await _ in group { }
134
138
}
135
- for try await _ in group { }
139
+ } catch {
140
+ print ( " Test of \( name) is throwing an error. " )
141
+ throw error
136
142
}
137
143
}
138
144
139
145
let resolver = self . resolver!
140
146
let verbose = self . verbose
141
- try await run { i in
147
+ try await run ( " queryA " ) { i in
142
148
let reply = try await resolver. queryA ( name: " apple.com " )
143
149
if verbose {
144
150
print ( " [A] run # \( i) result: \( reply) " )
145
151
}
146
152
}
147
153
148
- try await run { i in
154
+ try await run ( " queryAAAA " ) { i in
149
155
let reply = try await resolver. queryAAAA ( name: " apple.com " )
150
156
if verbose {
151
157
print ( " [AAAA] run # \( i) result: \( reply) " )
152
158
}
153
159
}
154
160
155
- try await run { i in
161
+ try await run ( " queryNS " ) { i in
156
162
let reply = try await resolver. queryNS ( name: " apple.com " )
157
163
if verbose {
158
164
print ( " [NS] run # \( i) result: \( reply) " )
159
165
}
160
166
}
161
167
162
- try await run { i in
168
+ try await run ( " queryCNAME " ) { i in
163
169
let reply = try await resolver. queryCNAME ( name: " www.apple.com " )
164
170
if verbose {
165
171
print ( " [CNAME] run # \( i) result: \( String ( describing: reply) ) " )
166
172
}
167
173
}
168
174
169
- try await run { i in
175
+ try await run ( " querySOA " ) { i in
170
176
let reply = try await resolver. querySOA ( name: " apple.com " )
171
177
if verbose {
172
178
print ( " [SOA] run # \( i) result: \( String ( describing: reply) ) " )
173
179
}
174
180
}
175
181
176
- try await run { i in
182
+ try await run ( " queryPTR " ) { i in
177
183
let reply = try await resolver. queryPTR ( name: " 47.224.172.17.in-addr.arpa " )
178
184
if verbose {
179
185
print ( " [PTR] run # \( i) result: \( reply) " )
180
186
}
181
187
}
182
188
183
- try await run { i in
189
+ try await run ( " queryMX " ) { i in
184
190
let reply = try await resolver. queryMX ( name: " apple.com " )
185
191
if verbose {
186
192
print ( " [MX] run # \( i) result: \( reply) " )
187
193
}
188
194
}
189
195
190
- try await run { i in
196
+ try await run ( " queryTXT " ) { i in
191
197
let reply = try await resolver. queryTXT ( name: " apple.com " )
192
198
if verbose {
193
199
print ( " [TXT] run # \( i) result: \( reply) " )
194
200
}
195
201
}
196
202
197
- try await run { i in
203
+ try await run ( " querySRV " ) { i in
198
204
let reply = try await resolver. querySRV ( name: " _caldavs._tcp.google.com " )
199
205
if verbose {
200
206
print ( " [SRV] run # \( i) result: \( reply) " )
0 commit comments