From d832aeed98ccae4a192c61d24513b358f7837f69 Mon Sep 17 00:00:00 2001 From: Jonathan Halterman Date: Thu, 9 Oct 2014 15:46:23 -0700 Subject: [PATCH] Add support for decimal threshold values in alarm expressions Change-Id: I5782a8712ee2da421d358fadc1a25d5b15f4aeab --- .../mon/common/model/alarm/AlarmSubExpressionListener.java | 2 +- .../com/hpcloud/mon/common/model/alarm/AlarmExpression.g4 | 7 ++++++- .../mon/common/model/alarm/AlarmSubExpressionTest.java | 6 +++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/java/monasca-common-model/src/main/java/com/hpcloud/mon/common/model/alarm/AlarmSubExpressionListener.java b/java/monasca-common-model/src/main/java/com/hpcloud/mon/common/model/alarm/AlarmSubExpressionListener.java index a6b49013..68c31707 100644 --- a/java/monasca-common-model/src/main/java/com/hpcloud/mon/common/model/alarm/AlarmSubExpressionListener.java +++ b/java/monasca-common-model/src/main/java/com/hpcloud/mon/common/model/alarm/AlarmSubExpressionListener.java @@ -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 diff --git a/java/monasca-common-model/src/main/resources/com/hpcloud/mon/common/model/alarm/AlarmExpression.g4 b/java/monasca-common-model/src/main/resources/com/hpcloud/mon/common/model/alarm/AlarmExpression.g4 index c1b0a092..e0b58413 100644 --- a/java/monasca-common-model/src/main/resources/com/hpcloud/mon/common/model/alarm/AlarmExpression.g4 +++ b/java/monasca-common-model/src/main/resources/com/hpcloud/mon/common/model/alarm/AlarmExpression.g4 @@ -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]~('\''|';' | '}' | '{' | '=' | ','| '&' | ')' | '(' |' '| '"' )+ diff --git a/java/monasca-common-model/src/test/java/com/hpcloud/mon/common/model/alarm/AlarmSubExpressionTest.java b/java/monasca-common-model/src/test/java/com/hpcloud/mon/common/model/alarm/AlarmSubExpressionTest.java index fb292324..aa897ce0 100644 --- a/java/monasca-common-model/src/test/java/com/hpcloud/mon/common/model/alarm/AlarmSubExpressionTest.java +++ b/java/monasca-common-model/src/test/java/com/hpcloud/mon/common/model/alarm/AlarmSubExpressionTest.java @@ -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); + } }