tests.qos

This model component bundles together the tools necessary to test the QoS (Quality of Service) parameters that can be set in FIREWHEEL to affect network link performance. It will construct a simple topology with two VMs and connect them with a Switch. Then, depending on the input to the plugin, the specified QoS parameter is added to the edge. This serves as an example of how QoS can be implemented in FIREWHEEL and is used in our functional test suite.

It includes two types of tests:

  • delay - This test sets the "delay" QoS parameter to add a 10 second delay to network traffic leaving a node. This is detectable via ping which is also called on each of the VMs as a part of of the qos_test.py VMR.

  • drops - This test sets the "packet_loss" QoS parameter to 50%. As such it is expected that about 50% of packets will be dropped. This too can be verified via ping which is called on each of the VMs as a part of the VMR.

Note

The "throughput" QoS parameter is not demonstrated/tested with this MC. It may be added in the future.

Attribute Provides:
  • topology

Attribute Depends:
  • graph

Model Component Dependencies:

Plugin

class tests.qos_plugin.Plugin(graph, log)[source]

Bases: AbstractPlugin

Enable testing the quality of service (QoS) for edges. Currently, we verify that both "delay" and "dropped packets" are correctly handled. Additionally, default values are provided for both. The delay adds 10,000 ms delay and the packet loss is 50%.

__annotations__ = {}
run(test='delay')[source]

Construct a simple topology with two VMs and connect them with a Switch. Then add the specified QoS parameter to the edge. This serves as an example of how QoS can be implemented in FIREWHEEL and is used in our functional test suite.

Parameters:

test (str, optional) – The type of QoS to measure. Should be one of {"delay", "drops"}. Defaults to "delay".

Note

The QoS parameters will only impact the egress traffic for the given edge.

Raises:

RuntimeError – If the test is not one of {"delay", "drops"}.