Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions check50/renderer/_renderers.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@ def to_ansi(slug, results, version, _log=False):
for result in results:
if result["passed"]:
lines.append(termcolor.colored(f":) {result['description']}", "green"))

msg = f":) {result['description']}"

if result.get("data") and "performance50" in result["data"]:
perf = result["data"]["performance50"]
msg += f" ({perf['time_ms']}ms) ({perf['memory_kb']}KB)"

lines.append(termcolor.colored(msg, "green"))
elif result["passed"] is None:
lines.append(termcolor.colored(f":| {result['description']}", "yellow"))
lines.append(termcolor.colored(f" {result['cause'].get('rationale') or _('check skipped')}", "yellow"))
Expand Down
6 changes: 6 additions & 0 deletions check50/renderer/templates/results.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ <h3 style="color:red">:( {{ check.description }}</h3>
{% else %}
<h3 style="color:orange">:| {{ check.description }}</h3>
{% endif %}
{% if check.data and check.data.performance50 %}
<div style="margin-bottom: 10px; margin-left: 25px;">
<span class="label label-info">Time: {{ check.data.performance50.time_ms }} ms</span>
<span class="label label-default">Memory: {{ check.data.performance50.memory_kb }} KB</span>
</div>
{% endif %}

{% if check.cause or check.log %}
<div class="well well-sm">
Expand Down
11 changes: 10 additions & 1 deletion check50/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@
import sys
import tempfile
import traceback
import time
import resource

import attr
import lib50

from . import internal, _exceptions, __version__
from ._api import log, Failure, _copy, _log, _data
from ._api import log, Failure, _copy, _log, _data,data

_check_names = []

Expand Down Expand Up @@ -143,7 +145,14 @@ def wrapper(run_root_dir, dependency_state):
# Run registered functions before/after running check and set timeout
with internal.register, _timeout(seconds=timeout):
args = (dependency_state,) if inspect.getfullargspec(check).args else ()

# start the time counter for performance timing
start_time = time.perf_counter()
state = check(*args)
elapsed_ms -= (time.perf_counter() - start_time) * 1000
# total ram usage for this check
memory_usage = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
data(performance50={"time_ms": round(elapsed_ms, 2), "memory_kb": memory_usage})
except Failure as e:
result.passed = False
result.cause = e.payload
Expand Down