nadzoring.dns_lookup.benchmark module¶
DNS server benchmarking for performance testing and comparison.
- nadzoring.dns_lookup.benchmark._benchmark_parallel(servers: list[str], domain: str, record_type: RecordType, queries: int, max_workers: int, progress_callback: Callable[[str, int], None] | None) list[BenchmarkResult][source]¶
Run server benchmarks concurrently using a thread pool.
- Parameters:
servers – Server IP addresses to benchmark.
domain – Domain to query.
record_type – DNS record type.
queries – Queries per server.
max_workers – Maximum concurrent threads.
progress_callback – Optional progress callback.
- Returns:
List of benchmark results (unsorted).
- nadzoring.dns_lookup.benchmark._benchmark_sequential(servers: list[str], domain: str, record_type: RecordType, queries: int, progress_callback: Callable[[str, int], None] | None) list[BenchmarkResult][source]¶
Run server benchmarks one at a time.
- Parameters:
servers – Server IP addresses to benchmark.
domain – Domain to query.
record_type – DNS record type.
queries – Queries per server.
progress_callback – Optional progress callback.
- Returns:
List of benchmark results (unsorted).
- nadzoring.dns_lookup.benchmark.benchmark_dns_servers(domain: str = 'google.com', servers: list[str] | None = None, record_type: RecordType = 'A', queries: int = 10, max_workers: int = 5, progress_callback: Callable[[str, int], None] | None = None, *, parallel: bool = True) list[BenchmarkResult][source]¶
Benchmark multiple DNS servers and compare their performance.
Tests each server either in parallel (via
ThreadPoolExecutor) or sequentially, then sorts results by average response time.- Parameters:
domain – Domain to query. Defaults to
"google.com".servers – Server IPs to benchmark.
Noneusesget_public_dns_servers().record_type – DNS record type to query. Defaults to
"A".queries – Queries per server. Defaults to
10.max_workers – Thread pool size when parallel is
True. Defaults to5.progress_callback – Called after each server completes with
(server_ip, 1-based_index).parallel – Run benchmarks concurrently when
True(default).
- Returns:
List of
BenchmarkResultdicts sorted byavg_response_timeascending (fastest first).
Examples
>>> results = benchmark_dns_servers(servers=["8.8.8.8", "1.1.1.1"]) >>> fastest = results[0] >>> print(f"{fastest['server']}: {fastest['avg_response_time']:.2f}ms")
- nadzoring.dns_lookup.benchmark.benchmark_single_server(server: str, domain: str = 'google.com', record_type: RecordType = 'A', queries: int = 10, delay: float = 0.1) BenchmarkResult[source]¶
Benchmark the performance of a single DNS server.
Performs queries DNS lookups against server, measuring response time and calculating average, minimum, maximum, and success rate statistics.
- Parameters:
server – IP address of the DNS server to benchmark.
domain – Domain to query. Defaults to
"google.com".record_type – DNS record type to query. Defaults to
"A".queries – Number of queries to perform. Defaults to
10.delay – Seconds to wait between queries to avoid rate limiting. Defaults to
0.1. Set to0to disable.
- Returns:
BenchmarkResultdict withserver,avg_response_time,min_response_time,max_response_time,success_rate,total_queries,failed_queries, andresponseskeys.
Examples
>>> result = benchmark_single_server("8.8.8.8") >>> print(f"{result['avg_response_time']:.2f}ms avg")