Change-Id: I0e142c1c3bb48ddeb0bcd2bfa11c0323461c1368
Signed-off-by: Tibor Frank <tifrank@cisco.com>
from os.path import join
from shutil import rmtree
from copy import deepcopy
from os.path import join
from shutil import rmtree
from copy import deepcopy
from pal_utils import get_files
from pal_utils import get_files
u"msg": u"show_runtime",
u"data": list()
}
u"msg": u"show_runtime",
u"data": list()
}
- for item in val.get(u"runtime", list()):
+ runtime = loads(val.get(u"runtime", list()))
+ for item in runtime:
for metric, m_data in item.items():
if metric == u"name":
continue
for metric, m_data in item.items():
if metric == u"name":
continue
from datetime import datetime as dt
from datetime import timedelta
from copy import deepcopy
from datetime import datetime as dt
from datetime import timedelta
from copy import deepcopy
import plotly.graph_objects as go
import plotly.offline as ploff
import plotly.graph_objects as go
import plotly.offline as ploff
tcol.text = u"No Data"
continue
tcol.text = u"No Data"
continue
+ runtime = loads(dut_data[u"runtime"])
+
- threads_nr = len(dut_data[u"runtime"][0][u"clocks"])
+ threads_nr = len(runtime[0][u"clocks"])
except (IndexError, KeyError):
tcol.text = u"No Data"
continue
threads = OrderedDict({idx: list() for idx in range(threads_nr)})
except (IndexError, KeyError):
tcol.text = u"No Data"
continue
threads = OrderedDict({idx: list() for idx in range(threads_nr)})
- for item in dut_data[u"runtime"]:
for idx in range(threads_nr):
if item[u"vectors"][idx] > 0:
clocks = item[u"clocks"][idx] / item[u"vectors"][idx]
for idx in range(threads_nr):
if item[u"vectors"][idx] > 0:
clocks = item[u"clocks"][idx] / item[u"vectors"][idx]
REGEX_TC_PAPI_CLI = re.compile(r'.*\((\d+.\d+.\d+.\d+.) - (.*)\)')
REGEX_TC_PAPI_CLI = re.compile(r'.*\((\d+.\d+.\d+.\d+.) - (.*)\)')
- def __init__(self, metadata, mapping, ignore):
+ def __init__(self, metadata, mapping, ignore, for_output):
"""Initialisation.
:param metadata: Key-value pairs to be included in "metadata" part of
"""Initialisation.
:param metadata: Key-value pairs to be included in "metadata" part of
:param mapping: Mapping of the old names of test cases to the new
(actual) one.
:param ignore: List of TCs to be ignored.
:param mapping: Mapping of the old names of test cases to the new
(actual) one.
:param ignore: List of TCs to be ignored.
+ :param for_output: Output to be generated from downloaded data.
:type metadata: dict
:type mapping: dict
:type ignore: list
:type metadata: dict
:type mapping: dict
:type ignore: list
"""
# Type of message to parse out from the test messages
"""
# Type of message to parse out from the test messages
# Ignore list
self._ignore = ignore
# Ignore list
self._ignore = ignore
+ self._for_output = for_output
+
# Number of PAPI History messages found:
# 0 - no message
# 1 - PAPI History of DUT1
# Number of PAPI History messages found:
# 0 - no message
# 1 - PAPI History of DUT1
except (AttributeError, IndexError):
sock = u""
except (AttributeError, IndexError):
sock = u""
- runtime = loads(str(msg.message).replace(u' ', u'').replace(u'\n', u'').
- replace(u"'", u'"').replace(u'b"', u'"').
- replace(u'u"', u'"').split(u":", 1)[1])
-
dut = u"dut{nr}".format(
nr=len(self._data[u'tests'][self._test_id][u'show-run'].keys()) + 1)
dut = u"dut{nr}".format(
nr=len(self._data[u'tests'][self._test_id][u'show-run'].keys()) + 1)
{
u"host": host,
u"socket": sock,
{
u"host": host,
u"socket": sock,
+ u"runtime": str(msg.message).replace(u' ', u'').
+ replace(u'\n', u'').replace(u"'", u'"').
+ replace(u'b"', u'"').replace(u'u"', u'"').
+ split(u":", 1)[1]
:type test_kw: Keyword
:returns: Nothing.
"""
:type test_kw: Keyword
:returns: Nothing.
"""
- if test_kw.name.count(u"Show Runtime On All Duts") or \
- test_kw.name.count(u"Show Runtime Counters On All Duts") or \
- test_kw.name.count(u"Vpp Show Runtime On All Duts"):
+ if ((self._for_output != u"trending") and
+ (test_kw.name.count(u"Show Runtime On All Duts") or
+ test_kw.name.count(u"Show Runtime Counters On All Duts") or
+ test_kw.name.count(u"Vpp Show Runtime On All Duts"))):
self._msg_type = u"test-show-runtime"
self._sh_run_counter += 1
else:
self._msg_type = u"test-show-runtime"
self._sh_run_counter += 1
else:
(as described in ExecutionChecker documentation)
"""
(as described in ExecutionChecker documentation)
"""
- def __init__(self, spec):
+ def __init__(self, spec, for_output):
"""Initialization.
:param spec: Specification.
"""Initialization.
:param spec: Specification.
+ :param for_output: Output to be generated from downloaded data.
:type spec: Specification
:type spec: Specification
"""
# Specification:
self._cfg = spec
"""
# Specification:
self._cfg = spec
+ self._for_output = for_output
+
# Data store:
self._input_data = pd.Series()
# Data store:
self._input_data = pd.Series()
)
return None
checker = ExecutionChecker(
)
return None
checker = ExecutionChecker(
- metadata, self._cfg.mapping, self._cfg.ignore
+ metadata, self._cfg.mapping, self._cfg.ignore, self._for_output
for dut_name, data in test_data[u"show-run"].items():
if data.get(u"runtime", None) is None:
continue
for dut_name, data in test_data[u"show-run"].items():
if data.get(u"runtime", None) is None:
continue
+ runtime = loads(data[u"runtime"])
- threads_nr = len(data[u"runtime"][0][u"clocks"])
+ threads_nr = len(runtime[0][u"clocks"])
except (IndexError, KeyError):
continue
threads = OrderedDict(
{idx: list() for idx in range(threads_nr)})
except (IndexError, KeyError):
continue
threads = OrderedDict(
{idx: list() for idx in range(threads_nr)})
- for item in data[u"runtime"]:
for idx in range(threads_nr):
if item[u"vectors"][idx] > 0:
clocks = item[u"clocks"][idx] / \
for idx in range(threads_nr):
if item[u"vectors"][idx] > 0:
clocks = item[u"clocks"][idx] / \
prepare_static_content(spec)
prepare_static_content(spec)
+ data = InputData(spec, spec.output[u"output"])
if args.input_file:
data.process_local_file(args.input_file)
elif args.input_directory:
if args.input_file:
data.process_local_file(args.input_file)
elif args.input_directory: