from LogAnalyzer import Test,TestResult import math class TestNaN(Test): '''test for NaNs present in log''' def __init__(self): Test.__init__(self) self.name = "NaNs" def run(self, logdata, verbose): self.result = TestResult() self.result.status = TestResult.StatusType.GOOD def FAIL(): self.result.status = TestResult.StatusType.FAIL nans_ok = { "CTUN": [ "DSAlt", "TAlt" ], "POS": [ "RelOriginAlt"], } for channel in logdata.channels.keys(): for field in logdata.channels[channel].keys(): if channel in nans_ok and field in nans_ok[channel]: continue try: for tupe in logdata.channels[channel][field].listData: (ts, val) = tupe if isinstance(val, float) and math.isnan(val): FAIL() self.result.statusMessage += "Found NaN in %s.%s\n" % (channel, field,) raise ValueError() except ValueError as e: continue