mirror of
https://github.com/rtbrick/bngblaster.git
synced 2024-05-06 15:54:57 +00:00
561 lines
21 KiB
ReStructuredText
561 lines
21 KiB
ReStructuredText
.. _reports:
|
|
|
|
Reports
|
|
=======
|
|
|
|
The BNG Blaster can generate detailed reports
|
|
at the end of the test execution.
|
|
|
|
Session Setup Rate
|
|
------------------
|
|
|
|
The BNG Blaster measures the session setup time and rate. The setup time is the time
|
|
difference between the first session started and the last session established. The
|
|
setup rate is measured in calls per second (CPS) and calculated by the number of
|
|
sessions established divided by the setup time.
|
|
|
|
.. code-block:: none
|
|
|
|
sessions established
|
|
setup rate = --------------------
|
|
setup time
|
|
|
|
This value is internally calculated every second to derive the minimum, maximum
|
|
and average setup rate. To better understand how those three values are derived,
|
|
you can also think about a job that stores the actual setup rate every second
|
|
into a time series database. Now you can search for the minimum and maximum value
|
|
in this database and finally calculate the average over all entries. The result
|
|
would be the same as the minimum, maximum and average setup rate calculated
|
|
by BNG Blaster.
|
|
|
|
The following table gives an example of how those values are calculated on a particular
|
|
example with 200 sessions set up over 4 seconds. The first 100 sessions
|
|
have been established in one second followed by decreased setup rate.
|
|
|
|
.. list-table::
|
|
:widths: 14 25 25 12 12 12
|
|
:header-rows: 1
|
|
|
|
* - Seconds
|
|
- Sessions Established
|
|
- Setup Rate
|
|
- MIN
|
|
- AVG
|
|
- MAX
|
|
* - 1
|
|
- 100
|
|
- 100
|
|
- 100
|
|
- 100
|
|
- 100
|
|
* - 2
|
|
- 150
|
|
- 75
|
|
- 75
|
|
- 88
|
|
- 100
|
|
* - 3
|
|
- 150
|
|
- 50
|
|
- 50
|
|
- 75
|
|
- 100
|
|
* - 4
|
|
- 200
|
|
- 50
|
|
- 50
|
|
- 69
|
|
- 100
|
|
|
|
Standard Output Reports
|
|
-----------------------
|
|
|
|
.. code-block:: none
|
|
|
|
Report:
|
|
==============================================================================
|
|
Test Duration: 139s
|
|
Sessions PPPoE: 1000 IPoE: 0
|
|
Sessions established: 1000/1000
|
|
DHCPv6 sessions established: 1000
|
|
Setup Time: 55661 ms
|
|
Setup Rate: 17.97 CPS (MIN: 15.01 AVG: 18.03 MAX: 19.36)
|
|
Flapped: 0
|
|
|
|
Interface: eth1
|
|
------------------------------------------------------------------------------
|
|
TX: 111410 packets 12654727 bytes
|
|
TX Polled: 0
|
|
TX IO Error: 0
|
|
RX: 110161 packets 12300031 bytes
|
|
RX Protocol Error: 0 packets
|
|
RX Unknown: 5 packets
|
|
RX Polled: 93709
|
|
RX IO Error: 0
|
|
|
|
Access Interface: eth1
|
|
TX: 111410 packets 12654727 bytes
|
|
RX: 110156 packets 12299556 bytes
|
|
RX Multicast: 0 packets 0 loss
|
|
Session-Traffic:
|
|
TX IPv4: 33319 packets
|
|
RX IPv4: 32641 packets 0 loss
|
|
TX IPv6: 33319 packets
|
|
RX IPv6: 32635 packets 0 loss
|
|
TX IPv6PD: 33311 packets
|
|
RX IPv6PD: 32633 packets 0 loss
|
|
|
|
Access Interface Protocol Packet Stats:
|
|
ARP TX: 0 RX: 0
|
|
PADI TX: 1104 RX: 0
|
|
PADO TX: 0 RX: 500
|
|
PADR TX: 500 RX: 0
|
|
PADS TX: 0 RX: 500
|
|
PADT TX: 127 RX: 373
|
|
LCP TX: 4880 RX: 4880
|
|
PAP TX: 0 RX: 0
|
|
CHAP TX: 1700 RX: 1000
|
|
IPCP TX: 1500 RX: 1500
|
|
IP6CP TX: 1000 RX: 1000
|
|
IGMP TX: 0 RX: 0
|
|
ICMP TX: 0 RX: 0
|
|
DHCP TX: 0 RX: 0
|
|
DHCPv6 TX: 500 RX: 500
|
|
ICMPv6 TX: 1000 RX: 1840
|
|
IPv4 Fragmented RX: 0
|
|
|
|
Access Interface Protocol Timeout Stats:
|
|
LCP Echo Request: 0
|
|
LCP Request: 0
|
|
IPCP Request: 0
|
|
IP6CP Request: 0
|
|
PAP: 0
|
|
CHAP: 350
|
|
DHCP Request: 0
|
|
DHCPv6 Request: 0
|
|
ICMPv6 RS: 0
|
|
|
|
Interface: eth2
|
|
------------------------------------------------------------------------------
|
|
TX: 108580 packets 12360218 bytes
|
|
TX Polled: 0
|
|
TX IO Error: 0
|
|
RX: 106881 packets 11982029 bytes
|
|
RX Protocol Error: 0 packets
|
|
RX Unknown: 5 packets
|
|
RX Polled: 95265
|
|
RX IO Error: 0
|
|
|
|
Access Interface: eth2
|
|
TX: 108580 packets 12360218 bytes
|
|
RX: 106876 packets 11981554 bytes
|
|
RX Multicast: 0 packets 0 loss
|
|
Session-Traffic:
|
|
TX IPv4: 32465 packets
|
|
RX IPv4: 31896 packets 0 loss
|
|
TX IPv6: 32465 packets
|
|
RX IPv6: 31895 packets 0 loss
|
|
TX IPv6PD: 32461 packets
|
|
RX IPv6PD: 31894 packets 0 loss
|
|
|
|
Access Interface Protocol Packet Stats:
|
|
ARP TX: 0 RX: 0
|
|
PADI TX: 1102 RX: 0
|
|
PADO TX: 0 RX: 500
|
|
PADR TX: 844 RX: 0
|
|
PADS TX: 0 RX: 500
|
|
PADT TX: 78 RX: 422
|
|
LCP TX: 4343 RX: 4343
|
|
PAP TX: 822 RX: 500
|
|
CHAP TX: 0 RX: 0
|
|
IPCP TX: 1500 RX: 1500
|
|
IP6CP TX: 1000 RX: 1000
|
|
IGMP TX: 0 RX: 0
|
|
ICMP TX: 0 RX: 0
|
|
DHCP TX: 0 RX: 0
|
|
DHCPv6 TX: 500 RX: 500
|
|
ICMPv6 TX: 1000 RX: 1816
|
|
IPv4 Fragmented RX: 0
|
|
|
|
Access Interface Protocol Timeout Stats:
|
|
LCP Echo Request: 0
|
|
LCP Request: 0
|
|
IPCP Request: 0
|
|
IP6CP Request: 0
|
|
PAP: 322
|
|
CHAP: 0
|
|
DHCP Request: 0
|
|
DHCPv6 Request: 0
|
|
ICMPv6 RS: 0
|
|
|
|
Interface: eth3
|
|
------------------------------------------------------------------------------
|
|
TX: 197523 packets 21009053 bytes
|
|
TX Polled: 0
|
|
TX IO Error: 0
|
|
RX: 188259 packets 20425245 bytes
|
|
RX Protocol Error: 0 packets
|
|
RX Unknown: 0 packets
|
|
RX Polled: 74810
|
|
RX IO Error: 0
|
|
|
|
Network Interface: eth3
|
|
TX: 197523 packets 21009053 bytes
|
|
RX: 188259 packets 20425245 bytes
|
|
TX Multicast: 0 packets
|
|
Session-Traffic:
|
|
TX IPv4: 65784 packets
|
|
RX IPv4: 64537 packets 0 loss
|
|
TX IPv6: 65784 packets
|
|
RX IPv6: 61793 packets 0 loss
|
|
TX IPv6PD: 65772 packets
|
|
RX IPv6PD: 61790 packets 0 loss
|
|
|
|
Session Traffic (Global):
|
|
------------------------------------------------------------------------------
|
|
Config:
|
|
PPS IPv4: 1
|
|
PPS IPv6: 1
|
|
PPS IPv6PD: 1
|
|
Verified Traffic Flows: 6000/6000 (100.00%)
|
|
Downstream IPv4: 1000
|
|
Downstream IPv6: 1000
|
|
Downstream IPv6PD: 1000
|
|
Upstream IPv4: 1000
|
|
Upstream IPv6: 1000
|
|
Upstream IPv6PD: 1000
|
|
Violations: >1s >1s-2s >2s-3s >3s
|
|
Downstream IPv4: 623 ( 10.38%) 199 224 200
|
|
Downstream IPv6: 624 ( 10.40%) 200 218 206
|
|
Downstream IPv6PD: 624 ( 10.40%) 200 227 197
|
|
Upstream IPv4: 623 ( 10.38%) 199 224 200
|
|
Upstream IPv6: 624 ( 10.40%) 200 218 206
|
|
Upstream IPv6PD: 624 ( 10.40%) 200 227 197
|
|
Total: 3742 ( 62.37%) 1198 1338 1206
|
|
First Sequence Received: MIN AVG MAX
|
|
Downstream IPv4 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
|
|
Downstream IPv6 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
|
|
Downstream IPv6PD 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
|
|
Upstream IPv4 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
|
|
Upstream IPv6 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
|
|
Upstream IPv6PD 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
|
|
|
|
|
|
|
|
JSON Reports
|
|
------------
|
|
|
|
A detailed JSON report is generated if enabled using the optional
|
|
argument ``-J <filename>``.
|
|
|
|
.. code-block:: json
|
|
|
|
{
|
|
"report": {
|
|
"sessions": 1000,
|
|
"sessions-pppoe": 1000,
|
|
"sessions-ipoe": 0,
|
|
"sessions-established": 1000,
|
|
"sessions-flapped": 0,
|
|
"setup-time-ms": 55661,
|
|
"setup-rate-cps": 17.97,
|
|
"setup-rate-cps-min": 15.01,
|
|
"setup-rate-cps-avg": 18.03,
|
|
"setup-rate-cps-max": 19.36,
|
|
"dhcp-sessions-established": 0,
|
|
"dhcpv6-sessions-established": 1000,
|
|
"interfaces": [
|
|
{
|
|
"name": "SN-6-L1",
|
|
"type": "Interface",
|
|
"tx-packets": 111410,
|
|
"tx-bytes": 12654727,
|
|
"tx-polled": 0,
|
|
"tx-io-error": 0,
|
|
"rx-packets": 110161,
|
|
"rx-bytes": 12300031,
|
|
"rx-protocol-error": 0,
|
|
"rx-unknown": 5,
|
|
"rx-polled": 12300031,
|
|
"rx-io-error": 0
|
|
},
|
|
{
|
|
"name": "SN-5-L1",
|
|
"type": "Interface",
|
|
"tx-packets": 108580,
|
|
"tx-bytes": 12360218,
|
|
"tx-polled": 0,
|
|
"tx-io-error": 0,
|
|
"rx-packets": 106881,
|
|
"rx-bytes": 11982029,
|
|
"rx-protocol-error": 0,
|
|
"rx-unknown": 5,
|
|
"rx-polled": 11982029,
|
|
"rx-io-error": 0
|
|
},
|
|
{
|
|
"name": "SN-2-S1",
|
|
"type": "Interface",
|
|
"tx-packets": 197523,
|
|
"tx-bytes": 21009053,
|
|
"tx-polled": 0,
|
|
"tx-io-error": 0,
|
|
"rx-packets": 188259,
|
|
"rx-bytes": 20425245,
|
|
"rx-protocol-error": 0,
|
|
"rx-unknown": 0,
|
|
"rx-polled": 20425245,
|
|
"rx-io-error": 0
|
|
}
|
|
],
|
|
"network-interfaces": [
|
|
{
|
|
"name": "SN-2-S1",
|
|
"tx-packets": 197523,
|
|
"tx-multicast-packets": 0,
|
|
"rx-packets": 188259,
|
|
"tx-stream-packets": 197340,
|
|
"rx-stream-packets": 188120,
|
|
"rx-stream-packets-loss": 0,
|
|
"tx-session-packets-ipv4": 65784,
|
|
"rx-session-packets-ipv4": 64537,
|
|
"rx-session-packets-ipv4-loss": 0,
|
|
"tx-session-packets-ipv4-avg-pps-max": 1000,
|
|
"rx-session-packets-ipv4-avg-pps-max": 1000,
|
|
"tx-session-packets-ipv6": 65784,
|
|
"rx-session-packets-ipv6": 61793,
|
|
"rx-session-packets-ipv6-loss": 0,
|
|
"tx-session-packets-ipv6-avg-pps-max": 1000,
|
|
"rx-session-packets-ipv6-avg-pps-max": 1000,
|
|
"tx-session-packets-ipv6pd": 65772,
|
|
"rx-session-packets-ipv6pd": 61790,
|
|
"rx-session-packets-ipv6pd-loss": 0,
|
|
"tx-session-packets-ipv6pd-avg-pps-max": 1000,
|
|
"rx-session-packets-ipv6pd-avg-pps-max": 1000
|
|
}
|
|
],
|
|
"access-interfaces": [
|
|
{
|
|
"name": "SN-6-L1",
|
|
"tx-packets": 111410,
|
|
"rx-packets": 110156,
|
|
"rx-multicast-packets": 0,
|
|
"rx-multicast-packets-loss": 0,
|
|
"tx-stream-packets": 99949,
|
|
"rx-stream-packets": 97909,
|
|
"rx-stream-packets-loss": 0,
|
|
"tx-session-packets-ipv4": 33319,
|
|
"rx-session-packets-ipv4": 32641,
|
|
"rx-session-packets-ipv4-loss": 0,
|
|
"rx-session-packets-ipv4-wrong-session": 0,
|
|
"tx-session-packets-ipv4-avg-pps-max": 500,
|
|
"rx-session-packets-ipv4-avg-pps-max": 500,
|
|
"tx-session-packets-ipv6": 33319,
|
|
"rx-session-packets-ipv6": 32635,
|
|
"rx-session-packets-ipv6-loss": 0,
|
|
"rx-session-packets-ipv6-wrong-session": 0,
|
|
"tx-session-packets-ipv6-avg-pps-max": 500,
|
|
"rx-session-packets-ipv6avg-pps-max": 500,
|
|
"tx-session-packets-ipv6pd": 33311,
|
|
"rx-session-packets-ipv6pd": 32633,
|
|
"rx-session-packets-ipv6pd-loss": 0,
|
|
"rx-session-packets-ipv6pd-wrong-session": 0,
|
|
"tx-session-packets-ipv6pd-avg-pps-max": 500,
|
|
"rx-session-packets-ipv6pd-avg-pps-max": 500,
|
|
"protocol-stats": {
|
|
"tx-arp": 0,
|
|
"rx-arp": 0,
|
|
"tx-padi": 1104,
|
|
"rx-pado": 500,
|
|
"tx-padr": 500,
|
|
"rx-pads": 500,
|
|
"tx-padt": 127,
|
|
"rx-padt": 373,
|
|
"tx-lcp": 4880,
|
|
"rx-lcp": 4880,
|
|
"tx-pap": 0,
|
|
"rx-pap": 0,
|
|
"tx-chap": 1700,
|
|
"rx-chap": 1000,
|
|
"tx-ipcp": 1500,
|
|
"rx-ipcp": 1500,
|
|
"tx-ip6cp": 1000,
|
|
"rx-ip6cp": 1000,
|
|
"tx-igmp": 0,
|
|
"rx-igmp": 0,
|
|
"tx-icmp": 0,
|
|
"rx-icmp": 0,
|
|
"tx-dhcp": 0,
|
|
"rx-dhcp": 0,
|
|
"tx-dhcpv6": 500,
|
|
"rx-dhcpv6": 500,
|
|
"tx-icmpv6": 1000,
|
|
"rx-icmpv6": 1840,
|
|
"rx-ipv4-fragmented": 0,
|
|
"lcp-echo-timeout": 0,
|
|
"lcp-request-timeout": 0,
|
|
"ipcp-request-timeout": 0,
|
|
"ip6cp-request-timeout": 0,
|
|
"pap-timeout": 0,
|
|
"chap-timeout": 350,
|
|
"dhcp-timeout": 0,
|
|
"dhcpv6-timeout": 0,
|
|
"icmpv6-rs-timeout": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "SN-5-L1",
|
|
"tx-packets": 108580,
|
|
"rx-packets": 106876,
|
|
"rx-multicast-packets": 0,
|
|
"rx-multicast-packets-loss": 0,
|
|
"tx-stream-packets": 97391,
|
|
"rx-stream-packets": 95685,
|
|
"rx-stream-packets-loss": 0,
|
|
"tx-session-packets-ipv4": 32465,
|
|
"rx-session-packets-ipv4": 31896,
|
|
"rx-session-packets-ipv4-loss": 0,
|
|
"rx-session-packets-ipv4-wrong-session": 0,
|
|
"tx-session-packets-ipv4-avg-pps-max": 500,
|
|
"rx-session-packets-ipv4-avg-pps-max": 500,
|
|
"tx-session-packets-ipv6": 32465,
|
|
"rx-session-packets-ipv6": 31895,
|
|
"rx-session-packets-ipv6-loss": 0,
|
|
"rx-session-packets-ipv6-wrong-session": 0,
|
|
"tx-session-packets-ipv6-avg-pps-max": 500,
|
|
"rx-session-packets-ipv6avg-pps-max": 500,
|
|
"tx-session-packets-ipv6pd": 32461,
|
|
"rx-session-packets-ipv6pd": 31894,
|
|
"rx-session-packets-ipv6pd-loss": 0,
|
|
"rx-session-packets-ipv6pd-wrong-session": 0,
|
|
"tx-session-packets-ipv6pd-avg-pps-max": 500,
|
|
"rx-session-packets-ipv6pd-avg-pps-max": 500,
|
|
"protocol-stats": {
|
|
"tx-arp": 0,
|
|
"rx-arp": 0,
|
|
"tx-padi": 1102,
|
|
"rx-pado": 500,
|
|
"tx-padr": 844,
|
|
"rx-pads": 500,
|
|
"tx-padt": 78,
|
|
"rx-padt": 422,
|
|
"tx-lcp": 4343,
|
|
"rx-lcp": 4343,
|
|
"tx-pap": 822,
|
|
"rx-pap": 500,
|
|
"tx-chap": 0,
|
|
"rx-chap": 0,
|
|
"tx-ipcp": 1500,
|
|
"rx-ipcp": 1500,
|
|
"tx-ip6cp": 1000,
|
|
"rx-ip6cp": 1000,
|
|
"tx-igmp": 0,
|
|
"rx-igmp": 0,
|
|
"tx-icmp": 0,
|
|
"rx-icmp": 0,
|
|
"tx-dhcp": 0,
|
|
"rx-dhcp": 0,
|
|
"tx-dhcpv6": 500,
|
|
"rx-dhcpv6": 500,
|
|
"tx-icmpv6": 1000,
|
|
"rx-icmpv6": 1816,
|
|
"rx-ipv4-fragmented": 0,
|
|
"lcp-echo-timeout": 0,
|
|
"lcp-request-timeout": 0,
|
|
"ipcp-request-timeout": 0,
|
|
"ip6cp-request-timeout": 0,
|
|
"pap-timeout": 322,
|
|
"chap-timeout": 0,
|
|
"dhcp-timeout": 0,
|
|
"dhcpv6-timeout": 0,
|
|
"icmpv6-rs-timeout": 0
|
|
}
|
|
}
|
|
],
|
|
"session-traffic": {
|
|
"config-ipv4-pps": 1,
|
|
"config-ipv6-pps": 1,
|
|
"config-ipv6pd-pps": 1,
|
|
"total-flows": 6000,
|
|
"verified-flows": 6000,
|
|
"verified-flows-downstream-ipv4": 1000,
|
|
"verified-flows-downstream-ipv6": 1000,
|
|
"verified-flows-downstream-ipv6pd": 1000,
|
|
"verified-flows-upstream-ipv4": 1000,
|
|
"verified-flows-upstream-ipv6": 1000,
|
|
"verified-flows-upstream-ipv6pd": 1000,
|
|
"violated-flows-downstream-ipv4-3s": 200,
|
|
"violated-flows-downstream-ipv6-3s": 206,
|
|
"violated-flows-downstream-ipv6pd-3s": 197,
|
|
"violated-flows-upstream-ipv4-3s": 200,
|
|
"violated-flows-upstream-ipv6-3s": 206,
|
|
"violated-flows-upstream-ipv6pd-3s": 197,
|
|
"violated-flows-downstream-ipv4-2s": 224,
|
|
"violated-flows-downstream-ipv6-2s": 218,
|
|
"violated-flows-downstream-ipv6pd-2s": 227,
|
|
"violated-flows-upstream-ipv4-2s": 224,
|
|
"violated-flows-upstream-ipv6-2s": 218,
|
|
"violated-flows-upstream-ipv6pd-2s": 227,
|
|
"violated-flows-downstream-ipv4-1s": 199,
|
|
"violated-flows-downstream-ipv6-1s": 200,
|
|
"violated-flows-downstream-ipv6pd-1s": 200,
|
|
"violated-flows-upstream-ipv4-1s": 199,
|
|
"violated-flows-upstream-ipv6-1s": 200,
|
|
"violated-flows-upstream-ipv6pd-1s": 200,
|
|
"first-seq-rx-downstream-ipv4-min": 1,
|
|
"first-seq-rx-downstream-ipv4-avg": 2,
|
|
"first-seq-rx-downstream-ipv4-max": 4,
|
|
"first-seq-rx-downstream-ipv6-min": 1,
|
|
"first-seq-rx-downstream-ipv6-avg": 2,
|
|
"first-seq-rx-downstream-ipv6-max": 4,
|
|
"first-seq-rx-downstream-ipv6pd-min": 1,
|
|
"first-seq-rx-downstream-ipv6pd-avg": 2,
|
|
"first-seq-rx-downstream-ipv6pd-max": 4,
|
|
"first-seq-rx-upstream-ipv4-min": 1,
|
|
"first-seq-rx-upstream-ipv4-avg": 2,
|
|
"first-seq-rx-upstream-ipv4-max": 4,
|
|
"first-seq-rx-upstream-ipv6-min": 1,
|
|
"first-seq-rx-upstream-ipv6-avg": 2,
|
|
"first-seq-rx-upstream-ipv6-max": 4,
|
|
"first-seq-rx-upstream-ipv6pd-min": 1,
|
|
"first-seq-rx-upstream-ipv6pd-avg": 2,
|
|
"first-seq-rx-upstream-ipv6pd-max": 4,
|
|
"first-seq-rx-downstream-ipv4-min-seconds": 1,
|
|
"first-seq-rx-downstream-ipv4-avg-seconds": 2,
|
|
"first-seq-rx-downstream-ipv4-max-seconds": 4,
|
|
"first-seq-rx-downstream-ipv6-min-seconds": 1,
|
|
"first-seq-rx-downstream-ipv6-avg-seconds": 2,
|
|
"first-seq-rx-downstream-ipv6-max-seconds": 4,
|
|
"first-seq-rx-downstream-ipv6pd-min-seconds": 1,
|
|
"first-seq-rx-downstream-ipv6pd-avg-seconds": 2,
|
|
"first-seq-rx-downstream-ipv6pd-max-seconds": 4,
|
|
"first-seq-rx-upstream-ipv4-min-seconds": 1,
|
|
"first-seq-rx-upstream-ipv4-avg-seconds": 2,
|
|
"first-seq-rx-upstream-ipv4-max-seconds": 4,
|
|
"first-seq-rx-upstream-ipv6-min-seconds": 1,
|
|
"first-seq-rx-upstream-ipv6-avg-seconds": 2,
|
|
"first-seq-rx-upstream-ipv6-max-seconds": 4,
|
|
"first-seq-rx-upstream-ipv6pd-min-seconds": 1,
|
|
"first-seq-rx-upstream-ipv6pd-avg-seconds": 2,
|
|
"first-seq-rx-upstream-ipv6pd-max-seconds": 4
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
The optional argument ``-j sessions`` allows to include per session statistics
|
|
in the report file. Similar to ``-j streams`` which allows for including per stream
|
|
statistics. Both options can be also combined.
|
|
|
|
Those extensive JSON reports could be easily verified with simple python scripts to
|
|
extract the desired results.
|
|
|
|
.. code-block:: python
|
|
|
|
#!/usr/bin/env python3
|
|
import json
|
|
|
|
# Open JSON report ...
|
|
with open('report.json') as f:
|
|
data = json.load(f)
|
|
# Analyze data ... |