Skip to main content

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:

  1. Generating test traffic

  2. Collect statistics

  3. Analyze traffic statistics

  4. 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.

📢 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

  • Command-line interface

    • 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

  • 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

  • Example scripts

Changelog

For all details, please have a look at our Changelog.

Requirements

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

Official Python

Windows 10

up to feature release 21H2

Python 3.9

Official Python

Windows 10

up to feature release 21H2

Python 3.8

Official Python

Windows 10

up to feature release 21H2

Python 3.7

Official Python

Windows 10

up to feature release 21H2

Python 3.9

Windows Apps

Windows 10

up to feature release 21H2

Python 3.8

Windows Apps

Windows 10

up to feature release 21H2

Python 3.7

Windows Apps

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

Debian packages

Linux

Debian 10 (buster)

Python 3.7.3

Debian packages

Linux

Ubuntu 20.04 (Focal Fossa)

Python 3.8.2

Ubuntu packages

Linux

Ubuntu 22.04 (Focal Fossa)

Python 3.10.4

Ubuntu packages

Docker

python:3.10-slim-buster

Python 3.10.11

Docker Python

Docker

python:3.9-slim-buster

Python 3.9.16

Docker Python

Docker

python:3.8-slim-buster

Python 3.8.16

Docker Python

Docker

python:3.7-slim-buster

Python 3.7.13

Docker Python

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:

  1. 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.

  1. On Unix-based systems (Linux, WSL, macOS):

    Note: Mind the leading . which means sourcing ./env/bin/activate.

    python3 -m venv --clear env
    . ./env/bin/activate
    pip install -U pip build
  2. 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 env
    & ".\env\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:

  1. On Unix-based systems (Linux, WSL, macOS):

    . ./env/bin/activate
  2. On Windows systems using PowerShell:

    & ".\env\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:

  1. On Unix-based systems (Linux, WSL, macOS):

    . ./env/bin/activate
  2. On Windows systems using PowerShell:

    & ".\env\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:

  1. As a command-line script:

    byteblower-test-framework --help
  2. 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:

🌍: Excentis Support Portal

🖂: ByteBlower Support

🕽: +32 (0) 9 269 22 91

ByteBlower A product by Excentis

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

byteblower_test_framework-1.3.0.tar.gz (4.3 MB view hashes)

Uploaded Source

Built Distribution

byteblower_test_framework-1.3.0-py3-none-any.whl (2.6 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page