diff --git a/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java b/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java index 084def021c..db7bb48f75 100644 --- a/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java +++ b/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java @@ -19,6 +19,7 @@ import com.datastax.driver.core.utils.UUIDs; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.gson.JsonObject; import lombok.extern.slf4j.Slf4j; import org.junit.After; @@ -441,11 +442,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { Device device = edgeDevices.get(0); Assert.assertEquals("Edge Device 1", device.getName()); - String attributesData = "{\"scope\":\"SERVER_SCOPE\",\"kv\":{\"test\":\"test\"}}"; + String attributesData = "{\"scope\":\"SERVER_SCOPE\",\"kv\":{\"key\":\"value\"}}"; JsonNode attributesEntityData = mapper.readTree(attributesData); - EdgeEvent edgeEvent2 = constructEdgeEvent(tenantId, edge.getId(), ActionType.ATTRIBUTES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, attributesEntityData); + EdgeEvent edgeEvent1 = constructEdgeEvent(tenantId, edge.getId(), ActionType.ATTRIBUTES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, attributesEntityData); edgeImitator.getStorage().expectMessageAmount(1); - edgeEventService.saveAsync(edgeEvent2); + edgeEventService.saveAsync(edgeEvent1); edgeImitator.getStorage().waitForMessages(); EntityDataProto latestEntityDataMsg = edgeImitator.getStorage().getLatestEntityDataMsg(); @@ -454,14 +455,36 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { Assert.assertEquals(device.getId().getId(), uuid); Assert.assertEquals(device.getId().getEntityType().name(), latestEntityDataMsg.getEntityType()); Assert.assertEquals(attributesEntityData.get("scope").asText(), latestEntityDataMsg.getPostAttributeScope()); + Assert.assertTrue(latestEntityDataMsg.hasAttributesUpdatedMsg()); + + TransportProtos.PostAttributeMsg attributesUpdatedMsg = latestEntityDataMsg.getAttributesUpdatedMsg(); + Assert.assertEquals(1, attributesUpdatedMsg.getKvCount()); + TransportProtos.KeyValueProto keyValueProto = attributesUpdatedMsg.getKv(0); + Assert.assertEquals("key", keyValueProto.getKey()); + Assert.assertEquals("value", keyValueProto.getStringV()); + edgeImitator.getStorage().setLatestEntityDataMsg(null); + + ((ObjectNode) attributesEntityData).put("isPostAttributes", true); + EdgeEvent edgeEvent2 = constructEdgeEvent(tenantId, edge.getId(), ActionType.ATTRIBUTES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, attributesEntityData); + edgeImitator.getStorage().expectMessageAmount(1); + edgeEventService.saveAsync(edgeEvent2); + edgeImitator.getStorage().waitForMessages(); + + latestEntityDataMsg = edgeImitator.getStorage().getLatestEntityDataMsg(); + Assert.assertNotNull(latestEntityDataMsg); + uuid = new UUID(latestEntityDataMsg.getEntityIdMSB(), latestEntityDataMsg.getEntityIdLSB()); + Assert.assertEquals(device.getId().getId(), uuid); + Assert.assertEquals(device.getId().getEntityType().name(), latestEntityDataMsg.getEntityType()); + Assert.assertEquals(attributesEntityData.get("scope").asText(), latestEntityDataMsg.getPostAttributeScope()); Assert.assertTrue(latestEntityDataMsg.hasPostAttributesMsg()); TransportProtos.PostAttributeMsg postAttributeMsg = latestEntityDataMsg.getPostAttributesMsg(); Assert.assertEquals(1, postAttributeMsg.getKvCount()); - TransportProtos.KeyValueProto keyValueProto = postAttributeMsg.getKv(0); - Assert.assertEquals("test", keyValueProto.getKey()); - Assert.assertEquals("test", keyValueProto.getStringV()); + keyValueProto = postAttributeMsg.getKv(0); + Assert.assertEquals("key", keyValueProto.getKey()); + Assert.assertEquals("value", keyValueProto.getStringV()); edgeImitator.getStorage().setLatestEntityDataMsg(null); + log.info("Attributes tested successfully"); } @@ -600,7 +623,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { entityDataBuilder2.setEntityType(device.getId().getEntityType().name()); entityDataBuilder2.setEntityIdMSB(device.getId().getId().getMostSignificantBits()); entityDataBuilder2.setEntityIdLSB(device.getId().getId().getLeastSignificantBits()); - entityDataBuilder2.setPostAttributesMsg(JsonConverter.convertToAttributesProto(attributesData)); + entityDataBuilder2.setAttributesUpdatedMsg(JsonConverter.convertToAttributesProto(attributesData)); entityDataBuilder2.setPostAttributeScope(DataConstants.SERVER_SCOPE); builder2.addEntityData(entityDataBuilder2.build()); edgeImitator.sendUplinkMsg(builder2.build());