aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/TrafficGenerator.py
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/python/TrafficGenerator.py')
-rw-r--r--resources/libraries/python/TrafficGenerator.py101
1 files changed, 53 insertions, 48 deletions
diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py
index afb9388111..4543bae87b 100644
--- a/resources/libraries/python/TrafficGenerator.py
+++ b/resources/libraries/python/TrafficGenerator.py
@@ -278,64 +278,69 @@ class TrafficGenerator(AbstractMeasurer):
else:
return "none"
- def initialize_traffic_generator(
- self, tg_node, tg_if1, tg_if2, tg_if1_adj_node, tg_if1_adj_if,
- tg_if2_adj_node, tg_if2_adj_if, osi_layer, tg_if1_dst_mac=None,
- tg_if2_dst_mac=None):
+ def initialize_traffic_generator(self, osi_layer, parallel_links=1):
"""TG initialization.
- :param tg_node: Traffic generator node.
- :param tg_if1: TG - name of first interface.
- :param tg_if2: TG - name of second interface.
- :param tg_if1_adj_node: TG if1 adjecent node.
- :param tg_if1_adj_if: TG if1 adjecent interface.
- :param tg_if2_adj_node: TG if2 adjecent node.
- :param tg_if2_adj_if: TG if2 adjecent interface.
:param osi_layer: 'L2', 'L3' or 'L7' - OSI Layer testing type.
- :param tg_if1_dst_mac: Interface 1 destination MAC address.
- :param tg_if2_dst_mac: Interface 2 destination MAC address.
- :type tg_node: dict
- :type tg_if1: str
- :type tg_if2: str
- :type tg_if1_adj_node: dict
- :type tg_if1_adj_if: str
- :type tg_if2_adj_node: dict
- :type tg_if2_adj_if: str
+ :param parallel_links: Number of parallel links to configure.
:type osi_layer: str
- :type tg_if1_dst_mac: str
- :type tg_if2_dst_mac: str
- :returns: nothing
- :raises RuntimeError: In case of issue during initialization.
+ :type parallel_links: int
+ :raises ValueError: If OSI layer is unknown.
"""
- subtype = check_subtype(tg_node)
+ if osi_layer not in ("L2", "L3", "L7"):
+ raise ValueError("Unknown OSI layer!")
+
+ topology = BuiltIn().get_variable_value("&{topology_info}")
+ self._node = topology["TG"]
+ subtype = check_subtype(self._node)
+
if subtype == NodeSubTypeTG.TREX:
- self._node = tg_node
+ trex_topology = list()
self._mode = TrexMode.ASTF if osi_layer == "L7" else TrexMode.STL
- if osi_layer == "L2":
- tg_if1_adj_addr = Topology().get_interface_mac(tg_node, tg_if2)
- tg_if2_adj_addr = Topology().get_interface_mac(tg_node, tg_if1)
- elif osi_layer in ("L3", "L7"):
- tg_if1_adj_addr = Topology().get_interface_mac(
- tg_if1_adj_node, tg_if1_adj_if
+ for l in range(1, parallel_links*2, 2):
+ tg_if1_adj_addr = topology[f"TG_pf{l+1}_mac"][0]
+ tg_if2_adj_addr = topology[f"TG_pf{l}_mac"][0]
+ if osi_layer in ("L3", "L7"):
+ ifl = BuiltIn().get_variable_value("${int}")
+ last = topology["duts_count"]
+ tg_if1_adj_addr = Topology().get_interface_mac(
+ topology["DUT1"],
+ BuiltIn().get_variable_value(
+ f"${{DUT1_{ifl}{l}}}[0]"
+ )
+ )
+ tg_if2_adj_addr = Topology().get_interface_mac(
+ topology[f"DUT{last}"],
+ BuiltIn().get_variable_value(
+ f"${{DUT{last}_{ifl}{l+1}}}[0]"
+ )
+ )
+
+ trex_topology.append(
+ dict(
+ interface=topology[f"TG_pf{l}"][0],
+ dst_mac=tg_if1_adj_addr
+ )
)
- tg_if2_adj_addr = Topology().get_interface_mac(
- tg_if2_adj_node, tg_if2_adj_if
+ trex_topology.append(
+ dict(
+ interface=topology[f"TG_pf{l+1}"][0],
+ dst_mac=tg_if2_adj_addr
+ )
)
- else:
- raise ValueError("Unknown OSI layer!")
-
- tg_topology = list()
- tg_topology.append(dict(interface=tg_if1, dst_mac=tg_if1_adj_addr))
- tg_topology.append(dict(interface=tg_if2, dst_mac=tg_if2_adj_addr))
- if1_pci = Topology().get_interface_pci_addr(self._node, tg_if1)
- if2_pci = Topology().get_interface_pci_addr(self._node, tg_if2)
- if min(if1_pci, if2_pci) != if1_pci:
- self._ifaces_reordered = True
- tg_topology.reverse()
-
- TrexInitConfig.init_trex_startup_configuration(tg_node, tg_topology)
- TrafficGenerator.startup_trex(tg_node, osi_layer, subtype=subtype)
+ if1_pci = topology[f"TG_pf{l}_pci"][0]
+ if2_pci = topology[f"TG_pf{l+1}_pci"][0]
+ if min(if1_pci, if2_pci) != if1_pci:
+ self._ifaces_reordered = True
+ trex_topology.reverse()
+
+ TrexInitConfig.init_trex_startup_configuration(
+ self._node, trex_topology
+ )
+ TrafficGenerator.startup_trex(
+ self._node, osi_layer, subtype=subtype
+ )
@staticmethod
def startup_trex(tg_node, osi_layer, subtype=None):