diff options
Diffstat (limited to 'resources/libraries/python/TrafficGenerator.py')
-rw-r--r-- | resources/libraries/python/TrafficGenerator.py | 101 |
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): |