diff options
author | Vratko Polak <vrpolak@cisco.com> | 2020-01-07 10:23:23 +0100 |
---|---|---|
committer | Peter Mikus <pmikus@cisco.com> | 2020-01-07 15:23:33 +0000 |
commit | 3a001f6be69e9bc3a5c1cfe3386f9d62fd680af1 (patch) | |
tree | 02e03c094e7560979461149c9f722e65e5f8e222 | |
parent | aa5f30a291cc6781cf7071118d1179d201df75b2 (diff) |
Fix Trex start configuration
Since https://gerrit.fd.io/r/c/csit/+/24056
csit-vpp perf tests are failing.
Turns out the reason is too large limit_memory value,
but other improvements applied during investigation
are included as well.
+ Cat trex.log if trex fails to start.
+ Improve trex startup command formatting (remove double spaces).
+ Reorder imports.
Change-Id: I2c1106ea6f88a1a275682e73eba212d08c7947c8
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
-rw-r--r-- | resources/libraries/python/Constants.py | 5 | ||||
-rw-r--r-- | resources/libraries/python/TrafficGenerator.py | 28 |
2 files changed, 21 insertions, 12 deletions
diff --git a/resources/libraries/python/Constants.py b/resources/libraries/python/Constants.py index e6f22bdaec..d6a94abb9e 100644 --- a/resources/libraries/python/Constants.py +++ b/resources/libraries/python/Constants.py @@ -184,8 +184,9 @@ 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 limit memory. + # 4096 pages (4 GB) is used just due to the current testbed settings. + TREX_LIMIT_MEMORY = get_int_from_env(u"TREX_LIMIT_MEMORY ", 4096) # TRex number of cores TREX_CORE_COUNT = get_int_from_env(u"TREX_CORE_COUNT", 7) diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py index a73e471f77..f0e2a17ec0 100644 --- a/resources/libraries/python/TrafficGenerator.py +++ b/resources/libraries/python/TrafficGenerator.py @@ -18,16 +18,17 @@ import time from robot.api import logger from robot.libraries.BuiltIn import BuiltIn -from .DropRateSearch import DropRateSearch from .Constants import Constants -from .ssh import exec_cmd_no_error, exec_cmd -from .topology import NodeType -from .topology import NodeSubTypeTG -from .topology import Topology +from .DropRateSearch import DropRateSearch from .MLRsearch.AbstractMeasurer import AbstractMeasurer from .MLRsearch.MultipleLossRatioSearch import MultipleLossRatioSearch from .MLRsearch.ReceiveRateMeasurement import ReceiveRateMeasurement from .PLRsearch.PLRsearch import PLRsearch +from .OptionString import OptionString +from .ssh import exec_cmd_no_error, exec_cmd +from .topology import NodeType +from .topology import NodeSubTypeTG +from .topology import Topology __all__ = [u"TGDropRateSearchImpl", u"TrafficGenerator", u"OptimizedSearch"] @@ -344,11 +345,17 @@ class TrafficGenerator(AbstractMeasurer): ) # Start TRex. - cmd = f"sh -c \"cd {Constants.TREX_INSTALL_DIR}/scripts/ && " \ - 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" + cd_cmd = f"cd '{Constants.TREX_INSTALL_DIR}/scripts/'" + trex_cmd = OptionString([u"nohup", u"./t-rex-64"]) + trex_cmd.add(u"-i") + trex_cmd.add(f"-c {Constants.TREX_CORE_COUNT}") + trex_cmd.add(u"--prefix $(hostname)") + trex_cmd.add(u"--hdrh") + trex_cmd.add_if(u"--astf", osi_layer == u"L7") + # OptionString does not create double space if extra is empty. + trex_cmd.add(f"{Constants.TREX_EXTRA_CMDLINE}") + inner_command = f"{cd_cmd} && {trex_cmd} > /tmp/trex.log 2>&1 &" + cmd = f"sh -c \"{inner_command}\" > /dev/null" try: exec_cmd_no_error(self._node, cmd, sudo=True) except RuntimeError: @@ -371,6 +378,7 @@ class TrafficGenerator(AbstractMeasurer): return # After max retries TRex is still not responding to API critical error # occurred. + exec_cmd(self._node, u"cat /tmp/trex.log", sudo=True) raise RuntimeError(u"Start TRex failed after multiple retries!") @staticmethod |