|
|
|
@ -29,6 +29,14 @@ import org.junit.Assert; |
|
|
|
import org.junit.Before; |
|
|
|
import org.junit.Test; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.http.ResponseEntity; |
|
|
|
import org.springframework.security.access.prepost.PreAuthorize; |
|
|
|
import org.springframework.web.bind.annotation.PathVariable; |
|
|
|
import org.springframework.web.bind.annotation.RequestBody; |
|
|
|
import org.springframework.web.bind.annotation.RequestMapping; |
|
|
|
import org.springframework.web.bind.annotation.RequestMethod; |
|
|
|
import org.springframework.web.bind.annotation.ResponseBody; |
|
|
|
import org.springframework.web.context.request.async.DeferredResult; |
|
|
|
import org.thingsboard.rule.engine.api.RuleEngineDeviceRpcRequest; |
|
|
|
import org.thingsboard.server.common.data.Customer; |
|
|
|
import org.thingsboard.server.common.data.Dashboard; |
|
|
|
@ -47,7 +55,10 @@ import org.thingsboard.server.common.data.edge.Edge; |
|
|
|
import org.thingsboard.server.common.data.edge.EdgeEvent; |
|
|
|
import org.thingsboard.server.common.data.edge.EdgeEventActionType; |
|
|
|
import org.thingsboard.server.common.data.edge.EdgeEventType; |
|
|
|
import org.thingsboard.server.common.data.exception.ThingsboardException; |
|
|
|
import org.thingsboard.server.common.data.id.EdgeId; |
|
|
|
import org.thingsboard.server.common.data.id.EntityId; |
|
|
|
import org.thingsboard.server.common.data.id.EntityIdFactory; |
|
|
|
import org.thingsboard.server.common.data.id.RuleChainId; |
|
|
|
import org.thingsboard.server.common.data.id.TenantId; |
|
|
|
import org.thingsboard.server.common.data.id.UserId; |
|
|
|
@ -71,6 +82,7 @@ import org.thingsboard.server.edge.imitator.EdgeImitator; |
|
|
|
import org.thingsboard.server.gen.edge.AlarmUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.edge.AssetUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.edge.AttributeDeleteMsg; |
|
|
|
import org.thingsboard.server.gen.edge.AttributesRequestMsg; |
|
|
|
import org.thingsboard.server.gen.edge.CustomerUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.edge.DashboardUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.edge.DeviceCredentialsRequestMsg; |
|
|
|
@ -943,9 +955,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
sendUserCredentialsRequest(); |
|
|
|
sendDeviceCredentialsRequest(); |
|
|
|
sendDeviceRpcResponse(); |
|
|
|
sendAttributesRequest(); |
|
|
|
log.info("Messages were sent successfully"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void sendDevice() throws Exception { |
|
|
|
UUID uuid = UUIDs.timeBased(); |
|
|
|
|
|
|
|
@ -1169,6 +1183,44 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
edgeImitator.waitForResponses(); |
|
|
|
} |
|
|
|
|
|
|
|
private void sendAttributesRequest() throws Exception { |
|
|
|
Device device = findDeviceByName("Edge Device 1"); |
|
|
|
|
|
|
|
String attributesDataStr = "{\"key1\":\"value1\"}"; |
|
|
|
JsonNode attributesData = mapper.readTree(attributesDataStr); |
|
|
|
|
|
|
|
doPost("/api/plugins/telemetry/DEVICE/" + device.getId().getId().toString() + "/attributes/" + DataConstants.SERVER_SCOPE, |
|
|
|
attributesData); |
|
|
|
|
|
|
|
UplinkMsg.Builder builder = UplinkMsg.newBuilder(); |
|
|
|
AttributesRequestMsg.Builder attributesRequestMsgBuilder = AttributesRequestMsg.newBuilder(); |
|
|
|
attributesRequestMsgBuilder.setEntityIdMSB(device.getUuidId().getMostSignificantBits()); |
|
|
|
attributesRequestMsgBuilder.setEntityIdLSB(device.getUuidId().getLeastSignificantBits()); |
|
|
|
attributesRequestMsgBuilder.setEntityType(EntityType.DEVICE.name()); |
|
|
|
builder.addAttributesRequestMsg(attributesRequestMsgBuilder.build()); |
|
|
|
|
|
|
|
edgeImitator.expectResponsesAmount(1); |
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
edgeImitator.sendUplinkMsg(builder.build()); |
|
|
|
edgeImitator.waitForResponses(); |
|
|
|
edgeImitator.waitForMessages(); |
|
|
|
|
|
|
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof EntityDataProto); |
|
|
|
EntityDataProto latestEntityDataMsg = (EntityDataProto) latestMessage; |
|
|
|
Assert.assertEquals(device.getUuidId().getMostSignificantBits(), latestEntityDataMsg.getEntityIdMSB()); |
|
|
|
Assert.assertEquals(device.getUuidId().getLeastSignificantBits(), latestEntityDataMsg.getEntityIdLSB()); |
|
|
|
Assert.assertEquals(device.getId().getEntityType().name(), latestEntityDataMsg.getEntityType()); |
|
|
|
Assert.assertEquals("SERVER_SCOPE", latestEntityDataMsg.getPostAttributeScope()); |
|
|
|
Assert.assertTrue(latestEntityDataMsg.hasAttributesUpdatedMsg()); |
|
|
|
|
|
|
|
TransportProtos.PostAttributeMsg attributesUpdatedMsg = latestEntityDataMsg.getAttributesUpdatedMsg(); |
|
|
|
Assert.assertEquals(1, attributesUpdatedMsg.getKvCount()); |
|
|
|
TransportProtos.KeyValueProto keyValueProto = attributesUpdatedMsg.getKv(0); |
|
|
|
Assert.assertEquals("key1", keyValueProto.getKey()); |
|
|
|
Assert.assertEquals("value1", keyValueProto.getStringV()); |
|
|
|
} |
|
|
|
|
|
|
|
private void sendDeleteDeviceOnEdge() throws Exception { |
|
|
|
List<Device> edgeDevices = doGetTypedWithPageLink("/api/edge/" + edge.getId().getId().toString() + "/devices?", |
|
|
|
new TypeReference<TimePageData<Device>>() {}, new TextPageLink(100)).getData(); |
|
|
|
|