|
|
|
@ -100,6 +100,7 @@ import org.thingsboard.server.gen.edge.DeviceUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.edge.EdgeConfiguration; |
|
|
|
import org.thingsboard.server.gen.edge.EntityDataProto; |
|
|
|
import org.thingsboard.server.gen.edge.EntityViewUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.edge.EntityViewsRequestMsg; |
|
|
|
import org.thingsboard.server.gen.edge.RelationRequestMsg; |
|
|
|
import org.thingsboard.server.gen.edge.RelationUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.edge.RpcResponseMsg; |
|
|
|
@ -110,6 +111,7 @@ import org.thingsboard.server.gen.edge.UpdateMsgType; |
|
|
|
import org.thingsboard.server.gen.edge.UplinkMsg; |
|
|
|
import org.thingsboard.server.gen.edge.UserCredentialsRequestMsg; |
|
|
|
import org.thingsboard.server.gen.edge.UserCredentialsUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.edge.UserUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.edge.WidgetTypeUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.edge.WidgetsBundleUpdateMsg; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos; |
|
|
|
@ -172,7 +174,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
edgeImitator = new EdgeImitator("localhost", 7070, edge.getRoutingKey(), edge.getSecret()); |
|
|
|
// TODO: voba - should be less, but events from SyncEdgeService stack with events from controller. will be fixed in next releases
|
|
|
|
// so ideally sync process should check current edge queue and add only missing entities to the edge queue
|
|
|
|
edgeImitator.expectMessageAmount(10); |
|
|
|
edgeImitator.expectMessageAmount(9); |
|
|
|
edgeImitator.connect(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -219,11 +221,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size()); |
|
|
|
|
|
|
|
testEntityView(); |
|
|
|
expectedDownlinkSize = expectedDownlinkSize + 2; |
|
|
|
expectedDownlinkSize = expectedDownlinkSize + 3; |
|
|
|
Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size()); |
|
|
|
|
|
|
|
testCustomer(); |
|
|
|
expectedDownlinkSize = expectedDownlinkSize + 2; |
|
|
|
testCustomerAndNewUser(); |
|
|
|
expectedDownlinkSize = expectedDownlinkSize + 3; |
|
|
|
Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size()); |
|
|
|
|
|
|
|
testWidgetsBundleAndWidgetType(); |
|
|
|
@ -316,9 +318,6 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
|
|
|
|
testAutoGeneratedCodeByProtobuf(configuration); |
|
|
|
|
|
|
|
UserId userId = edgeImitator.getUserId(); |
|
|
|
Assert.assertNotNull(userId); |
|
|
|
|
|
|
|
Optional<DeviceUpdateMsg> deviceUpdateMsgOpt = edgeImitator.findMessageByType(DeviceUpdateMsg.class); |
|
|
|
Assert.assertTrue(deviceUpdateMsgOpt.isPresent()); |
|
|
|
DeviceUpdateMsg deviceUpdateMsg = deviceUpdateMsgOpt.get(); |
|
|
|
@ -362,7 +361,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
Optional<RuleChainUpdateMsg> ruleChainUpdateMsgOpt = edgeImitator.findMessageByType(RuleChainUpdateMsg.class); |
|
|
|
Assert.assertTrue(ruleChainUpdateMsgOpt.isPresent()); |
|
|
|
RuleChainUpdateMsg ruleChainUpdateMsg = ruleChainUpdateMsgOpt.get(); |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, ruleChainUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, ruleChainUpdateMsg.getMsgType()); |
|
|
|
UUID ruleChainUUID = new UUID(ruleChainUpdateMsg.getIdMSB(), ruleChainUpdateMsg.getIdLSB()); |
|
|
|
RuleChain ruleChain = doGet("/api/ruleChain/" + ruleChainUUID.toString(), RuleChain.class); |
|
|
|
Assert.assertNotNull(ruleChain); |
|
|
|
@ -798,31 +797,41 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
doPost("/api/edge/" + edge.getId().getId().toString() |
|
|
|
+ "/entityView/" + savedEntityView.getId().getId().toString(), EntityView.class); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof EntityViewUpdateMsg); |
|
|
|
EntityViewUpdateMsg entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage; |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, entityViewUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getType(), savedEntityView.getType()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getName(), savedEntityView.getName()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getIdMSB(), savedEntityView.getUuidId().getMostSignificantBits()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getIdLSB(), savedEntityView.getUuidId().getLeastSignificantBits()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getEntityIdMSB(), device.getUuidId().getMostSignificantBits()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getEntityIdLSB(), device.getUuidId().getLeastSignificantBits()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getEntityType().name(), device.getId().getEntityType().name()); |
|
|
|
verifyEntityViewUpdateMsg(savedEntityView, device); |
|
|
|
|
|
|
|
|
|
|
|
// 2
|
|
|
|
UplinkMsg.Builder uplinkMsgBuilder = UplinkMsg.newBuilder(); |
|
|
|
EntityViewsRequestMsg.Builder entityViewsRequestBuilder = EntityViewsRequestMsg.newBuilder(); |
|
|
|
entityViewsRequestBuilder.setEntityIdMSB(device.getUuidId().getMostSignificantBits()); |
|
|
|
entityViewsRequestBuilder.setEntityIdLSB(device.getUuidId().getLeastSignificantBits()); |
|
|
|
entityViewsRequestBuilder.setEntityType(device.getId().getEntityType().name()); |
|
|
|
testAutoGeneratedCodeByProtobuf(entityViewsRequestBuilder); |
|
|
|
uplinkMsgBuilder.addEntityViewsRequestMsg(entityViewsRequestBuilder.build()); |
|
|
|
|
|
|
|
testAutoGeneratedCodeByProtobuf(uplinkMsgBuilder); |
|
|
|
|
|
|
|
edgeImitator.expectResponsesAmount(1); |
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
|
|
|
Assert.assertTrue(edgeImitator.waitForResponses()); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
verifyEntityViewUpdateMsg(savedEntityView, device); |
|
|
|
|
|
|
|
|
|
|
|
// 3
|
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
doDelete("/api/edge/" + edge.getId().getId().toString() |
|
|
|
+ "/entityView/" + savedEntityView.getId().getId().toString(), EntityView.class); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof EntityViewUpdateMsg); |
|
|
|
entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage; |
|
|
|
EntityViewUpdateMsg entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage; |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, entityViewUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getIdMSB(), savedEntityView.getUuidId().getMostSignificantBits()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getIdLSB(), savedEntityView.getUuidId().getLeastSignificantBits()); |
|
|
|
|
|
|
|
// 3
|
|
|
|
|
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
doDelete("/api/entityView/" + savedEntityView.getId().getId().toString()) |
|
|
|
.andExpect(status().isOk()); |
|
|
|
@ -831,7 +840,21 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
log.info("EntityView tested successfully"); |
|
|
|
} |
|
|
|
|
|
|
|
private void testCustomer() throws Exception { |
|
|
|
private void verifyEntityViewUpdateMsg(EntityView entityView, Device device) { |
|
|
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof EntityViewUpdateMsg); |
|
|
|
EntityViewUpdateMsg entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage; |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, entityViewUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getType(), entityView.getType()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getName(), entityView.getName()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getIdMSB(), entityView.getUuidId().getMostSignificantBits()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getIdLSB(), entityView.getUuidId().getLeastSignificantBits()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getEntityIdMSB(), device.getUuidId().getMostSignificantBits()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getEntityIdLSB(), device.getUuidId().getLeastSignificantBits()); |
|
|
|
Assert.assertEquals(entityViewUpdateMsg.getEntityType().name(), device.getId().getEntityType().name()); |
|
|
|
} |
|
|
|
|
|
|
|
private void testCustomerAndNewUser() throws Exception { |
|
|
|
log.info("Testing Customer"); |
|
|
|
|
|
|
|
// 1
|
|
|
|
@ -853,6 +876,26 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
|
|
|
|
// 2
|
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
User customerUser = new User(); |
|
|
|
customerUser.setAuthority(Authority.CUSTOMER_USER); |
|
|
|
customerUser.setTenantId(savedTenant.getId()); |
|
|
|
customerUser.setCustomerId(savedCustomer.getId()); |
|
|
|
customerUser.setEmail("customerUser@thingsboard.org"); |
|
|
|
customerUser.setFirstName("John"); |
|
|
|
customerUser.setLastName("Edwards"); |
|
|
|
User savedUser = doPost("/api/user", customerUser, User.class); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof UserUpdateMsg); |
|
|
|
UserUpdateMsg userUpdateMsg = (UserUpdateMsg) latestMessage; |
|
|
|
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, userUpdateMsg.getMsgType()); |
|
|
|
Assert.assertEquals(userUpdateMsg.getIdMSB(), savedUser.getUuidId().getMostSignificantBits()); |
|
|
|
Assert.assertEquals(userUpdateMsg.getIdLSB(), savedUser.getUuidId().getLeastSignificantBits()); |
|
|
|
Assert.assertEquals(userUpdateMsg.getEmail(), savedUser.getEmail()); |
|
|
|
testAutoGeneratedCodeByProtobuf(userUpdateMsg); |
|
|
|
|
|
|
|
// 3
|
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
doDelete("/api/customer/edge/" + edge.getId().getId().toString(), Edge.class); |
|
|
|
Assert.assertTrue(edgeImitator.waitForMessages()); |
|
|
|
latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
@ -862,7 +905,6 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
Assert.assertEquals(customerUpdateMsg.getIdMSB(), savedCustomer.getUuidId().getMostSignificantBits()); |
|
|
|
Assert.assertEquals(customerUpdateMsg.getIdLSB(), savedCustomer.getUuidId().getLeastSignificantBits()); |
|
|
|
|
|
|
|
// 3
|
|
|
|
edgeImitator.expectMessageAmount(1); |
|
|
|
doDelete("/api/customer/" + savedCustomer.getId().getId().toString()) |
|
|
|
.andExpect(status().isOk()); |
|
|
|
@ -1352,12 +1394,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
} |
|
|
|
|
|
|
|
private void sendUserCredentialsRequest() throws Exception { |
|
|
|
UserId userId = edgeImitator.getUserId(); |
|
|
|
|
|
|
|
UplinkMsg.Builder uplinkMsgBuilder = UplinkMsg.newBuilder(); |
|
|
|
UserCredentialsRequestMsg.Builder userCredentialsRequestMsgBuilder = UserCredentialsRequestMsg.newBuilder(); |
|
|
|
userCredentialsRequestMsgBuilder.setUserIdMSB(userId.getId().getMostSignificantBits()); |
|
|
|
userCredentialsRequestMsgBuilder.setUserIdLSB(userId.getId().getLeastSignificantBits()); |
|
|
|
userCredentialsRequestMsgBuilder.setUserIdMSB(tenantAdmin.getId().getId().getMostSignificantBits()); |
|
|
|
userCredentialsRequestMsgBuilder.setUserIdLSB(tenantAdmin.getId().getId().getLeastSignificantBits()); |
|
|
|
testAutoGeneratedCodeByProtobuf(userCredentialsRequestMsgBuilder); |
|
|
|
uplinkMsgBuilder.addUserCredentialsRequestMsg(userCredentialsRequestMsgBuilder.build()); |
|
|
|
|
|
|
|
@ -1372,8 +1412,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
|
|
|
Assert.assertTrue(latestMessage instanceof UserCredentialsUpdateMsg); |
|
|
|
UserCredentialsUpdateMsg userCredentialsUpdateMsg = (UserCredentialsUpdateMsg) latestMessage; |
|
|
|
Assert.assertEquals(userCredentialsUpdateMsg.getUserIdMSB(), userId.getId().getMostSignificantBits()); |
|
|
|
Assert.assertEquals(userCredentialsUpdateMsg.getUserIdLSB(), userId.getId().getLeastSignificantBits()); |
|
|
|
Assert.assertEquals(userCredentialsUpdateMsg.getUserIdMSB(), tenantAdmin.getId().getId().getMostSignificantBits()); |
|
|
|
Assert.assertEquals(userCredentialsUpdateMsg.getUserIdLSB(), tenantAdmin.getId().getId().getLeastSignificantBits()); |
|
|
|
|
|
|
|
testAutoGeneratedCodeByProtobuf(userCredentialsUpdateMsg); |
|
|
|
} |
|
|
|
@ -1524,10 +1564,6 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
|
|
|
private void installation() throws Exception { |
|
|
|
edge = doPost("/api/edge", constructEdge("Test Edge", "test"), Edge.class); |
|
|
|
|
|
|
|
Device savedDeviceDefault = saveDevice("Edge Device Default", "Default"); |
|
|
|
doPost("/api/edge/" + edge.getId().getId().toString() |
|
|
|
+ "/device/" + savedDeviceDefault.getId().getId().toString(), Device.class); |
|
|
|
|
|
|
|
DeviceProfile deviceProfile = this.createDeviceProfile(CUSTOM_DEVICE_PROFILE_NAME, null); |
|
|
|
extendDeviceProfileData(deviceProfile); |
|
|
|
doPost("/api/deviceProfile", deviceProfile, DeviceProfile.class); |
|
|
|
|