Package: byteblower-test-framework
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 trafficCollect statisticsAnalyze traffic statisticsGenerate reportsQuick start guideGet started right away? Have a look at ourInstallation & Quick startguide.Release notesWhat can this version bring to you?
See our exciting new and existing features below!Note:Have a look at ourVersioningfor 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.Test Case: RFC 2544 ThroughputRun anRFC 2544network performance test with ease!Test Case: Low LatencyRun 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 forLow Latency, Low Loss, and Scalable Throughput (L4S)on TCPRun traffic tests on your L4S-enabled network!HTTP Flows: IncludingTCP results over timein the reportsTransmitted and received number of bytesAverage throughput over timeRound Trip Time (RTT)Number of TCP retransmissionsECN Congestion Experienced (CE) notification
(for L4S-enabled TCP flows)FeaturesQuick and easy automation of traffic tests using ByteBlowerStraightforward building blocks for your own test scriptsGrouped in self-explaining categoriesDesigned with a small 😉 to the workflow you are used to from the GUICommand-line interfaceRun traffic tests with nothing more than a JSON configuration file!Supported ByteBlower endpoint typesByteBlower Port (on a physical interface of a ByteBlower server)ByteBlower Endpoint(mobile testing via app on your device)Endpoint configurationIPv4DHCP and manual address configuration (ByteBlower Port only)Automatic handling of endpoints located behind a NAT/NAPT gateway!IPv6DHCPv6 and SLAAC address configuration (ByteBlower Port only)ByteBlower Endpoint: Automatic resolving of Endpoint host’s IPv6 address
for each traffic flow.Traffic typesStateless: frame blasting (UDP-based)Stateful: HTTP (TCP-based)Define IP Traffic class: DSCP & ECNTCP Prague forLow Latency, Low Loss, and Scalable Throughput (L4S)Application simulationsVoice over IP (VoIP) using the G.711 codecTraditional gaming (ByteBlower Endpoint only as destination)Video streaming (Netflix, YouTube, …) (ByteBlower Port only)Standard analysisFrame count: transmitted and received over time, frame loss and byte lossLatency: Minimum, maximum, average and jitter over timeTCPAverage goodput on HTTP (layer 5)Transmitted and received Bytes over timeTCP average throughput over timeMinimum, maximum and average Round Trip Time (RTT)TCP Retransmission countsECNCongestion 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 KPIsApplication-specific analysisMean Opinion Score (MOS): Specific for Voice flowsVideo buffer analysis: Specific for Video flows (ByteBlower Port only)ReportingSummaryandrealtime resultsHTML: Neat to share with your chief, customers, vendors, …Incorporating our brand new style!Interactive chartsIncludes overview of all latency CCDF resultsJSON: Allows for machine post-processingXML JUnit: Useful for integration in automation toolsHelpersEase-of-use for configuration and/or post-processing
of the analyzed resultsExample scriptsChangelogFor all details, please have a look at ourChangelog.Requirementsbyteblowerll(ByteBlower API): Our lower layer API for client-server
communication (API documentation)scapy: Used for frame generation and parsingjunit-xml: Used for Unit test report generationpandas: Used for data collectionhighcharts-excentis: Used for generating graphsjinja2: User for HTML report templatingSupported platformsThe ByteBlower Test Framework in general supports Python version 3.7 to 3.11.NoteNOTE:Python >= 3.12 is not yet supported because the ByteBlower API
libraries are not yet available for Python 3.12(byteblowerll).The framework has been tested for the following operating system platforms
and Python versions:OS platformDistributionPython versionsourceWindows 10up to feature release 21H2Python 3.10Official PythonWindows 10up to feature release 21H2Python 3.9Official PythonWindows 10up to feature release 21H2Python 3.8Official PythonWindows 10up to feature release 21H2Python 3.7Official PythonWindows 10up to feature release 21H2Python 3.9Windows AppsWindows 10up to feature release 21H2Python 3.8Windows AppsWindows 10up to feature release 21H2Python 3.7Windows AppsmacOSup to MontereyPython 3.9Official Python(Intel-only!)macOSup to MontereyPython 3.8Official Python(Intel-only!)LinuxDebian 11 (bullseye)Python 3.9.2Debian packagesLinuxDebian 10 (buster)Python 3.7.3Debian packagesLinuxUbuntu 20.04 (Focal Fossa)Python 3.8.2Ubuntu packagesLinuxUbuntu 22.04 (Focal Fossa)Python 3.10.4Ubuntu packagesDockerpython:3.10-slim-busterPython 3.10.11Docker PythonDockerpython:3.9-slim-busterPython 3.9.16Docker PythonDockerpython:3.8-slim-busterPython 3.8.16Docker PythonDockerpython:3.7-slim-busterPython 3.7.13Docker PythonInstallationPrepare runtime environmentWe 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 environmentMake 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--listIf no Python version is in the required range, you can download and install
Python 3.7 or above using your system package manager
or fromhttps://www.python.org/ftp/python.Prepare Python virtual environment: Create the virtual environment
and install/updatepipandbuild.On Unix-based systems (Linux, WSL, macOS):Note:Mind the leading.which meanssourcing./env/bin/activate.python3-mvenv--clearenv../env/bin/activatepipinstall-UpipbuildOn 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:PSC:>Set-ExecutionPolicy-ExecutionPolicyRemoteSigned-ScopeCurrentUserSeeAbout Execution Policiesfor more information.py-3.8-mvenv--clearenv&".\env\Scripts\activate.ps1"python-mpipinstall-UpipbuildInstall the ByteBlower Test Framework from PyPIFirst make sure that youractivatedyour virtual environment:On Unix-based systems (Linux, WSL, macOS):../env/bin/activateOn Windows systems using PowerShell:&".\env\Scripts\activate.ps1"Now install (or update) the ByteBlower Test Framework:pipinstall-Ubyteblower-test-frameworkDocumentationOnline usage documentation:ByteBlower Test Framework documentationThe API documentation is also always available in the API:help(any_api_object)Some examples:For classes (and their members):frombyteblower_test_framework.hostimportServerfrombyteblower_test_framework.endpointimportIPv4Portfrombyteblower_test_framework.trafficimportFrameBlastingFlowhelp(Server)help(Server.start)help(Server.info)help(IPv4Port)help(FrameBlastingFlow)frombyteblower_test_framework.reportimportByteBlowerHtmlReporthelp(ByteBlowerHtmlReport)For objects (and their members):frombyteblower_test_framework.hostimportServermy_server=Server('byteblower-39.lab.excentis.com.')help(my_server)help(my_server.start)UsageFirst make sure that youractivatedyour virtual environment:On Unix-based systems (Linux, WSL, macOS):../env/bin/activateOn Windows systems using PowerShell:&".\env\Scripts\activate.ps1"Let’s give it a test run: Import the test framework and show its
documentation:pythonimportbyteblower_test_frameworkhelp(byteblower_test_framework)This shows you the ByteBlower Test Framework module documentation.Command-line interfaceTo get help for command line arguments:As a command-line script:byteblower-test-framework--helpAs a python module:python-mbyteblower_test_framework--helpFor a quick start, you can run a simple test using the JSON configuration of
one of the example files below:Test scenario for ByteBlower PortsTest scenario for ByteBlower EndpointSave you configuration in your working directory asbyteblower_test_framework.json. Please make sure you change the server and
ports configuration according to the setup you want to run your test on.Thebyteblower_test_framework.jsoncan be used then to run the test in the
command line interface using:byteblower-test-frameworkThe resulting reports will be saved into the current directory.To specify a differentconfig file nameandreport pathusing:byteblower-test-framework--config-filepath/to/my_test_config.json--report-pathpath/to/my_test_reports_directoryYou can find more details on how to customize your own configuration file
inConfiguration file.NoteTo-do:We will provide a quick start guide in the future.DevelopmentWould you like to contribute to this project? You’re very welcome! 😊Please contact us atByteBlower Supportand we’ll be there to guide you.SupportIf 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