Unverified Commit 64edc9c5 authored by Jorge Esguerra's avatar Jorge Esguerra Committed by GitHub
Browse files

Analyzer - Enhance logging information for diagnosis rule op baseline errors. (#689)

Improves logging info for diagnosis rule op baseline errors. This allows
developers to easily detect errors in their rule files as well as
baseline files, improving end-user experience.
parent 71573f3c
......@@ -131,9 +131,12 @@ def variance(data_row, rule, summary_data_row, details, categories):
val = data_row[metric]
baseline = rule['metrics'][metric]
if baseline is None or baseline == 0:
logger.log_and_raise(
exception=ValueError, msg='invalid baseline 0 or baseline not found in variance rule'
)
error_msg = (
'For metric: {}, the baseline value {} is invalid for variance calculation. '
'The node measured value for this metric is: {:.4f}. '
'Review your baseline and rule files.'
).format(metric, baseline, val)
logger.log_and_raise(exception=ValueError, msg=error_msg)
var = (val - baseline) / baseline
summary_data_row[metric] = var
violate_metric = eval(rule['criteria'])(var)
......
......@@ -86,7 +86,14 @@ def test_rule_op(self):
]
for rule in false_rule_and_baselines:
self.assertRaises(ValueError, RuleOp.variance, data_row, rule, summary_data_row, details, categories)
with self.assertRaises(ValueError) as cm:
RuleOp.variance(data_row, rule, summary_data_row, details, categories)
error_msg = str(cm.exception)
self.assertIn('the baseline value', error_msg)
self.assertIn('is invalid', error_msg)
# Verify metric name appears in error
metric = next(iter(rule['metrics'].keys()))
self.assertIn(f'For metric: {metric}', error_msg)
# Positive case
true_baselines = [
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment