summaryrefslogtreecommitdiffstats
path: root/scripts/automation/trex_control_plane
diff options
context:
space:
mode:
authorYaroslav Brustinov <ybrustin@cisco.com>2016-12-12 17:38:43 +0200
committerYaroslav Brustinov <ybrustin@cisco.com>2016-12-19 11:23:48 +0200
commitcc4bd93b660505a7c9d8e370a1220377907fa6d2 (patch)
treeb0296f645a76f50d3ca0a957a70f54a7b3afc23b /scripts/automation/trex_control_plane
parentac3784a3bad416d45b93cb17be551726e08c545d (diff)
1) limit number of streams per port to 20k
2) fix showing error in TUI 3) represensation of STLError: show only errors if error, limit by 10 entries Change-Id: Ib8de9222e7fc09dd67275283857d0d7e9cb5988c Signed-off-by: Yaroslav Brustinov <ybrustin@cisco.com>
Diffstat (limited to 'scripts/automation/trex_control_plane')
-rw-r--r--scripts/automation/trex_control_plane/stl/console/trex_tui.py2
-rwxr-xr-xscripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_client.py7
-rw-r--r--scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_types.py25
-rw-r--r--scripts/automation/trex_control_plane/stl/trex_stl_lib/utils/text_opts.py19
4 files changed, 40 insertions, 13 deletions
diff --git a/scripts/automation/trex_control_plane/stl/console/trex_tui.py b/scripts/automation/trex_control_plane/stl/console/trex_tui.py
index bf6ed164..37ef8000 100644
--- a/scripts/automation/trex_control_plane/stl/console/trex_tui.py
+++ b/scripts/automation/trex_control_plane/stl/console/trex_tui.py
@@ -1153,7 +1153,7 @@ class AsyncKeysEngineConsole:
# errors
else:
err_msgs = ascii_split(str(func_rc))
- self.last_status = format_text(err_msgs[0], 'red')
+ self.last_status = format_text(clear_formatting(err_msgs[0]), 'red')
if len(err_msgs) > 1:
self.last_status += " [{0} more errors messages]".format(len(err_msgs) - 1)
color = 'red'
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_client.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_client.py
index 964acce7..2aa0450d 100755
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_client.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_client.py
@@ -15,6 +15,7 @@ from .utils import parsing_opts, text_tables, common
from .utils.common import *
from .utils.text_opts import *
from functools import wraps
+from texttable import ansi_len
from collections import namedtuple
from yaml import YAMLError
@@ -2025,7 +2026,6 @@ class STLClient(object):
@__api_check(True)
def get_xstats(self, port_id):
- print(port_id)
"""
Get extended stats of port: all the counters as dict.
@@ -3407,9 +3407,8 @@ class STLClient(object):
self.add_streams(profile.get_streams(), ports = port)
except STLError as e:
- error = 'Unknown error.'
- for line in e.brief().split('\n'):
- if line:
+ for line in e.brief().splitlines():
+ if ansi_len(line.strip()):
error = line
msg = format_text("\nError loading profile '{0}'".format(opts.file[0]), 'bold')
self.logger.log(msg + '\n')
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_types.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_types.py
index 81015ddc..5ae3cb27 100644
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_types.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_types.py
@@ -50,11 +50,26 @@ class RC():
return (e if len(e) != 1 else e[0])
def __str__ (self):
- s = ""
- for x in self.rc_list:
- if x.data:
- s += format_text("\n{0}".format(x.data), 'bold')
- return s
+ if self.good():
+ s = ""
+ for x in self.rc_list:
+ if x.data:
+ s += format_text("\n{0}".format(x.data), 'bold')
+ return s
+ else:
+ show_count = 10
+ err_list = []
+ err_count = 0
+ for x in self.rc_list:
+ if x.data and not x.rc:
+ err_count += 1
+ if len(err_list) < show_count:
+ err_list.append(format_text(x.data, 'bold'))
+ s = '\n' if len(err_list) > 1 else ''
+ if err_count > show_count:
+ s += format_text('Occurred %s errors, showing first %s:\n' % (err_count, show_count), 'bold')
+ s += '\n'.join(err_list)
+ return s
def __iter__(self):
return self.rc_list.__iter__()
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/utils/text_opts.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/utils/text_opts.py
index bfb96950..6c5dd2c3 100644
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/utils/text_opts.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/utils/text_opts.py
@@ -27,6 +27,9 @@ class TextCodesStripper:
def strip (s):
return re.sub(TextCodesStripper.pattern, '', s)
+def clear_formatting(s):
+ return TextCodesStripper.strip(s)
+
def format_num (size, suffix = "", compact = True, opts = None):
if opts is None:
opts = ()
@@ -129,10 +132,20 @@ def underline(text):
return text_attribute(text, 'underline')
+start_end_newlines = re.compile('^(\n)*([^\n].*[^\n])?(\n)*$', re.DOTALL)
def text_attribute(text, attribute):
- return "{start}{txt}{stop}".format(start=TEXT_CODES[attribute]['start'],
- txt=text,
- stop=TEXT_CODES[attribute]['end'])
+ match = start_end_newlines.match(text)
+ try:
+ startpad, msg, endpad = match.groups('')
+ except:
+ startpad = endpad = ''
+ msg = text
+ return "{startpad}{startattr}{txt}{endattr}{endpad}".format(
+ startpad = startpad,
+ startattr = TEXT_CODES[attribute]['start'],
+ txt = msg,
+ endattr = TEXT_CODES[attribute]['end'],
+ endpad = endpad)
FUNC_DICT = {'blue': blue,