Skip to content

Commit d802150

Browse files
authored
Merge pull request #24 from frankovo/release/0.3.0
Release/0.3.0
2 parents 7367d0e + 85d7d26 commit d802150

File tree

5 files changed

+1127
-34
lines changed

5 files changed

+1127
-34
lines changed

README-pypi.md

Lines changed: 93 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,42 @@ dns-benchmark benchmark --use-defaults
1717
1818
</div>
1919

20+
## 🎉 Today’s Release Highlights ![new](https://img.shields.io/pypi/v/dns-benchmark-tool.svg?color=brightgreen&label=new)
21+
22+
We’ve added **three powerful CLI commands** to make DNS benchmarking even more versatile:
23+
24+
- 🚀 **top** — quick ranking of resolvers by speed and reliability
25+
- 📊 **compare** — side‑by‑side benchmarking with detailed statistics and export options
26+
- 🔄 **monitoring** — continuous performance tracking with alerts and logging
27+
28+
```bash
29+
# Quick resolver ranking
30+
dns-benchmark top --use-defaults
31+
32+
# Compare resolvers side-by-side
33+
dns-benchmark compare Cloudflare Google Quad9 --show-details
34+
35+
# Run monitoring for 1 hour with alerts
36+
dns-benchmark monitoring --use-defaults --interval 30 --duration 3600 \
37+
--alert-latency 150 --alert-failure-rate 5 --output monitor.log
38+
```
39+
2040
---
2141

