@@ -122,79 +122,95 @@ final class CAresDNSResolverTests: XCTestCase {
122122 }
123123
124124 func test_concurrency( ) async throws {
125+ let verbose = self . verbose
126+
125127 func run(
128+ _ name: String ,
126129 times: Int = 100 ,
127130 _ query: @Sendable @escaping ( _ index: Int ) async throws -> Void
128131 ) 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)
132+ let start = Date . now
133+ defer {
134+ if verbose {
135+ print ( " Test of \( name) took \( Int64 ( start. timeIntervalSinceNow * - 1000 ) ) ms. " )
136+ }
137+ }
138+ do {
139+ try await withThrowingTaskGroup ( of: Void . self) { group in
140+ for i in 1 ... times {
141+ group. addTask {
142+ try await query ( i)
143+ }
133144 }
145+ for try await _ in group { }
146+ }
147+ } catch {
148+ if verbose {
149+ print ( " Test of \( name) is throwing an error. " )
134150 }
135- for try await _ in group { }
151+ throw error
136152 }
137153 }
138154
139155 let resolver = self . resolver!
140- let verbose = self . verbose
141- try await run { i in
156+ try await run ( " queryA " ) { i in
142157 let reply = try await resolver. queryA ( name: " apple.com " )
143158 if verbose {
144159 print ( " [A] run # \( i) result: \( reply) " )
145160 }
146161 }
147162
148- try await run { i in
163+ try await run ( " queryAAAA " ) { i in
149164 let reply = try await resolver. queryAAAA ( name: " apple.com " )
150165 if verbose {
151166 print ( " [AAAA] run # \( i) result: \( reply) " )
152167 }
153168 }
154169
155- try await run { i in
170+ try await run ( " queryNS " ) { i in
156171 let reply = try await resolver. queryNS ( name: " apple.com " )
157172 if verbose {
158173 print ( " [NS] run # \( i) result: \( reply) " )
159174 }
160175 }
161176
162- try await run { i in
177+ try await run ( " queryCNAME " ) { i in
163178 let reply = try await resolver. queryCNAME ( name: " www.apple.com " )
164179 if verbose {
165180 print ( " [CNAME] run # \( i) result: \( String ( describing: reply) ) " )
166181 }
167182 }
168183
169- try await run { i in
184+ try await run ( " querySOA " ) { i in
170185 let reply = try await resolver. querySOA ( name: " apple.com " )
171186 if verbose {
172187 print ( " [SOA] run # \( i) result: \( String ( describing: reply) ) " )
173188 }
174189 }
175190
176- try await run { i in
191+ try await run ( " queryPTR " ) { i in
177192 let reply = try await resolver. queryPTR ( name: " 47.224.172.17.in-addr.arpa " )
178193 if verbose {
179194 print ( " [PTR] run # \( i) result: \( reply) " )
180195 }
181196 }
182197
183- try await run { i in
198+ try await run ( " queryMX " ) { i in
184199 let reply = try await resolver. queryMX ( name: " apple.com " )
185200 if verbose {
186201 print ( " [MX] run # \( i) result: \( reply) " )
187202 }
188203 }
189204
190- try await run { i in
205+ // TXT lookups are very slow in CI and lead to timeouts.
206+ try await run ( " queryTXT " , times: 5 ) { i in
191207 let reply = try await resolver. queryTXT ( name: " apple.com " )
192208 if verbose {
193209 print ( " [TXT] run # \( i) result: \( reply) " )
194210 }
195211 }
196212
197- try await run { i in
213+ try await run ( " querySRV " ) { i in
198214 let reply = try await resolver. querySRV ( name: " _caldavs._tcp.google.com " )
199215 if verbose {
200216 print ( " [SRV] run # \( i) result: \( reply) " )
0 commit comments