A professional network quality assurance testing tool that performs comprehensive measurements of network performance metrics including bandwidth, jitter, MTU, and connectivity. Generate detailed HTML reports with visualizations and system information for network validation and documentation.
- Performance Testing: Measures network bandwidth using iPerf3
- Jitter Analysis: Measures network jitter and stability
- MTU Testing: Determines maximum supported MTU sizes
- Connectivity Testing: Checks basic network connectivity and packet loss
- HTML Reports: Clean, professional reports with visualizations
- JSON Data: Raw test data in JSON format
- Visualizations:
- Performance graphs over time
- Jitter analysis plots with statistics
- MTU test results with success/failure indicators
- System Information:
- OS details and version
- Network configuration
- Test environment parameters
- Client/Server information
- Unique test IDs (UUID) for traceability
- Timestamp verification
- Complete test environment logging
- Test result verification and validation
- Python 3.6 or higher
- iPerf3 installed on both client and server machines
- Network connectivity between test machines
matplotlib>=3.4.0
seaborn>=0.11.0
jinja2>=3.0.0
numpy>=1.20.0
pandas>=1.3.0
- Clone the repository:
git clone https://github.com/wolfgang-azevedo/pynetqa.git
cd pynetqa
- Create and activate a virtual environment:
# Windows
python -m venv venv
venv\Scripts\activate
# Linux/MacOS
python3 -m venv venv
source venv/bin/activate
- Install required packages:
pip install -r requirements.txt
For systems without internet access, follow these steps:
- On a system with internet access:
# Create a directory for offline installation files
mkdir pynetqa_offline
cd pynetqa_offline
# Download Python packages
pip download -r requirements.txt -d python_packages/
# Create the offline package structure
mkdir -p offline_package/
cp -r python_packages offline_package/
cp network_test.py offline_package/
cp requirements.txt offline_package/
cp -r img offline_package/
- On the target system:
# Extract the offline package
cd pynetqa_offline
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
# Install packages from offline directory
pip install --no-index --find-links python_packages -r requirements.txt
On the server machine:
iperf3 -s
On the client machine:
python network_test.py --server <server_ip> --iperf-path <path_to_iperf3>
# Example:
python network_test.py --server 172.25.56.40 --iperf-path ./bin/iperf3.exe
--server, -s : Server IP address (required)
--iperf-path : Path to iPerf3 executable (optional)
--log-dir : Directory for log files (optional)
--test : Specific test to run [all|connectivity|performance|jitter|mtu] (optional)
PyNetQA generates several output files in the network_tests
directory:
network_tests/
├── report_YYYYMMDD_HHMMSS/
│ ├── img/
│ │ └── logo.png
│ ├── performance.png
│ ├── jitter.png
│ ├── mtu.png
│ ├── report.html
│ └── results.json
└── network_test_YYYYMMDD_HHMMSS.log
- Executive Summary
- Detailed Test Results
- System Information
- Performance Graphs
- Jitter Analysis
- MTU Test Results
- Test Configuration
- Unique Test Identifier
- Test Environment Details
-
iPerf3 not found:
- Verify iPerf3 installation
- Check path provided to --iperf-path
- Ensure iPerf3 is in system PATH
-
No jitter data:
- Check UDP ports are not blocked
- Verify server is running in UDP mode
- Check network permissions
-
Report generation fails:
- Verify write permissions in output directory
- Check Python package installation
- Ensure logo.png exists in img directory
Check the log file in network_tests/network_test_YYYYMMDD_HHMMSS.log
for detailed error information and debugging.
Wolfgang Azevedo - Creator and maintainer
- Fork the repository from https://github.com/wolfgang-azevedo/pynetqa
- Create your feature branch (
git checkout -b feature/NewFeature
) - Commit your changes (
git commit -m 'Add new feature'
) - Push to the branch (
git push origin feature/NewFeature
) - Open a Pull Request
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- iPerf3 team for their excellent network testing tool
- Matplotlib and Seaborn for visualization capabilities
- Jinja2 for HTML report generation
- 1.0.0 (2024-10-22)
- Initial Release by Wolfgang Azevedo
- Complete network testing functionality
- HTML report generation with visualizations
- System information collection
- Test verification features
Active development - Feature requests and contributions are welcome. Please check the Issues page for current development priorities and known issues.
For support and issues, please:
- Check the troubleshooting guide above
- Review existing Issues on GitHub
- Open a new Issue at https://github.com/wolfgang-azevedo/pynetqa/issues with:
- Test logs
- System information
- Steps to reproduce
- Description of the expected vs actual behavior
Project Home: https://github.com/wolfgang-azevedo/pynetqa
- Download iPerf3 from https://iperf.fr/iperf-download.php
- Extract to a known location
- Add to PATH or use --iperf-path option
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install iperf3
CentOS/RHEL:
sudo yum install iperf3
All Python dependencies are listed in requirements.txt and can be installed using pip:
pip install -r requirements.txt