Browse Source

Alarm rules CF: add test for alarm details

pull/14193/head
VIacheslavKlimov 1 year ago
parent
commit
728d1f78b0
  1. 36
      application/src/test/java/org/thingsboard/server/cf/AlarmRulesTest.java

36
application/src/test/java/org/thingsboard/server/cf/AlarmRulesTest.java

@ -604,7 +604,41 @@ public class AlarmRulesTest extends AbstractControllerTest {
});
}
// todo: test alarm details
@Test
public void testAlarmDetails() throws Exception {
Argument temperatureArgument = new Argument();
temperatureArgument.setRefEntityKey(new ReferencedEntityKey("temperature", ArgumentType.TS_LATEST, null));
temperatureArgument.setDefaultValue("0");
Argument humidityArgument = new Argument();
humidityArgument.setRefEntityKey(new ReferencedEntityKey("humidity", ArgumentType.ATTRIBUTE, AttributeScope.SERVER_SCOPE));
humidityArgument.setDefaultValue("0");
Map<String, Argument> arguments = Map.of(
"temperature", temperatureArgument,
"humidity", humidityArgument
);
Map<AlarmSeverity, Condition> createRules = Map.of(
AlarmSeverity.CRITICAL, new Condition("return temperature >= 50 && humidity >= 50;", null, null)
);
CalculatedField calculatedField = createAlarmCf(deviceId, "High Temperature and Humidity Alarm",
arguments, createRules, null);
AlarmCalculatedFieldConfiguration configuration = (AlarmCalculatedFieldConfiguration) calculatedField.getConfiguration();
configuration.getCreateRules().get(AlarmSeverity.CRITICAL).setAlarmDetails("""
temperature is ${temperature}, humidity is ${humidity}""");
calculatedField = saveCalculatedField(calculatedField);
postTelemetry(deviceId, "{\"temperature\":50}");
postAttributes(deviceId, AttributeScope.SERVER_SCOPE, "{\"humidity\":50}");
checkAlarmResult(calculatedField, alarmResult -> {
assertThat(alarmResult.isCreated()).isTrue();
assertThat(alarmResult.getAlarm().getSeverity()).isEqualTo(AlarmSeverity.CRITICAL);
assertThat(alarmResult.getAlarm().getDetails().get("data").asText())
.isEqualTo("temperature is 50, humidity is 50");
});
}
// TODO: MSA tests
private void checkAlarmResult(CalculatedField calculatedField, Consumer<TbAlarmResult> assertion) {
TbAlarmResult alarmResult = await().atMost(TIMEOUT, TimeUnit.SECONDS)

Loading…
Cancel
Save