Test scenario definition
In the current release, it is possible to supply a configuration file
in JSON
format for running your tests.
In the following sections, we will provide a detailed explanation of the structure and all parameters in the JSON configuration file.
Structure
The JSON configuration file consists of:
ByteBlower server address (and optionally a ByteBlower meeting point)
List of port definitions: Where you want to send traffic from/to
List of flow definitions: We currently support a set of UDP frame blasting based flows (voice, video, conference, etc.) and stateful TCP (HTTP) flows.
(optional) Reporting parameters
Test-specific parameters: like types of reporting (HTML, JSON, and XML), the maximum runtime, including a new feature that allows to run scouting flows to initialize the test network entries (like ARP) before running the actual test.
A quick short reference for the structure:
{
"server": "<bb_server_name_or_ip:str>",
"meeting_point": "<bb_meeting_point_name_or_ip:str>",
"ports": [
{
"name": "<port_name:str>",
"interface": "<bb_interface_name:str>",
"uuid": "<endpoint_uuid:str>",
"ipv4": "<ipv4_address:str>|dhcp|true",
"netmask": "<ipv4_netmask:str>",
"gateway": "<ipv4_gateway:str>",
"nat": "<enable_nat_resolution:bool>",
"ipv6": "dhcp|slaac|true",
"port_group": [
"<port_group:str>"
]
}
],
"flows": [],
"report": {
"html": "<enable_html_reporting:bool>",
"json": "<enable_json_reporting:bool>",
"junit_xml": "<enable_junit_xml_reporting:bool>"
},
"enable_scouting_flows": "<enable_scouting_flows:bool>",
"maximum_run_time": "<scenario_max_run_time:float>"
}
Where flows
contains the list of flows.
JSON schema
The complete structure and documentation of the file is available in Configuration file JSON schema, and documented below.
Server
ByteBlower server address |
||
Host name or IP address of the ByteBlower Server. |
||
type |
string |
|
oneOf |
format |
hostname |
format |
ipv4 |
|
format |
ipv6 |
Meeting point
ByteBlower meeting point address |
||
Host name or IP address of the ByteBlower meeting point. |
||
Added in version 1.1.0: Support for ByteBlower Endpoint. |
||
type |
string |
|
oneOf |
format |
hostname |
format |
ipv4 |
|
format |
ipv6 |
Ports list
The port list defines a set of ByteBlower ports (== simulated hosts) at a given ByteBlower interface. Where a ByteBlower interface is the physical connection on either the non-trunking interface (direct connection at a ByteBlower server) or a trunking interface (connection at a physical port on the ByteBlower switch).
These ports define ByteBlower ports which simulate hosts at the operator side or at the customer side of the network under test (typically simulating a device behind a NAT gateway).
It is allowed to specify multiple virtual ByteBlower ports on a single physical ByteBlower interface. Each port supports IPv4 address assignment using static IPv4 configuration or DHCP. IPv6 address configuration is possible through DHCPv6 or stateless autoconfiguration (SLAAC).
When an (IPv4) port is located behind a NAT gateway, then the test framework will perform additional setup flow steps to resolve the NAT’s public IPv4 address and UDP port (when required).
Since version 1.2.0, the ByteBlower Test Framework also supports ByteBlower Endpoints. They can be configured by:
Providing the meeting point address and the UUID of the endpoint.
Setting the IPv4 or IPv6 parameter to
true
.
Port definitions |
|
Flat list of ports. |
|
type |
array |
items |
Configuration parameters for a ByteBlower Port or Endpoint
Configuration parameters for a ByteBlower Port or Endpoint |
||||
type |
object |
|||
properties |
||||
|
Name of this ByteBlower traffic endpoint. |
|||
(a friendly name to identify this endpoint). |
||||
type |
string |
|||
|
List of port groups where this port belongs to. |
|||
Used to identify to which flows this port will be part of (either as source or destination). |
||||
type |
array |
|||
items |
#/$defs/port_group |
|||
|
Name of the physical ByteBlower interface where this ByteBlower port is created. |
|||
ByteBlower Port only. Mutually exclusive with |
||||
type |
string |
|||
pattern |
^(nontrunk[-][0-9]+|trunk[-][0-9]+[-][0-9]+)$ |
|||
|
Device identifier of the ByteBlower Endpoint. |
|||
ByteBlower Endpoint only. Mutually exclusive with Note Using an Endpoint also requires the Added in version 1.1.0: Support for ByteBlower Endpoint. |
||||
type |
string |
|||
anyOf |
format |
uuid |
||
pattern |
^[0-9a-zA-Z]$ |
|||
|
List of VLAN (stack) configurations. See details in VLAN (stack) configuration. |
|||
Note Not supported by ByteBlower Endpoint. |
||||
type |
array |
|||
items |
#/$defs/vlan |
|||
|
IPv4 addressing method |
|||
Enable IPv4 on this traffic endpoint. |
||||
Supports the following values:
Default: Note For ByteBlower Endpoint, you must specify either Changed in version 1.1.0: Support for ByteBlower Endpoint. |
||||
oneOf |
type |
string |
||
oneOf |
enum |
dhcp |
||
format |
ipv4 |
|||
type |
boolean |
|||
|
Netmask of the IPv4 network. |
|||
Default: Assigned by DHCP or Note
|
||||
type |
string |
|||
format |
ipv4 |
|||
|
(Default) Gateway of the IPv4 network. |
|||
Default: Assigned by DHCP or none for static IPv4 address configuration. Note
|
||||
type |
string |
|||
format |
ipv4 |
|||
|
Define whether this port is located behind a NAT gateway. |
|||
Defaults to Note Enabled by default for ByteBlower Endpoint. |
||||
type |
boolean |
|||
|
IPv6 addressing method |
|||
Enable IPv6 on this traffic endpoint. |
||||
Supports the following values:
Default: undefined. Note For ByteBlower Endpoint, you must specify either Changed in version 1.1.0: Support for ByteBlower Endpoint. |
||||
oneOf |
type |
string |
||
oneOf |
enum |
dhcp, slaac |
||
format |
ipv6 |
|||
type |
boolean |
VLAN (stack) configuration
type |
object |
|
properties |
||
|
VLAN protocol ID (TPID). |
|
Default value is:
Note Configuration of the VLAN protocol ID (TPID) requires ByteBlower Server version >= 2.20.0. |
||
type |
integer |
|
maximum |
65535 |
|
minimum |
0 |
|
|
VLAN ID (12-bit; 0-4095) |
|
type |
integer |
|
maximum |
4095 |
|
minimum |
0 |
|
|
3 bits defining the VLAN PCP bits. Default: 0 |
|
type |
integer |
|
maximum |
3 |
|
minimum |
0 |
|
|
1-bit flag. Default: 0 |
|
type |
integer |
|
maximum |
1 |
|
minimum |
0 |
Port group
Definition of a port group |
|
type |
string |
Flow list
Current release supports a set of UDP-based flows and HTTP (stateful TCP) flow. Each type of traffic you like to send using ByteBlower is initiated using a flow definition in the flow list.
At least one flow definition must be defined. Default values will apply on other parameters. Each flow definition entry must contain at least the type, one source port group, and one port group destination ports. A ByteBlower port can belong to one or many port groups.
A flow is created on the matrix of all source/destination flow’s ports combinations. It is only generated between ports of the same layer 3 address family (IPv4 or IPv6).
When reverse flow is enabled, the same flow definition is used in both directions.
Flow definition list |
||
Flat list of flow definitions |
||
type |
array |
|
items |
oneOf |
|
Test scenario parameters
Maximum run time
Maximum run time of the scenario in seconds |
|
type |
number |
minimum |
0 |
Enable scouting flows
Enable scouting flows for network entries initialization |
|
Note Not enabled for traffic originating from a ByteBlower Endpoint. |
|
type |
boolean |
Report configuration parameters
type |
object |
|
properties |
||
|
Create HTML report |
|
Enable/Disable reporting in HTML format |
||
type |
boolean |
|
|
Create JSON report |
|
Enable/Disable reporting in JSON format |
||
type |
boolean |
|
|
Create JUnit XML report |
|
Enable/Disable reporting in JUnit XML format |
||
type |
boolean |