2242
[![CI Tests](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/test.yml/badge.svg)](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/test.yml)
2343
[![Publish to TestPyPI](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/testpypi.yml/badge.svg)](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/testpypi.yml)
2444
[![Publish to PyPI](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/pypi.yml/badge.svg)](https://github.com/frankovo/dns-benchmark-tool/actions/workflows/pypi.yml)
25-
[![PyPI version](https://img.shields.io/pypi/v/dns-benchmark-tool.svg)](https://pypi.org/project/dns-benchmark-tool/)
45+
[![PyPI version](https://img.shields.io/pypi/v/dns-benchmark-tool.svg?color=brightgreen)](https://pypi.org/project/dns-benchmark-tool/)
2646

2747
![Python Version](https://img.shields.io/badge/python-3.9%2B-blue.svg)
2848
![License](https://img.shields.io/badge/license-MIT-green.svg)
2949
![Coverage](https://img.shields.io/badge/coverage-91%25-brightgreen.svg)
3050

31-
[![Downloads](https://img.shields.io/pypi/dm/dns-benchmark-tool.svg)](https://pypi.org/project/dns-benchmark-tool/)
51+
[![Downloads](https://img.shields.io/pypi/dm/dns-benchmark-tool.svg?color=blueviolet)](https://pypi.org/project/dns-benchmark-tool/)
3252
[![GitHub stars](https://img.shields.io/github/stars/frankovo/dns-benchmark-tool.svg?style=social&label=Star)](https://github.com/frankovo/dns-benchmark-tool/stargazers)
3353
[![GitHub forks](https://img.shields.io/github/forks/frankovo/dns-benchmark-tool.svg?style=social&label=Fork)](https://github.com/frankovo/dns-benchmark-tool/network/members)
34-
[![Issues](https://img.shields.io/github/issues/frankovo/dns-benchmark-tool.svg)](https://github.com/frankovo/dns-benchmark-tool/issues)
35-
[![Last commit](https://img.shields.io/github/last-commit/frankovo/dns-benchmark-tool.svg)](https://github.com/frankovo/dns-benchmark-tool/commits/main)
54+
[![Issues](https://img.shields.io/github/issues/frankovo/dns-benchmark-tool.svg?color=orange)](https://github.com/frankovo/dns-benchmark-tool/issues)
55+
[![Last commit](https://img.shields.io/github/last-commit/frankovo/dns-benchmark-tool.svg?color=blue)](https://github.com/frankovo/dns-benchmark-tool/commits/main)
3656
[![Main branch protected](https://img.shields.io/badge/branch%20protection-main%20✅-brightgreen)](https://github.com/frankovo/dns-benchmark-tool/blob/main/RELEASE.md)
3757

3858
## Why DNS Benchmarking?
@@ -114,17 +134,6 @@ dns-benchmark benchmark --resolvers data/resolvers.json --domains data/domains.t
114134
# Results saved to ./benchmark_results/
115135
```
116136

117-
## Key Features
118-
119-
**Multi-resolver benchmarking** - Compare Google, Cloudflare, Quad9, OpenDNS, and custom resolvers
120-
**Multiple record types** - Test A, AAAA, MX, TXT, NS, CNAME, and more
121-
**Rich analytics** - Per-resolver, per-domain, and per-record-type statistics
122-
**Export formats** - CSV, Excel, PDF, JSON for reporting and automation
123-
**High concurrency** - Async queries with configurable limits
124-
**Cache control** - Test with/without DNS caching
125-
**Iteration support** - Run multiple test iterations for reliability
126-
**CI/CD ready** - Quiet mode, JSON output, exit codes for automation
127-
128137
---
129138

130139
## 📖 Usage Examples
@@ -296,6 +305,75 @@ dns-benchmark benchmark \
296305

297306
---
298307

308+
## ⚡ CLI Commands
309+
310+
The DNS Benchmark Tool now includes three specialized commands for different workflows:
311+
312+
### 🚀 Top
313+
314+
Quickly rank resolvers by speed and reliability.
315+
316+
```bash
317+
# Rank resolvers quickly
318+
dns-benchmark top --use-defaults
319+
320+
# Use custom domain list
321+
dns-benchmark top -d domains.txt
322+
323+
# Export results to JSON
324+
dns-benchmark top -o results.json
325+
```
326+
327+
---
328+
329+
### 📊 Compare
330+
331+
Benchmark resolvers side‑by‑side with detailed statistics.
332+
333+
```bash
334+
# Compare Cloudflare, Google, and Quad9
335+
dns-benchmark compare Cloudflare Google Quad9
336+
337+
# Compare by IP addresses
338+
dns-benchmark compare 1.1.1.1 8.8.8.8 9.9.9.9
339+
340+
# Show detailed per-domain breakdown
341+
dns-benchmark compare Cloudflare Google --show-details
342+
343+
# Export results to CSV
344+
dns-benchmark compare Cloudflare Google -o results.csv
345+
```
346+
347+
---
348+
349+
### 🔄 Monitoring
350+
351+
Continuously monitor resolver performance with alerts.
352+
353+
```bash
354+
# Monitor default resolvers continuously (every 60s)
355+
dns-benchmark monitoring --use-defaults
356+
357+
# Monitor with custom resolvers and domains
358+
dns-benchmark monitoring -r resolvers.json -d domains.txt
359+
360+
# Run monitoring for 1 hour with alerts
361+
dns-benchmark monitoring --use-defaults --interval 30 --duration 3600 \
362+
--alert-latency 150 --alert-failure-rate 5 --output monitor.log
363+
```
364+
365+
---
366+
367+
### 🌟 Command Showcase
368+
369+
| Command | Purpose | Typical Use Case | Key Options | Output |
370+
|--------------|---------|------------------|-------------|--------|
371+
| **top** | Quick ranking of resolvers by speed and reliability | Fast check to see which resolver is best right now | `--domains`, `--record-types`, `--iterations`, `--output` | Sorted list of resolvers with latency & success rate |
372+
| **compare** | Side‑by‑side comparison of specific resolvers | Detailed benchmarking across chosen resolvers/domains | `--domains`, `--record-types`, `--iterations`, `--output`, `--show-details` | Table of resolvers with latency, success rate, per‑domain breakdown |
373+
| **monitoring** | Continuous monitoring with alerts | Real‑time tracking of resolver performance over time | `--interval`, `--duration`, `--alert-latency`, `--alert-failure-rate`, `--output`, `--use-defaults` | Live status indicators, alerts, optional log file |
374+
375+
---
376+
299377
## Feedback & Community
300378

301379
### Share Your Input

0 commit comments

Comments
 (0)