Add support for decimal threshold values in alarm expressions

Change-Id: I5782a8712ee2da421d358fadc1a25d5b15f4aeab
This commit is contained in:
Jonathan Halterman 2014-10-09 15:46:23 -07:00
parent 88f505e84b
commit d832aeed98
3 changed files with 12 additions and 3 deletions

View File

@ -143,7 +143,7 @@ class AlarmSubExpressionListener extends AlarmExpressionBaseListener {
@Override
public void exitLiteral(AlarmExpressionParser.LiteralContext ctx) {
threshold = Long.valueOf(ctx.getChild(0).getText());
threshold = Double.valueOf(ctx.getChild(0).getText());
}
@Override

View File

@ -121,7 +121,8 @@ period
;
literal
: INTEGER
: DECIMAL
| INTEGER
;
repeat
@ -205,6 +206,10 @@ AVG
INTEGER
: DIGIT+
;
DECIMAL
: '-'?[0-9]+('.'[0-9]+)?
;
TXT
: [//a-zA-Z_$/\\0-9]~('\''|';' | '}' | '{' | '=' | ','| '&' | ')' | '(' |' '| '"' )+

View File

@ -125,7 +125,7 @@ public class AlarmSubExpressionTest {
public void shouldDefaultPeriodAndPeriods() {
AlarmExpression expr = new AlarmExpression(
"avg(hpcs.compute{metric_name=cpu, device=1, instance_id=5}) > 5");
"avg(hpcs.compute{metric_name=cpu, device=1, instance_id=2}) > 5");
AlarmSubExpression alarm = expr.getSubExpressions().get(0);
assertEquals(alarm.getPeriod(), 60);
assertEquals(alarm.getPeriods(), 1);
@ -148,4 +148,8 @@ public class AlarmSubExpressionTest {
AlarmSubExpression.of("avg(hpcs.compute{metric_name=cpu, device=1}, 45) > 5 times 4")
.getExpression(), "avg(hpcs.compute{device=1, metric_name=cpu}, 45) > 5.0 times 4");
}
public void shouldAllowDecimalThresholds() {
assertEquals(AlarmSubExpression.of("avg(hpcs.compute) > 2.375").getThreshold(), 2.375);
}
}