From cc4bd93b660505a7c9d8e370a1220377907fa6d2 Mon Sep 17 00:00:00 2001 From: Yaroslav Brustinov Date: Mon, 12 Dec 2016 17:38:43 +0200 Subject: 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 --- .../stl/trex_stl_lib/trex_stl_client.py | 7 +++--- .../stl/trex_stl_lib/trex_stl_types.py | 25 +++++++++++++++++----- .../stl/trex_stl_lib/utils/text_opts.py | 19 +++++++++++++--- 3 files changed, 39 insertions(+), 12 deletions(-) (limited to 'scripts/automation/trex_control_plane/stl/trex_stl_lib') 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, -- cgit