Skip to content
Snippets Groups Projects
Commit 456b470c authored by Michael Eischer's avatar Michael Eischer
Browse files

Add parser for server channel logs

parent d5328f7f
No related branches found
No related tags found
No related merge requests found
......@@ -40,6 +40,7 @@ from transformer.server import ServerLogFilter
# find . -type d -depth 1 -print0 | \
# xargs -0 -L1 -P8 -I {} \
# bash -c 'cd {} && echo {} && ../../heterogeneous-smr/scripts/parse-results.py'
from transformer.server_channel import ServerChannelLogFilter
AUTO_RANGE_SLACK_AT_END = 5
......@@ -70,6 +71,7 @@ def setup_transformers(path: str) -> Iterable[Transformer]:
LatencyLogFilter(),
ResourceLogFilter(),
ServerLogFilter(),
ServerChannelLogFilter(),
PrintWarningsFilter(),
# FIXME Add transformer to check for required logs
# OutputJSONTransformer(path),
......@@ -208,7 +210,7 @@ def auto_range(logs: List[LogData]) -> Tuple[float, float, float]:
end = -base
for log in logs:
if log.logtype != "client":
if not is_auto_range_log(log):
continue
for entry in log.entries():
......
from common.log import LogData
from .base import Filter
class ServerChannelLogFilter(Filter):
def can_handle(self, log: LogData) -> bool:
return log.logtype == "server" and "channel-micro" in log.scenario \
and log.logid in ("server-4", "server-5", "server-6")
def filter(self, log: LogData, start_time: float, end_time: float) -> LogData:
out = log.derive()
first = None
last = None
for entry in log.entries():
if "warning" in entry:
line = entry["warning"]
if "CMIC-DST:" in line:
p = line.split(" ")
messages = int(p[-1])
entry = out.add_data(entry["timestamp"], messages=messages)
if first is None and entry["timestamp"] >= start_time:
first = entry
if entry["timestamp"] < end_time:
last = entry
out.add_entry(entry)
message_delta = 0
time_delta = 0.
throughput = 0.
if last is not None and first is not None and last["timestamp"] - first["timestamp"] > 10:
time_delta = last["timestamp"] - first["timestamp"]
message_delta = last["messages"] - first["messages"]
throughput = message_delta / time_delta
out.add_data((start_time + end_time) / 2, message_delta=message_delta, time_delta=time_delta,
throughput=throughput)
return out
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment