forked from GithubBackups/healthchecks
Improved logic for displaying job execution times in log. Fixes #219
This commit is contained in:
parent
468321fcd7
commit
954ca4576b
@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file.
|
||||
### Improvements
|
||||
- Add the "desc" field (check's description) to API responses
|
||||
- Add maxlength attribute to HTML input=text elements
|
||||
- Improved logic for displaying job execution times in log (#219)
|
||||
|
||||
### Bug Fixes
|
||||
- Fix refreshing of the checks page filtered by tags (#221)
|
||||
|
@ -5,7 +5,7 @@ from django.conf import settings
|
||||
from django.utils.html import escape
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
from hc.lib.date import format_duration, format_mins_secs
|
||||
from hc.lib.date import format_duration, format_hms
|
||||
|
||||
register = template.Library()
|
||||
|
||||
@ -16,8 +16,8 @@ def hc_duration(td):
|
||||
|
||||
|
||||
@register.filter
|
||||
def mins_secs(td):
|
||||
return format_mins_secs(td)
|
||||
def hms(td):
|
||||
return format_hms(td)
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
|
@ -39,6 +39,7 @@ STATUS_TEXT_TMPL = get_template("front/log_status_text.html")
|
||||
LAST_PING_TMPL = get_template("front/last_ping_cell.html")
|
||||
EVENTS_TMPL = get_template("front/details_events.html")
|
||||
ONE_HOUR = td(hours=1)
|
||||
TWELVE_HOURS = td(hours=12)
|
||||
|
||||
|
||||
def _tags_statuses(checks):
|
||||
@ -405,6 +406,10 @@ def remove_check(request, code):
|
||||
|
||||
|
||||
def _get_events(check, limit):
|
||||
# max time between start and ping where we will consider
|
||||
# the both events related.
|
||||
max_delta = min(ONE_HOUR + check.grace, TWELVE_HOURS)
|
||||
|
||||
pings = Ping.objects.filter(owner=check).order_by("-id")[:limit]
|
||||
pings = list(pings)
|
||||
|
||||
@ -412,7 +417,7 @@ def _get_events(check, limit):
|
||||
for ping in pings:
|
||||
if ping.kind == "start" and prev and prev.kind != "start":
|
||||
delta = prev.created - ping.created
|
||||
if delta < ONE_HOUR:
|
||||
if delta < max_delta:
|
||||
setattr(prev, "delta", delta)
|
||||
|
||||
prev = ping
|
||||
|
@ -29,12 +29,17 @@ def format_duration(td):
|
||||
return " ".join(result)
|
||||
|
||||
|
||||
def format_mins_secs(td):
|
||||
def format_hms(td):
|
||||
total_seconds = int(td.total_seconds())
|
||||
result = []
|
||||
|
||||
mins, secs = divmod(total_seconds, 60)
|
||||
if mins:
|
||||
h, mins = divmod(mins, 60)
|
||||
|
||||
if h:
|
||||
result.append("%d h" % h)
|
||||
|
||||
if h or mins:
|
||||
result.append("%d min" % mins)
|
||||
|
||||
result.append("%s sec" % secs)
|
||||
|
@ -1,20 +1,27 @@
|
||||
from datetime import timedelta as td
|
||||
from django.test import TestCase
|
||||
|
||||
from hc.lib.date import format_mins_secs
|
||||
from hc.lib.date import format_hms
|
||||
|
||||
|
||||
class DateFormattingTestCase(TestCase):
|
||||
|
||||
def test_mins_secs_work(self):
|
||||
s = format_mins_secs(td(seconds=0))
|
||||
s = format_hms(td(seconds=0))
|
||||
self.assertEqual(s, "0 sec")
|
||||
|
||||
s = format_mins_secs(td(seconds=1))
|
||||
s = format_hms(td(seconds=1))
|
||||
self.assertEqual(s, "1 sec")
|
||||
|
||||
s = format_mins_secs(td(seconds=61))
|
||||
s = format_hms(td(seconds=61))
|
||||
self.assertEqual(s, "1 min 1 sec")
|
||||
|
||||
s = format_mins_secs(td(seconds=62))
|
||||
s = format_hms(td(seconds=62))
|
||||
self.assertEqual(s, "1 min 2 sec")
|
||||
|
||||
def test_hours_work(self):
|
||||
s = format_hms(td(seconds=62 + 60 * 60))
|
||||
self.assertEqual(s, "1 h 1 min 2 sec")
|
||||
|
||||
s = format_hms(td(seconds=60 * 60))
|
||||
self.assertEqual(s, "1 h 0 min 0 sec")
|
||||
|
@ -24,7 +24,7 @@
|
||||
{% if event.delta %}
|
||||
<div class="delta">
|
||||
<span class="icon-timer"></span>
|
||||
{{ event.delta|mins_secs }}
|
||||
{{ event.delta|hms }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
@ -58,7 +58,7 @@
|
||||
{% if event.delta %}
|
||||
<div class="delta">
|
||||
<span class="icon-timer"></span>
|
||||
{{ event.delta|mins_secs }}
|
||||
{{ event.delta|hms }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user