Skip to content

Commit

Permalink
Fix slow failing test (#57)
Browse files Browse the repository at this point in the history
  • Loading branch information
czechboy0 authored Jan 29, 2025
1 parent 8f48ec0 commit 3ab10e1
Showing 1 changed file with 31 additions and 15 deletions.
46 changes: 31 additions & 15 deletions Tests/AsyncDNSResolverTests/c-ares/CAresDNSResolverTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -122,79 +122,95 @@ final class CAresDNSResolverTests: XCTestCase {
}

func test_concurrency() async throws {
let verbose = self.verbose

func run(
_ name: String,
times: Int = 100,
_ query: @Sendable @escaping (_ index: Int) async throws -> Void
) async throws {
try await withThrowingTaskGroup(of: Void.self) { group in
for i in 1...times {
group.addTask {
try await query(i)
let start = Date.now
defer {
if verbose {
print("Test of \(name) took \(Int64(start.timeIntervalSinceNow * -1000)) ms.")
}
}
do {
try await withThrowingTaskGroup(of: Void.self) { group in
for i in 1...times {
group.addTask {
try await query(i)
}
}
for try await _ in group {}
}
} catch {
if verbose {
print("Test of \(name) is throwing an error.")
}
for try await _ in group {}
throw error
}
}

let resolver = self.resolver!
let verbose = self.verbose
try await run { i in
try await run("queryA") { i in
let reply = try await resolver.queryA(name: "apple.com")
if verbose {
print("[A] run #\(i) result: \(reply)")
}
}

try await run { i in
try await run("queryAAAA") { i in
let reply = try await resolver.queryAAAA(name: "apple.com")
if verbose {
print("[AAAA] run #\(i) result: \(reply)")
}
}

try await run { i in
try await run("queryNS") { i in
let reply = try await resolver.queryNS(name: "apple.com")
if verbose {
print("[NS] run #\(i) result: \(reply)")
}
}

try await run { i in
try await run("queryCNAME") { i in
let reply = try await resolver.queryCNAME(name: "www.apple.com")
if verbose {
print("[CNAME] run #\(i) result: \(String(describing: reply))")
}
}

try await run { i in
try await run("querySOA") { i in
let reply = try await resolver.querySOA(name: "apple.com")
if verbose {
print("[SOA] run #\(i) result: \(String(describing: reply))")
}
}

try await run { i in
try await run("queryPTR") { i in
let reply = try await resolver.queryPTR(name: "47.224.172.17.in-addr.arpa")
if verbose {
print("[PTR] run #\(i) result: \(reply)")
}
}

try await run { i in
try await run("queryMX") { i in
let reply = try await resolver.queryMX(name: "apple.com")
if verbose {
print("[MX] run #\(i) result: \(reply)")
}
}

try await run { i in
// TXT lookups are very slow in CI and lead to timeouts.
try await run("queryTXT", times: 5) { i in
let reply = try await resolver.queryTXT(name: "apple.com")
if verbose {
print("[TXT] run #\(i) result: \(reply)")
}
}

try await run { i in
try await run("querySRV") { i in
let reply = try await resolver.querySRV(name: "_caldavs._tcp.google.com")
if verbose {
print("[SRV] run #\(i) result: \(reply)")
Expand Down

0 comments on commit 3ab10e1

Please sign in to comment.