+ @staticmethod
+ def initialize_traffic_generator(node, interface1, interface2):
+ """TG initialization
+ :param node: Traffic generator node
+ :param interface1: PCI address of first interface
+ :param interface2: PCI address of second interface
+ :type node: dict
+ :type interface1: str
+ :type interface2: str
+ :return: nothing
+ """
+
+ trex_path = "/opt/trex-core-1.91"
+
+ if node['type'] != NodeType.TG:
+ raise Exception('Node type is not a TG')
+ if node['subtype'] == NodeSubTypeTG.TREX:
+ ssh = SSH()
+ ssh.connect(node)
+
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c 'cd {0}/scripts/ && sudo modprobe uio && "
+ "sudo insmod ./ko/src/igb_uio.ko'"\
+ .format(trex_path))
+
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c 'cd {0}/scripts/ && "
+ "sudo nohup ./t-rex-64 -i -c 4 --iom 0 > /dev/null 2>&1 &'"\
+ .format(trex_path))
+
+ @staticmethod
+ def teardown_traffic_generator(node):
+ """TG teardown
+ :param node: Traffic generator node
+ :type node: dict
+ :return: nothing
+ """
+
+ if node['type'] != NodeType.TG:
+ raise Exception('Node type is not a TG')
+ if node['subtype'] == NodeSubTypeTG.TREX:
+ ssh = SSH()
+ ssh.connect(node)
+ (ret, stdout, stderr) = ssh.exec_command(
+ "sh -c 'sudo pkill t-rex'")
+
+ def send_traffic_on(self, nodes_info, duration, rate,
+ framesize, traffic_type):
+ """Send traffic from all configured interfaces on TG
+ :param nodes_info: Dictionary containing information on all nodes
+ in topology.
+ :param duration: Duration of test traffic generation in seconds
+ :param rate: Percentage of linerate
+ :param framesize: Frame size (L2) in Bytes
+ :param traffic_type: Traffic profile
+ :type nodes_info: dict
+ :type duration: str
+ :type rate: str
+ :type framesize: str
+ :type traffic_type: str
+ :return: TG output
+ :rtype: str
+ """
+
+ node = nodes_info["TG"]
+
+ if node['type'] != NodeType.TG:
+ raise Exception('Node type is not a TG')
+
+ if node['subtype'] is None:
+ raise Exception('TG subtype not defined')