process replay: handle inf and nan in absolute tolerance

old-commit-hash: 9941c99f7c
commatwo_master
Adeeb Shihadeh 3 years ago
parent 03657ceabf
commit 14dbd6b1f5
  1. 5
      selfdrive/test/process_replay/compare_logs.py

@ -2,6 +2,7 @@
import bz2 import bz2
import os import os
import sys import sys
import math
import numbers import numbers
import dictdiffer import dictdiffer
from collections import Counter from collections import Counter
@ -82,10 +83,12 @@ def compare_logs(log1, log2, ignore_fields=None, ignore_msgs=None, tolerance=Non
dd = dictdiffer.diff(msg1_dict, msg2_dict, ignore=ignore_fields) dd = dictdiffer.diff(msg1_dict, msg2_dict, ignore=ignore_fields)
# Dictdiffer only supports relative tolerance, we also want to check for absolute # Dictdiffer only supports relative tolerance, we also want to check for absolute
# TODO: add this to dictdiffer
def outside_tolerance(diff): def outside_tolerance(diff):
if diff[0] == "change": if diff[0] == "change":
a, b = diff[2] a, b = diff[2]
if isinstance(a, numbers.Number) and isinstance(b, numbers.Number): finite = math.isfinite(a) and math.isfinite(b)
if finite and isinstance(a, numbers.Number) and isinstance(b, numbers.Number):
return abs(a - b) > max(tolerance, tolerance * max(abs(a), abs(b))) return abs(a - b) > max(tolerance, tolerance * max(abs(a), abs(b)))
return True return True

Loading…
Cancel
Save