Test Framework for the ByteBlower Traffic Generator.
Project description
An easy accessible library of basic test flows and reporting engines.
ByteBlower ® is a traffic generator/analyzer system for TCP/IP networks.
This library provides you with the building blocks for:
Generating test traffic
Collect statistics
Analyze traffic statistics
Generate reports
Quick start guide
Get started right away? Have a look at our Installation & Quick start guide.
Release notes
What can this version bring to you? See our exciting new and existing features below!
Note: Have a look at our Versioning for more information about how releases are handled for the ByteBlower Test Framework.
✨ Test Cases ✨
The ByteBlower Test Framework serves as the base for many of our customer’s test cases.
At Excentis, we also develop common test cases and love to share them with the community.
-
Guided TR-398 Wi-Fi 802.11n/ac/ax performance validation tests
Test Case: RFC 2544 Throughput
Run an RFC 2544 network performance test with ease!
-
Run low latency validation tests on your network.
📢 New since v1.3.0! 📢
It is with great pleasure that we announce our new features of the ByteBlower Test Framework!
Support for Low Latency, Low Loss, and Scalable Throughput (L4S) on TCP
Run traffic tests on your L4S-enabled network!
HTTP Flows: Including TCP results over time in the reports
Transmitted and received number of bytes
Average throughput over time
Round Trip Time (RTT)
Number of TCP retransmissions
ECN Congestion Experienced (CE) notification (for L4S-enabled TCP flows)
Features
Quick and easy automation of traffic tests using ByteBlower
Straightforward building blocks for your own test scripts
Grouped in self-explaining categories
Designed with a small 😉 to the workflow you are used to from the GUI
-
Run traffic tests with nothing more than a JSON configuration file!
Supported ByteBlower endpoint types
ByteBlower Port (on a physical interface of a ByteBlower server)
ByteBlower Endpoint (mobile testing via app on your device)
Endpoint configuration
IPv4
DHCP and manual address configuration (ByteBlower Port only)
Automatic handling of endpoints located behind a NAT/NAPT gateway!
IPv6
DHCPv6 and SLAAC address configuration (ByteBlower Port only)
ByteBlower Endpoint: Automatic resolving of Endpoint host’s IPv6 address for each traffic flow.
Traffic types
Stateless: frame blasting (UDP-based)
Stateful: HTTP (TCP-based)
Define IP Traffic class: DSCP & ECN
TCP Prague for Low Latency, Low Loss, and Scalable Throughput (L4S)
Application simulations
Voice over IP (VoIP) using the G.711 codec
Traditional gaming (ByteBlower Endpoint only as destination)
Video streaming (Netflix, YouTube, …) (ByteBlower Port only)
Standard analysis
Frame count: transmitted and received over time, frame loss and byte loss
Latency: Minimum, maximum, average and jitter over time
TCP
Average goodput on HTTP (layer 5)
Transmitted and received Bytes over time
TCP average throughput over time
Minimum, maximum and average Round Trip Time (RTT)
TCP Retransmission counts
ECN Congestion Experienced (CE) markings (for L4S-enabled TCP flows)
Aggregation of results over multiple flows (frame blasting only)
PASS/FAIL criteria can be provided to match your KPIs
Application-specific analysis
Mean Opinion Score (MOS): Specific for Voice flows
Video buffer analysis: Specific for Video flows (ByteBlower Port only)
Reporting
Summary and realtime results
HTML: Neat to share with your chief, customers, vendors, …
Incorporating our brand new style!
Interactive charts
Includes overview of all latency CCDF results
JSON: Allows for machine post-processing
XML JUnit: Useful for integration in automation tools
Helpers
Ease-of-use for configuration and/or post-processing of the analyzed results
Changelog
For all details, please have a look at our Changelog.
Requirements
byteblowerll (ByteBlower API): Our lower layer API for client-server communication (API documentation)
scapy: Used for frame generation and parsing
junit-xml: Used for Unit test report generation
pandas: Used for data collection
highcharts-excentis: Used for generating graphs
jinja2: User for HTML report templating
Supported platforms
The ByteBlower Test Framework in general supports Python version 3.7 to 3.11.
The framework has been tested for the following operating system platforms and Python versions:
OS platform |
Distribution |
Python version |
source |
---|---|---|---|
Windows 10 |
up to feature release 21H2 |
Python 3.10 |
|
Windows 10 |
up to feature release 21H2 |
Python 3.9 |
|
Windows 10 |
up to feature release 21H2 |
Python 3.8 |
|
Windows 10 |
up to feature release 21H2 |
Python 3.7 |
|
Windows 10 |
up to feature release 21H2 |
Python 3.9 |
|
Windows 10 |
up to feature release 21H2 |
Python 3.8 |
|
Windows 10 |
up to feature release 21H2 |
Python 3.7 |
|
macOS |
up to Monterey |
Python 3.9 |
Official Python (Intel-only!) |
macOS |
up to Monterey |
Python 3.8 |
Official Python (Intel-only!) |
Linux |
Debian 11 (bullseye) |
Python 3.9.2 |
|
Linux |
Debian 10 (buster) |
Python 3.7.3 |
|
Linux |
Ubuntu 20.04 (Focal Fossa) |
Python 3.8.2 |
|
Linux |
Ubuntu 22.04 (Focal Fossa) |
Python 3.10.4 |
|
Docker |
python:3.10-slim-buster |
Python 3.10.11 |
|
Docker |
python:3.9-slim-buster |
Python 3.9.16 |
|
Docker |
python:3.8-slim-buster |
Python 3.8.16 |
|
Docker |
python:3.7-slim-buster |
Python 3.7.13 |
Installation
Prepare runtime environment
We recommend managing the runtime environment in a Python virtual environment. This guarantees proper separation of the system-wide installed Python and pip packages.
Python virtual environment
Make sure to use the right Python version (>= 3.7, <= 3.11), list all Python versions installed in your machine by running:
On Windows systems using PowerShell:
py --list
If no Python version is in the required range, you can download and install Python 3.7 or above using your system package manager or from https://www.python.org/ftp/python.
Prepare Python virtual environment: Create the virtual environment and install/update pip and build.
On Unix-based systems (Linux, WSL, macOS):
Note: Mind the leading . which means sourcing ./.venv/bin/activate.
python3 -m venv --clear .venv . ./.venv/bin/activate pip install -U pip build
On Windows systems using PowerShell:
Note: On Microsoft Windows, it may be required to enable the Activate.ps1 script by setting the execution policy for the user. You can do this by issuing the following PowerShell command:
PS C:> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
See About Execution Policies for more information.
py -3.8 -m venv --clear .venv & ".\.venv\Scripts\activate.ps1" python -m pip install -U pip build
Install the ByteBlower Test Framework from PyPI
First make sure that your activated your virtual environment:
On Unix-based systems (Linux, WSL, macOS):
. ./.venv/bin/activate
On Windows systems using PowerShell:
& ".\.venv\Scripts\activate.ps1"
Now install (or update) the ByteBlower Test Framework:
pip install -U byteblower-test-framework
Documentation
Online usage documentation: ByteBlower Test Framework documentation
The API documentation is also always available in the API:
help(any_api_object)
Some examples:
For classes (and their members):
from byteblower_test_framework.host import Server
from byteblower_test_framework.endpoint import IPv4Port
from byteblower_test_framework.traffic import FrameBlastingFlow
help(Server)
help(Server.start)
help(Server.info)
help(IPv4Port)
help(FrameBlastingFlow)
from byteblower_test_framework.report import ByteBlowerHtmlReport
help(ByteBlowerHtmlReport)
For objects (and their members):
from byteblower_test_framework.host import Server
my_server = Server('byteblower-39.lab.excentis.com.')
help(my_server)
help(my_server.start)
Usage
First make sure that your activated your virtual environment:
On Unix-based systems (Linux, WSL, macOS):
. ./.venv/bin/activate
On Windows systems using PowerShell:
& ".\.venv\Scripts\activate.ps1"
Let’s give it a test run: Import the test framework and show its documentation:
python
import byteblower_test_framework
help(byteblower_test_framework)
This shows you the ByteBlower Test Framework module documentation.
Command-line interface
To get help for command line arguments:
As a command-line script:
byteblower-test-framework --help
As a python module:
python -m byteblower_test_framework --help
For a quick start, you can run a simple test using the JSON configuration of one of the example files below:
Save you configuration in your working directory as byteblower_test_framework.json. Please make sure you change the server and ports configuration according to the setup you want to run your test on.
The byteblower_test_framework.json can be used then to run the test in the command line interface using:
byteblower-test-framework
The resulting reports will be saved into the current directory.
To specify a different config file name and report path using:
byteblower-test-framework --config-file path/to/my_test_config.json --report-path path/to/my_test_reports_directory
You can find more details on how to customize your own configuration file in Configuration file.
Development
Would you like to contribute to this project? You’re very welcome! 😊
Please contact us at ByteBlower Support and we’ll be there to guide you.
Support
If you have any questions or feature request you can contact the ByteBlower support team using:
🕽: +32 (0) 9 269 22 91
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file byteblower_test_framework-1.3.3.tar.gz
.
File metadata
- Download URL: byteblower_test_framework-1.3.3.tar.gz
- Upload date:
- Size: 4.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9e172d1a6e8aab758332b542a737622d43d8dcb11c94b593b71946877959a28 |
|
MD5 | 4da1535a8ed1f7f0dc2e5912401626b0 |
|
BLAKE2b-256 | 359d43f4eb136a0bf64d58b6cb06ddde3ec4e1f13abbec1197993b10681de517 |
File details
Details for the file byteblower_test_framework-1.3.3-py3-none-any.whl
.
File metadata
- Download URL: byteblower_test_framework-1.3.3-py3-none-any.whl
- Upload date:
- Size: 2.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c66351a57e19a6d557d5eed888ecf27e09b0b5261a95451749c965ee799e3c86 |
|
MD5 | 3753f6e2144c491e9e73e76d0812df56 |
|
BLAKE2b-256 | 1ebfb63b9dd5d576f94ae9f13663cd11c25e2dd7cc508926d72c7c696bfaa131 |