|
|
|
@ -194,6 +194,30 @@ public class AlarmRulesTest extends AbstractControllerTest { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testCreateAlarm_eventBeforeDefaultTs() throws Exception { |
|
|
|
Argument temperatureArgument = new Argument(); |
|
|
|
temperatureArgument.setRefEntityKey(new ReferencedEntityKey("temperature", ArgumentType.TS_LATEST, null)); |
|
|
|
temperatureArgument.setDefaultValue("0"); |
|
|
|
Map<String, Argument> arguments = Map.of( |
|
|
|
"temperature", temperatureArgument |
|
|
|
); |
|
|
|
|
|
|
|
Map<AlarmSeverity, Condition> createRules = Map.of( |
|
|
|
AlarmSeverity.CRITICAL, new Condition("return temperature >= 50;", null, null) |
|
|
|
); |
|
|
|
|
|
|
|
CalculatedField calculatedField = createAlarmCf(deviceId, "High Temperature Alarm", |
|
|
|
arguments, createRules, null); |
|
|
|
|
|
|
|
postTelemetry(deviceId, "{\"values\": {\"temperature\": 50}, \"ts\": " + (System.currentTimeMillis() - TimeUnit.DAYS.toMillis(30) + "}")); |
|
|
|
checkAlarmResult(calculatedField, alarmResult -> { |
|
|
|
assertThat(alarmResult.isCreated()).isTrue(); |
|
|
|
assertThat(alarmResult.getAlarm().getSeverity()).isEqualTo(AlarmSeverity.CRITICAL); |
|
|
|
assertThat(alarmResult.getAlarm().getStatus()).isEqualTo(AlarmStatus.ACTIVE_UNACK); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testCreateAlarm_repeatingCondition() throws Exception { |
|
|
|
Argument temperatureArgument = new Argument(); |
|
|
|
@ -350,6 +374,32 @@ public class AlarmRulesTest extends AbstractControllerTest { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testCreateAlarm_durationCondition_defaultValue() { |
|
|
|
Argument powerConsumptionArgument = new Argument(); |
|
|
|
powerConsumptionArgument.setRefEntityKey(new ReferencedEntityKey("powerConsumption", ArgumentType.TS_LATEST, null)); |
|
|
|
powerConsumptionArgument.setDefaultValue("3500"); |
|
|
|
Map<String, Argument> arguments = Map.of( |
|
|
|
"powerConsumption", powerConsumptionArgument |
|
|
|
); |
|
|
|
|
|
|
|
long createDurationMs = 2000L; |
|
|
|
Map<AlarmSeverity, Condition> createRules = Map.of( |
|
|
|
AlarmSeverity.CRITICAL, new Condition("return powerConsumption >= 3000;", null, null, |
|
|
|
new AlarmConditionValue<Long>(2000L, null), null) |
|
|
|
); |
|
|
|
|
|
|
|
CalculatedField calculatedField = createAlarmCf(deviceId, "High power consumption during 2 seconds", |
|
|
|
arguments, createRules, null); |
|
|
|
|
|
|
|
checkAlarmResult(calculatedField, alarmResult -> { |
|
|
|
assertThat(alarmResult.isCreated()).isTrue(); |
|
|
|
assertThat(alarmResult.getAlarm().getSeverity()).isEqualTo(AlarmSeverity.CRITICAL); |
|
|
|
assertThat(alarmResult.getAlarm().getStatus()).isEqualTo(AlarmStatus.ACTIVE_UNACK); |
|
|
|
assertThat(alarmResult.getConditionDuration()).isBetween(createDurationMs, createDurationMs + 2000); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testCreateAlarm_currentOwnerArgument() throws Exception { |
|
|
|
Argument temperatureArgument = new Argument(); |
|
|
|
|