[RFC,v1,06/10] dts: add traffic generator node
Checks
Commit Message
The Traffic Generator node is responsible for configuring and running
traffic generators. For HelloWorld, we don't need any traffic, so this
is just a barebones implementation demonstrating the two nodes in use
in DTS.
Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
---
dts/framework/tg_node.py | 78 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)
create mode 100644 dts/framework/tg_node.py
new file mode 100644
@@ -0,0 +1,78 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2010-2014 Intel Corporation
+# Copyright(c) 2022 PANTHEON.tech s.r.o.
+#
+
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2010-2019 Intel Corporation
+# Copyright(c) 2022 PANTHEON.tech s.r.o.
+#
+
+"""
+Interface for bulk traffic generators.
+"""
+
+from framework.config import NodeConfiguration
+
+from .node import Node
+
+
+class TrafficGeneratorNode(Node):
+ """
+ A class for managing connections to the node running the Traffic generator,
+ providing methods that retrieve the necessary information about the node
+ (such as cpu, memory and NIC details), configure it and configure and
+ manage the Traffic generator.
+ """
+
+ def __init__(self, node_config: NodeConfiguration):
+ super(TrafficGeneratorNode, self).__init__(node_config)
+ # check the python version of TG
+ self.sut_nodes = []
+ self.re_run_time = 0
+
+ def prerequisites(self):
+ """
+ Setup hugepages and kernel modules on TG.
+ """
+ self.kill_all()
+
+ if not self.skip_setup:
+ total_huge_pages = self.get_total_huge_pages()
+ hugepages_size = self.send_expect(
+ "awk '/Hugepagesize/ {print $2}' /proc/meminfo", "# "
+ )
+ if total_huge_pages == 0:
+ self.mount_huge_pages()
+ if hugepages_size == "524288":
+ self.set_huge_pages(8)
+ else:
+ self.set_huge_pages(1024)
+
+ self.send_expect("modprobe uio", "# ")
+
+ self.tg_prerequisites()
+
+ def tg_prerequisites(self):
+ """
+ Prerequest function should be called before execute any test case.
+ Will call function to scan all lcore's information which on TG.
+ """
+
+ self.init_core_list()
+
+ self.disable_lldp()
+
+ def set_re_run(self, re_run_time):
+ """
+ set failed case re-run time
+ """
+ self.re_run_time = int(re_run_time)
+
+ def disable_lldp(self):
+ """
+ Disable TG ports LLDP.
+ """
+ result = self.send_expect("lldpad -d", "# ")
+ if result:
+ self.logger.error(result.strip())