|
|
@ -178,7 +178,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
Asset asset2 = createAsset("Asset 2", assetProfile.getId()); |
|
|
Asset asset2 = createAsset("Asset 2", assetProfile.getId()); |
|
|
|
|
|
|
|
|
await().alias("add entity to profile with no related entities and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("add entity to profile with no related entities and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
ObjectNode occupancy = getLatestTelemetry(asset2.getId(), "freeSpaces", "occupiedSpaces", "totalSpaces"); |
|
|
ObjectNode occupancy = getLatestTelemetry(asset2.getId(), "freeSpaces", "occupiedSpaces", "totalSpaces"); |
|
|
@ -191,7 +191,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
createEntityRelation(asset2.getId(), device3.getId(), "Contains"); |
|
|
createEntityRelation(asset2.getId(), device3.getId(), "Contains"); |
|
|
createEntityRelation(asset2.getId(), device4.getId(), "Contains"); |
|
|
createEntityRelation(asset2.getId(), device4.getId(), "Contains"); |
|
|
|
|
|
|
|
|
await().alias("create relations and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create relations and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
@ -203,7 +203,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
postTelemetry(device3.getId(), "{\"occupied\":false}"); |
|
|
postTelemetry(device3.getId(), "{\"occupied\":false}"); |
|
|
|
|
|
|
|
|
await().alias("update telemetry and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("update telemetry and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
@ -225,7 +225,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
createOccupancyCF(assetProfile.getId()); |
|
|
createOccupancyCF(assetProfile.getId()); |
|
|
|
|
|
|
|
|
await().alias("create CF and perform initial aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create CF and perform initial aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
@ -247,7 +247,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
postTelemetry(device3.getId(), "{\"occupied\":true}"); |
|
|
postTelemetry(device3.getId(), "{\"occupied\":true}"); |
|
|
|
|
|
|
|
|
await().alias("change profile and no aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("change profile and no aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
@ -269,7 +269,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
createOccupancyCF(asset2.getId()); |
|
|
createOccupancyCF(asset2.getId()); |
|
|
|
|
|
|
|
|
await().alias("create CF and perform aggregation with default values").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create CF and perform aggregation with default values").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
@ -316,7 +316,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
createOccupancyCF(asset2.getId()); |
|
|
createOccupancyCF(asset2.getId()); |
|
|
|
|
|
|
|
|
await().alias("create CF and perform initial aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create CF and perform initial aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
@ -328,7 +328,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
postTelemetry(ruleChain.getId(), "{\"occupied\":true}"); |
|
|
postTelemetry(ruleChain.getId(), "{\"occupied\":true}"); |
|
|
|
|
|
|
|
|
await().alias("update telemetry on rule chain and no aggregation performed").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("update telemetry on rule chain and no aggregation performed").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
@ -349,7 +349,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
postTelemetry(device1.getId(), "{\"occupied\":false}"); |
|
|
postTelemetry(device1.getId(), "{\"occupied\":false}"); |
|
|
|
|
|
|
|
|
await().alias("delete cf and update telemetry and no aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("delete cf and update telemetry and no aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
@ -404,7 +404,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
createOccupancyCF(asset2.getId()); |
|
|
createOccupancyCF(asset2.getId()); |
|
|
|
|
|
|
|
|
await().alias("create CF and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create CF and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
@ -442,7 +442,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
createOccupancyCFWithAttr(asset2.getId()); |
|
|
createOccupancyCFWithAttr(asset2.getId()); |
|
|
|
|
|
|
|
|
await().alias("create CF and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create CF and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
verifyTelemetry(asset2.getId(), Map.of( |
|
|
@ -477,7 +477,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
createEntityRelation(asset.getId(), device3.getId(), "Contains"); |
|
|
createEntityRelation(asset.getId(), device3.getId(), "Contains"); |
|
|
|
|
|
|
|
|
await().alias("create relation and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create relation and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
@ -495,7 +495,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
deleteEntityRelation(new EntityRelation(asset.getId(), device1.getId(), "Contains", RelationTypeGroup.COMMON)); |
|
|
deleteEntityRelation(new EntityRelation(asset.getId(), device1.getId(), "Contains", RelationTypeGroup.COMMON)); |
|
|
|
|
|
|
|
|
await().alias("create relation and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create relation and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
@ -513,7 +513,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
doDelete("/api/device/" + device1.getId()).andExpect(status().isOk()); |
|
|
doDelete("/api/device/" + device1.getId()).andExpect(status().isOk()); |
|
|
|
|
|
|
|
|
await().alias("create relation and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create relation and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
@ -537,7 +537,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
configuration.setRelation(new RelationPathLevel(EntitySearchDirection.FROM, "Has")); |
|
|
configuration.setRelation(new RelationPathLevel(EntitySearchDirection.FROM, "Has")); |
|
|
saveCalculatedField(cf); |
|
|
saveCalculatedField(cf); |
|
|
|
|
|
|
|
|
await().alias("update relation path and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("update relation path and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
@ -563,7 +563,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
configuration.setArguments(Map.of("oc", argument)); |
|
|
configuration.setArguments(Map.of("oc", argument)); |
|
|
saveCalculatedField(cf); |
|
|
saveCalculatedField(cf); |
|
|
|
|
|
|
|
|
await().alias("update arguments and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("update arguments and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
verifyTelemetry(asset.getId(), Map.of( |
|
|
@ -618,7 +618,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
postTelemetry(device2.getId(), "{\"temperature\":19.6}"); |
|
|
postTelemetry(device2.getId(), "{\"temperature\":19.6}"); |
|
|
CalculatedField cf = createAvgTemperatureCF(asset.getId()); |
|
|
CalculatedField cf = createAvgTemperatureCF(asset.getId()); |
|
|
|
|
|
|
|
|
await().alias("create avg temp cf and perform initial aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create avg temp cf and perform initial aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset.getId(), Map.of("avgTemperature", "24")); |
|
|
verifyTelemetry(asset.getId(), Map.of("avgTemperature", "24")); |
|
|
@ -631,7 +631,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
configuration.setOutput(output); |
|
|
configuration.setOutput(output); |
|
|
saveCalculatedField(cf); |
|
|
saveCalculatedField(cf); |
|
|
|
|
|
|
|
|
await().alias("update output and perform aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("update output and perform aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
ArrayNode avgTemperature = getServerAttributes(asset.getId(), "avgTemperature"); |
|
|
ArrayNode avgTemperature = getServerAttributes(asset.getId(), "avgTemperature"); |
|
|
@ -647,7 +647,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
postTelemetry(device2.getId(), "{\"temperature\":19.6}"); |
|
|
postTelemetry(device2.getId(), "{\"temperature\":19.6}"); |
|
|
CalculatedField cf = createAvgTemperatureCF(asset.getId()); |
|
|
CalculatedField cf = createAvgTemperatureCF(asset.getId()); |
|
|
|
|
|
|
|
|
await().alias("create avg temp cf and perform initial aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create avg temp cf and perform initial aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset.getId(), Map.of("avgTemperature", "24")); |
|
|
verifyTelemetry(asset.getId(), Map.of("avgTemperature", "24")); |
|
|
@ -665,7 +665,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
|
|
|
|
|
|
postTelemetry(device2.getId(), "{\"temperature\":32.1}"); |
|
|
postTelemetry(device2.getId(), "{\"temperature\":32.1}"); |
|
|
|
|
|
|
|
|
await().alias("update telemetry and perform aggregation").atMost(2 * deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("update telemetry and perform aggregation").atMost(2 * deduplicationInterval + 10, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(() -> { |
|
|
.untilAsserted(() -> { |
|
|
verifyTelemetry(asset.getId(), Map.of("avgTemperature", "28")); |
|
|
verifyTelemetry(asset.getId(), Map.of("avgTemperature", "28")); |
|
|
@ -673,7 +673,7 @@ public class RelatedEntitiesAggregationCalculatedFieldTest extends AbstractContr |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void checkInitialCalculation() { |
|
|
private void checkInitialCalculation() { |
|
|
await().alias("create CF and perform initial aggregation").atMost(deduplicationInterval, TimeUnit.SECONDS) |
|
|
await().alias("create CF and perform initial aggregation").atMost(deduplicationInterval * 2, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.pollInterval(POLL_INTERVAL, TimeUnit.SECONDS) |
|
|
.untilAsserted(this::checkInitialCalculationValues); |
|
|
.untilAsserted(this::checkInitialCalculationValues); |
|
|
} |
|
|
} |
|
|
|