An unmeasurable backup must not hide a working one
This commit is contained in:
@@ -155,9 +155,20 @@ def test_hosts_below_libversion_reports_the_floor(db):
|
||||
|
||||
# -- backup state on the reports table ---------------------------------------
|
||||
|
||||
def test_backup_state_prefers_the_newest_confirmed_revision(db):
|
||||
"""A host with several revisions shows the most recently CONFIRMED one, and
|
||||
a revision that has never been confirmed (lastseenat NULL) never wins.
|
||||
def test_backup_state_reports_the_stalest_measurable_kind(db):
|
||||
"""A host is judged by the WORST backup it has, not the best.
|
||||
|
||||
This used to prefer the most recently confirmed revision. That was right
|
||||
while a PC reported one kind, and became wrong when part markers arrived: a
|
||||
marker bay reports ntlars AND partmarker, so a daily ntlars post kept the
|
||||
badge green while the marker backup had been failing for a month. A host is
|
||||
healthy only when everything it backs up is current, and the badge names the
|
||||
kind that is not.
|
||||
|
||||
A revision that has never been confirmed (lastseenat NULL) still never wins.
|
||||
It is not stale, it is unmeasurable - and letting it win hid a working
|
||||
backup entirely, because the verdict for a NULL confirmation is tri-state
|
||||
None, which renders as no badge at all.
|
||||
|
||||
Ordering happens in Python on purpose. Doing it in SQL needs
|
||||
ORDER BY ... NULLS LAST, which SQLite accepts and MySQL rejects outright -
|
||||
@@ -191,7 +202,10 @@ def test_backup_state_prefers_the_newest_confirmed_revision(db):
|
||||
facts = {'wjpc01': {'backupkind': None, 'backuplastseen': None}}
|
||||
_attach_backup_state(facts, {'WJPC01'})
|
||||
|
||||
assert facts['wjpc01']['backupkind'] == 'udc'
|
||||
# ntlars is 9 days old, udc was confirmed just now: the host is judged by
|
||||
# ntlars, and the badge names it so somebody knows WHICH backup stopped.
|
||||
assert facts['wjpc01']['backupkind'] == 'ntlars'
|
||||
# 'files' has never been confirmed, so it neither wins nor blanks the badge.
|
||||
assert facts['wjpc01']['backuplastseen'] is not None
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user