aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Mikus <pmikus@cisco.com>2019-12-18 16:28:28 +0000
committerPeter Mikus <pmikus@cisco.com>2020-01-02 07:03:37 +0000
commitefcdd3eadfadb2814a9e3b67cce84b5dc89c7108 (patch)
tree36e81c492f55e65496e6cea06396650ecaedc44b
parent13d39ef24703505a44e5983ce42df2a1e3ca67af (diff)
TREX: Ability to configure from outside TrafficGenerator.py
Signed-off-by: Peter Mikus <pmikus@cisco.com> Change-Id: Ia9832e5e65dbcf2d4f99c52fd0570d456262ab9a
-rw-r--r--resources/libraries/python/Constants.py20
-rw-r--r--resources/libraries/python/TrafficGenerator.py10
2 files changed, 19 insertions, 11 deletions
diff --git a/resources/libraries/python/Constants.py b/resources/libraries/python/Constants.py
index eee9177a18..626dab8331 100644
--- a/resources/libraries/python/Constants.py
+++ b/resources/libraries/python/Constants.py
@@ -13,11 +13,8 @@
"""Constants used in CSIT.
-Here, "constant" means a value that keeps its value since initialization.
-However, the value does not need to be hardcoded here,
-some values are affected by environment variables.
-
-TODO: Review env and constant names, make them matching if possible.
+"Constant" means a value that keeps its value since initialization. The value
+does not need to be hard coded here, but can be read from environment variables.
"""
@@ -31,8 +28,8 @@ def get_str_from_env(env_var_names, default_value):
empty string is returned.
Several environment variable names are examined, as CSIT currently supports
- a mix of naming convensions.
- Here "several" means there are hardcoded prefixes to try,
+ a mix of naming conventions.
+ Here "several" means there are hard coded prefixes to try,
and env_var_names itself can be single name, or a list or a tuple of names.
:param env_var_names: Base names of environment variable to attempt to read.
@@ -187,6 +184,15 @@ class Constants:
# TRex install directory
TREX_INSTALL_DIR = u"/opt/trex-core-2.61"
+ # TRex limit memory
+ TREX_LIMIT_MEMORY = get_int_from_env(u"TREX_LIMIT_MEMORY ", 8192)
+
+ # TRex number of cores
+ TREX_CORE_COUNT = get_int_from_env(u"TREX_CORE_COUNT", 7)
+
+ # TRex extra commandline arguments
+ TREX_EXTRA_CMDLINE = get_str_from_env(u"TREX_EXTRA_CMDLINE", u"")
+
# Sysctl kernel.core_pattern
KERNEL_CORE_PATTERN = u"/tmp/%p-%u-%g-%s-%t-%h-%e.core"
diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py
index 007079f254..a73e471f77 100644
--- a/resources/libraries/python/TrafficGenerator.py
+++ b/resources/libraries/python/TrafficGenerator.py
@@ -286,6 +286,7 @@ class TrafficGenerator(AbstractMeasurer):
self._node,
f"sh -c 'cat << EOF > /etc/trex_cfg.yaml\n"
f"- version: 2\n"
+ f" limit_memory: {Constants.TREX_LIMIT_MEMORY}\n"
f" interfaces: [\"{if1_pci}\",\"{if2_pci}\"]\n"
f" port_info:\n"
f" - dest_mac: [{dst_mac0}]\n"
@@ -300,6 +301,7 @@ class TrafficGenerator(AbstractMeasurer):
self._node,
f"sh -c 'cat << EOF > /etc/trex_cfg.yaml\n"
f"- version: 2\n"
+ f" limit_memory: {Constants.TREX_LIMIT_MEMORY}\n"
f" interfaces: [\"{if1_pci}\",\"{if2_pci}\"]\n"
f" port_info:\n"
f" - ip: [{if1_addr}]\n"
@@ -343,10 +345,10 @@ class TrafficGenerator(AbstractMeasurer):
# Start TRex.
cmd = f"sh -c \"cd {Constants.TREX_INSTALL_DIR}/scripts/ && " \
- f"nohup ./t-rex-64 " \
- f"--hdrh{u' --astf' if osi_layer == u'L7' else u''} " \
- f"--prefix $(hostname) -i -c 7 > /tmp/trex.log 2>&1 &\" > " \
- f"/dev/null"
+ f"nohup ./t-rex-64 -i -c {Constants.TREX_CORE_COUNT} --hdrh " \
+ f"{u' --astf' if osi_layer == u'L7' else u''} " \
+ f"--prefix $(hostname) {Constants.TREX_EXTRA_CMDLINE} " \
+ f"> /tmp/trex.log 2>&1 &\" > /dev/null"
try:
exec_cmd_no_error(self._node, cmd, sudo=True)
except RuntimeError: