Browse Source

Merge pull request #15092 from volodymyr-babak/do-not-send-version-to-edge-cloud

Do not send entity version to edge or to cloud
pull/15158/head
Viacheslav Klimov 7 months ago
committed by GitHub
parent
commit
31cbbc35a2
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 22
      application/src/main/java/org/thingsboard/server/service/edge/EdgeMsgConstructorUtils.java
  2. 3
      application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/BaseEdgeProcessor.java
  3. 9
      application/src/test/java/org/thingsboard/server/edge/AbstractEdgeTest.java
  4. 4
      application/src/test/java/org/thingsboard/server/edge/AssetEdgeTest.java
  5. 2
      application/src/test/java/org/thingsboard/server/edge/AssetProfileEdgeTest.java
  6. 2
      application/src/test/java/org/thingsboard/server/edge/CalculatedFieldEdgeTest.java
  7. 4
      application/src/test/java/org/thingsboard/server/edge/CustomerEdgeTest.java
  8. 2
      application/src/test/java/org/thingsboard/server/edge/DashboardEdgeTest.java
  9. 8
      application/src/test/java/org/thingsboard/server/edge/DeviceEdgeTest.java
  10. 12
      application/src/test/java/org/thingsboard/server/edge/DeviceProfileEdgeTest.java
  11. 2
      application/src/test/java/org/thingsboard/server/edge/EdgeTest.java
  12. 4
      application/src/test/java/org/thingsboard/server/edge/EntityViewEdgeTest.java
  13. 10
      application/src/test/java/org/thingsboard/server/edge/RelationEdgeTest.java
  14. 4
      application/src/test/java/org/thingsboard/server/edge/TenantEdgeTest.java
  15. 2
      application/src/test/java/org/thingsboard/server/edge/WidgetEdgeTest.java
  16. 181
      application/src/test/java/org/thingsboard/server/service/edge/EdgeMsgConstructorUtilsTest.java

22
application/src/main/java/org/thingsboard/server/service/edge/EdgeMsgConstructorUtils.java

@ -41,6 +41,7 @@ import org.thingsboard.server.common.data.DataConstants;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.EntityView;
import org.thingsboard.server.common.data.HasVersion;
import org.thingsboard.server.common.data.OtaPackage;
import org.thingsboard.server.common.data.StringUtils;
import org.thingsboard.server.common.data.TbResource;
@ -193,6 +194,10 @@ public class EdgeMsgConstructorUtils {
)
);
private static void resetVersion(HasVersion entity) {
entity.setVersion(null);
}
public static AlarmUpdateMsg constructAlarmUpdatedMsg(UpdateMsgType msgType, Alarm alarm) {
return AlarmUpdateMsg.newBuilder().setMsgType(msgType)
.setEntity(JacksonUtil.toString(alarm))
@ -205,6 +210,7 @@ public class EdgeMsgConstructorUtils {
}
public static AssetUpdateMsg constructAssetUpdatedMsg(UpdateMsgType msgType, Asset asset) {
resetVersion(asset);
return AssetUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(asset))
.setIdMSB(asset.getUuidId().getMostSignificantBits())
.setIdLSB(asset.getUuidId().getLeastSignificantBits()).build();
@ -218,6 +224,7 @@ public class EdgeMsgConstructorUtils {
}
public static AssetProfileUpdateMsg constructAssetProfileUpdatedMsg(UpdateMsgType msgType, AssetProfile assetProfile) {
resetVersion(assetProfile);
return AssetProfileUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(assetProfile))
.setIdMSB(assetProfile.getId().getId().getMostSignificantBits())
.setIdLSB(assetProfile.getId().getId().getLeastSignificantBits()).build();
@ -231,6 +238,7 @@ public class EdgeMsgConstructorUtils {
}
public static CustomerUpdateMsg constructCustomerUpdatedMsg(UpdateMsgType msgType, Customer customer) {
resetVersion(customer);
return CustomerUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(customer))
.setIdMSB(customer.getId().getId().getMostSignificantBits())
.setIdLSB(customer.getId().getId().getLeastSignificantBits()).build();
@ -244,6 +252,7 @@ public class EdgeMsgConstructorUtils {
}
public static DashboardUpdateMsg constructDashboardUpdatedMsg(UpdateMsgType msgType, Dashboard dashboard) {
resetVersion(dashboard);
return DashboardUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(dashboard))
.setIdMSB(dashboard.getId().getId().getMostSignificantBits())
.setIdLSB(dashboard.getId().getId().getLeastSignificantBits()).build();
@ -257,6 +266,7 @@ public class EdgeMsgConstructorUtils {
}
public static DeviceUpdateMsg constructDeviceUpdatedMsg(UpdateMsgType msgType, Device device) {
resetVersion(device);
return DeviceUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(device))
.setIdMSB(device.getId().getId().getMostSignificantBits())
.setIdLSB(device.getId().getId().getLeastSignificantBits()).build();
@ -270,10 +280,12 @@ public class EdgeMsgConstructorUtils {
}
public static DeviceCredentialsUpdateMsg constructDeviceCredentialsUpdatedMsg(DeviceCredentials deviceCredentials) {
resetVersion(deviceCredentials);
return DeviceCredentialsUpdateMsg.newBuilder().setEntity(JacksonUtil.toString(deviceCredentials)).build();
}
public static DeviceProfileUpdateMsg constructDeviceProfileUpdatedMsg(UpdateMsgType msgType, DeviceProfile deviceProfile, EdgeVersion edgeVersion) {
resetVersion(deviceProfile);
String entity = getEntityAndFixLwm2mBootstrapShortServerId(deviceProfile, edgeVersion);
return DeviceProfileUpdateMsg.newBuilder().setMsgType(msgType).setEntity(entity)
.setIdMSB(deviceProfile.getId().getId().getMostSignificantBits())
@ -387,6 +399,7 @@ public class EdgeMsgConstructorUtils {
}
public static EntityViewUpdateMsg constructEntityViewUpdatedMsg(UpdateMsgType msgType, EntityView entityView) {
resetVersion(entityView);
return EntityViewUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(entityView))
.setIdMSB(entityView.getId().getId().getMostSignificantBits())
.setIdLSB(entityView.getId().getId().getLeastSignificantBits()).build();
@ -486,6 +499,7 @@ public class EdgeMsgConstructorUtils {
}
public static RelationUpdateMsg constructRelationUpdatedMsg(UpdateMsgType msgType, EntityRelation entityRelation) {
resetVersion(entityRelation);
return RelationUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(entityRelation)).build();
}
@ -503,6 +517,7 @@ public class EdgeMsgConstructorUtils {
}
public static RuleChainUpdateMsg constructRuleChainUpdatedMsg(UpdateMsgType msgType, RuleChain ruleChain, boolean isRoot) {
resetVersion(ruleChain);
boolean isTemplateRoot = ruleChain.isRoot();
ruleChain.setRoot(isRoot);
RuleChainUpdateMsg result = RuleChainUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(ruleChain))
@ -520,6 +535,7 @@ public class EdgeMsgConstructorUtils {
}
public static RuleChainMetadataUpdateMsg constructRuleChainMetadataUpdatedMsg(UpdateMsgType msgType, RuleChainMetaData ruleChainMetaData, EdgeVersion edgeVersion) {
resetVersion(ruleChainMetaData);
String metaData = sanitizeMetadataForLegacyEdgeVersion(ruleChainMetaData, edgeVersion);
return RuleChainMetadataUpdateMsg.newBuilder()
@ -640,6 +656,7 @@ public class EdgeMsgConstructorUtils {
}
public static TenantUpdateMsg constructTenantUpdateMsg(UpdateMsgType msgType, Tenant tenant) {
resetVersion(tenant);
return TenantUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(tenant)).build();
}
@ -648,6 +665,7 @@ public class EdgeMsgConstructorUtils {
}
public static UserUpdateMsg constructUserUpdatedMsg(UpdateMsgType msgType, User user) {
resetVersion(user);
return UserUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(user))
.setIdMSB(user.getId().getId().getMostSignificantBits())
.setIdLSB(user.getId().getId().getLeastSignificantBits()).build();
@ -665,6 +683,7 @@ public class EdgeMsgConstructorUtils {
}
public static WidgetsBundleUpdateMsg constructWidgetsBundleUpdateMsg(UpdateMsgType msgType, WidgetsBundle widgetsBundle, List<String> widgets) {
resetVersion(widgetsBundle);
return WidgetsBundleUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(widgetsBundle))
.setWidgets(JacksonUtil.toString(widgets))
.setIdMSB(widgetsBundle.getId().getId().getMostSignificantBits())
@ -680,6 +699,7 @@ public class EdgeMsgConstructorUtils {
}
public static WidgetTypeUpdateMsg constructWidgetTypeUpdateMsg(UpdateMsgType msgType, WidgetTypeDetails widgetTypeDetails) {
resetVersion(widgetTypeDetails);
return WidgetTypeUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(widgetTypeDetails))
.setIdMSB(widgetTypeDetails.getId().getId().getMostSignificantBits())
.setIdLSB(widgetTypeDetails.getId().getId().getLeastSignificantBits()).build();
@ -694,6 +714,7 @@ public class EdgeMsgConstructorUtils {
}
public static CalculatedFieldUpdateMsg constructCalculatedFieldUpdatedMsg(UpdateMsgType msgType, CalculatedField calculatedField) {
resetVersion(calculatedField);
return CalculatedFieldUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(calculatedField))
.setIdMSB(calculatedField.getId().getId().getMostSignificantBits())
.setIdLSB(calculatedField.getId().getId().getLeastSignificantBits()).build();
@ -707,6 +728,7 @@ public class EdgeMsgConstructorUtils {
}
public static AiModelUpdateMsg constructAiModelUpdatedMsg(UpdateMsgType msgType, AiModel aiModel) {
resetVersion(aiModel);
return AiModelUpdateMsg.newBuilder().setMsgType(msgType).setEntity(JacksonUtil.toString(aiModel))
.setIdMSB(aiModel.getId().getId().getMostSignificantBits())
.setIdLSB(aiModel.getId().getId().getLeastSignificantBits()).build();

3
application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/BaseEdgeProcessor.java

@ -412,6 +412,9 @@ public abstract class BaseEdgeProcessor implements EdgeProcessor {
}
protected boolean isSaveRequired(HasVersion current, HasVersion updated) {
if (current != null) {
current.setVersion(null);
}
updated.setVersion(null);
return !updated.equals(current);
}

9
application/src/test/java/org/thingsboard/server/edge/AbstractEdgeTest.java

@ -39,6 +39,7 @@ import org.thingsboard.server.common.data.DataConstants;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.DeviceInfo;
import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.HasVersion;
import org.thingsboard.server.common.data.OtaPackageInfo;
import org.thingsboard.server.common.data.SaveOtaPackageInfoRequest;
import org.thingsboard.server.common.data.StringUtils;
@ -605,7 +606,7 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
DeviceCredentials deviceCredentialsMsg = JacksonUtil.fromString(deviceCredentialsUpdateMsg.getEntity(), DeviceCredentials.class, true);
Assert.assertNotNull(deviceCredentialsMsg);
Assert.assertEquals(savedDevice.getId(), deviceCredentialsMsg.getDeviceId());
Assert.assertEquals(deviceCredentials, deviceCredentialsMsg);
compareHasVersionEntities(deviceCredentials, deviceCredentialsMsg);
return savedDevice;
}
@ -775,4 +776,10 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
});
}
protected void compareHasVersionEntities(HasVersion entity1, HasVersion entity2) {
entity1.setVersion(null);
entity2.setVersion(null);
Assert.assertEquals(entity1, entity2);
}
}

4
application/src/test/java/org/thingsboard/server/edge/AssetEdgeTest.java

@ -58,7 +58,7 @@ public class AssetEdgeTest extends AbstractEdgeTest {
Asset assetMsg = JacksonUtil.fromString(assetUpdateMsg.getEntity(), Asset.class, true);
Assert.assertNotNull(assetMsg);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, assetUpdateMsg.getMsgType());
Assert.assertEquals(savedAsset, assetMsg);
compareHasVersionEntities(savedAsset, assetMsg);
Optional<AssetProfileUpdateMsg> assetProfileUpdateMsgOpt = edgeImitator.findMessageByType(AssetProfileUpdateMsg.class);
Assert.assertTrue(assetProfileUpdateMsgOpt.isPresent());
AssetProfileUpdateMsg assetProfileUpdateMsg = assetProfileUpdateMsgOpt.get();
@ -109,7 +109,7 @@ public class AssetEdgeTest extends AbstractEdgeTest {
assetMsg = JacksonUtil.fromString(assetUpdateMsg.getEntity(), Asset.class, true);
Assert.assertNotNull(assetMsg);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, assetUpdateMsg.getMsgType());
Assert.assertEquals(savedAsset, assetMsg);
compareHasVersionEntities(savedAsset, assetMsg);
assetProfileUpdateMsgOpt = edgeImitator.findMessageByType(AssetProfileUpdateMsg.class);
Assert.assertTrue(assetProfileUpdateMsgOpt.isPresent());
assetProfileUpdateMsg = assetProfileUpdateMsgOpt.get();

2
application/src/test/java/org/thingsboard/server/edge/AssetProfileEdgeTest.java

@ -53,7 +53,7 @@ public class AssetProfileEdgeTest extends AbstractEdgeTest {
AssetProfileUpdateMsg assetProfileUpdateMsg = (AssetProfileUpdateMsg) latestMessage;
AssetProfile assetProfileMsg = JacksonUtil.fromString(assetProfileUpdateMsg.getEntity(), AssetProfile.class, true);
Assert.assertNotNull(assetProfileMsg);
Assert.assertEquals(assetProfile, assetProfileMsg);
compareHasVersionEntities(assetProfile, assetProfileMsg);
Assert.assertEquals("Building", assetProfileMsg.getName());
Assert.assertEquals(buildingsRuleChainId, assetProfileMsg.getDefaultEdgeRuleChainId());
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, assetProfileUpdateMsg.getMsgType());

2
application/src/test/java/org/thingsboard/server/edge/CalculatedFieldEdgeTest.java

@ -147,7 +147,7 @@ public class CalculatedFieldEdgeTest extends AbstractEdgeTest {
CalculatedFieldUpdateMsg calculatedFieldUpdateMsg = (CalculatedFieldUpdateMsg) latestMessage;
CalculatedField calculatedFieldFromEdge = JacksonUtil.fromString(calculatedFieldUpdateMsg.getEntity(), CalculatedField.class, true);
Assert.assertNotNull(calculatedFieldFromEdge);
Assert.assertEquals(savedCalculatedField, calculatedFieldFromEdge);
compareHasVersionEntities(savedCalculatedField, calculatedFieldFromEdge);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, calculatedFieldUpdateMsg.getMsgType());
}

4
application/src/test/java/org/thingsboard/server/edge/CustomerEdgeTest.java

@ -60,7 +60,7 @@ public class CustomerEdgeTest extends AbstractEdgeTest {
CustomerUpdateMsg customerUpdateMsg = customerUpdateOpt.get();
Customer customerMsg = JacksonUtil.fromString(customerUpdateMsg.getEntity(), Customer.class, true);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, customerUpdateMsg.getMsgType());
Assert.assertEquals(savedCustomer, customerMsg);
compareHasVersionEntities(savedCustomer, customerMsg);
testAutoGeneratedCodeByProtobuf(customerUpdateMsg);
// update customer
@ -73,7 +73,7 @@ public class CustomerEdgeTest extends AbstractEdgeTest {
customerUpdateMsg = (CustomerUpdateMsg) latestMessage;
customerMsg = JacksonUtil.fromString(customerUpdateMsg.getEntity(), Customer.class, true);
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, customerUpdateMsg.getMsgType());
Assert.assertEquals(savedCustomer, customerMsg);
compareHasVersionEntities(savedCustomer, customerMsg);
// delete customer
edgeImitator.expectMessageAmount(2);

2
application/src/test/java/org/thingsboard/server/edge/DashboardEdgeTest.java

@ -201,7 +201,7 @@ public class DashboardEdgeTest extends AbstractEdgeTest {
CustomerUpdateMsg customerUpdateMsg = customerUpdateOpt.get();
Customer customerMsg = JacksonUtil.fromString(customerUpdateMsg.getEntity(), Customer.class, true);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, customerUpdateMsg.getMsgType());
Assert.assertEquals(savedCustomer, customerMsg);
compareHasVersionEntities(savedCustomer, customerMsg);
Dashboard dashboard = buildDashboardForUplinkMsg(savedCustomer);

8
application/src/test/java/org/thingsboard/server/edge/DeviceEdgeTest.java

@ -141,7 +141,7 @@ public class DeviceEdgeTest extends AbstractEdgeTest {
Device deviceFromMsg = JacksonUtil.fromString(deviceUpdateMsg.getEntity(), Device.class, true);
Assert.assertNotNull(deviceFromMsg);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType());
Assert.assertEquals(savedDevice, deviceFromMsg);
compareHasVersionEntities(savedDevice, deviceFromMsg);
Assert.assertEquals(savedDevice.getId(), deviceFromMsg.getId());
Assert.assertEquals(savedDevice.getName(), deviceFromMsg.getName());
Assert.assertEquals(savedDevice.getType(), deviceFromMsg.getType());
@ -222,7 +222,7 @@ public class DeviceEdgeTest extends AbstractEdgeTest {
Assert.assertTrue(latestMessage instanceof DeviceCredentialsUpdateMsg);
DeviceCredentialsUpdateMsg deviceCredentialsUpdateMsg = (DeviceCredentialsUpdateMsg) latestMessage;
DeviceCredentials deviceCredentialsMsg = JacksonUtil.fromString(deviceCredentialsUpdateMsg.getEntity(), DeviceCredentials.class, true);
Assert.assertEquals(deviceCredentials, deviceCredentialsMsg);
compareHasVersionEntities(deviceCredentials, deviceCredentialsMsg);
// update device credentials - X509_CERTIFICATE
edgeImitator.expectMessageAmount(1);
@ -272,7 +272,7 @@ public class DeviceEdgeTest extends AbstractEdgeTest {
Device deviceMsg = JacksonUtil.fromString(deviceUpdateMsg.getEntity(), Device.class, true);
Assert.assertNotNull(deviceMsg);
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType());
Assert.assertEquals(savedDevice, deviceMsg);
compareHasVersionEntities(savedDevice, deviceMsg);
Assert.assertEquals(firmwareOtaPackageInfo.getId(), deviceMsg.getFirmwareId());
Assert.assertEquals(softwareOtaPackageInfo.getId(), deviceMsg.getSoftwareId());
deviceData = deviceMsg.getDeviceData();
@ -387,7 +387,7 @@ public class DeviceEdgeTest extends AbstractEdgeTest {
DeviceCredentials deviceCredentialsMsg = JacksonUtil.fromString(deviceCredentialsUpdateMsg.getEntity(), DeviceCredentials.class, true);
Assert.assertNotNull(deviceCredentialsMsg);
Assert.assertEquals(device.getId(), deviceCredentialsMsg.getDeviceId());
Assert.assertEquals(deviceCredentials, deviceCredentialsMsg);
compareHasVersionEntities(deviceCredentials, deviceCredentialsMsg);
}
@Test

12
application/src/test/java/org/thingsboard/server/edge/DeviceProfileEdgeTest.java

@ -83,7 +83,7 @@ public class DeviceProfileEdgeTest extends AbstractEdgeTest {
DeviceProfileUpdateMsg deviceProfileUpdateMsg = (DeviceProfileUpdateMsg) latestMessage;
DeviceProfile deviceProfileMsg = JacksonUtil.fromString(deviceProfileUpdateMsg.getEntity(), DeviceProfile.class, true);
Assert.assertNotNull(deviceProfileMsg);
Assert.assertEquals(deviceProfile, deviceProfileMsg);
compareHasVersionEntities(deviceProfile, deviceProfileMsg);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType());
// update device profile
@ -108,7 +108,7 @@ public class DeviceProfileEdgeTest extends AbstractEdgeTest {
deviceProfileUpdateMsg = (DeviceProfileUpdateMsg) latestMessage;
deviceProfileMsg = JacksonUtil.fromString(deviceProfileUpdateMsg.getEntity(), DeviceProfile.class, true);
Assert.assertNotNull(deviceProfileMsg);
Assert.assertEquals(deviceProfile, deviceProfileMsg);
compareHasVersionEntities(deviceProfile, deviceProfileMsg);
// delete profile
edgeImitator.expectMessageAmount(1);
@ -146,7 +146,7 @@ public class DeviceProfileEdgeTest extends AbstractEdgeTest {
DeviceProfileUpdateMsg deviceProfileUpdateMsg = (DeviceProfileUpdateMsg) latestMessage;
DeviceProfile deviceProfileMsg = JacksonUtil.fromString(deviceProfileUpdateMsg.getEntity(), DeviceProfile.class, true);
Assert.assertNotNull(deviceProfileMsg);
Assert.assertEquals(deviceProfile, deviceProfileMsg);
compareHasVersionEntities(deviceProfile, deviceProfileMsg);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType());
// delete profile when edge is offline
@ -186,7 +186,7 @@ public class DeviceProfileEdgeTest extends AbstractEdgeTest {
DeviceProfileUpdateMsg deviceProfileUpdateMsg = (DeviceProfileUpdateMsg) latestMessage;
DeviceProfile deviceProfileMsg = JacksonUtil.fromString(deviceProfileUpdateMsg.getEntity(), DeviceProfile.class, true);
Assert.assertNotNull(deviceProfileMsg);
Assert.assertEquals(deviceProfile, deviceProfileMsg);
compareHasVersionEntities(deviceProfile, deviceProfileMsg);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType());
Assert.assertEquals(DeviceTransportType.SNMP, deviceProfileMsg.getTransportType());
@ -224,7 +224,7 @@ public class DeviceProfileEdgeTest extends AbstractEdgeTest {
DeviceProfileUpdateMsg deviceProfileUpdateMsg = (DeviceProfileUpdateMsg) latestMessage;
DeviceProfile deviceProfileMsg = JacksonUtil.fromString(deviceProfileUpdateMsg.getEntity(), DeviceProfile.class, true);
Assert.assertNotNull(deviceProfileMsg);
Assert.assertEquals(deviceProfile, deviceProfileMsg);
compareHasVersionEntities(deviceProfile, deviceProfileMsg);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType());
Assert.assertEquals(DeviceTransportType.LWM2M, deviceProfileMsg.getTransportType());
@ -273,7 +273,7 @@ public class DeviceProfileEdgeTest extends AbstractEdgeTest {
DeviceProfileUpdateMsg deviceProfileUpdateMsg = (DeviceProfileUpdateMsg) latestMessage;
DeviceProfile deviceProfileMsg = JacksonUtil.fromString(deviceProfileUpdateMsg.getEntity(), DeviceProfile.class, true);
Assert.assertNotNull(deviceProfileMsg);
Assert.assertEquals(deviceProfile, deviceProfileMsg);
compareHasVersionEntities(deviceProfile, deviceProfileMsg);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType());
Assert.assertEquals(DeviceTransportType.COAP, deviceProfileMsg.getTransportType());

2
application/src/test/java/org/thingsboard/server/edge/EdgeTest.java

@ -57,7 +57,7 @@ public class EdgeTest extends AbstractEdgeTest {
CustomerUpdateMsg customerUpdateMsg = customerUpdateOpt.get();
Customer customerMsg = JacksonUtil.fromString(customerUpdateMsg.getEntity(), Customer.class, true);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, customerUpdateMsg.getMsgType());
Assert.assertEquals(savedCustomer, customerMsg);
compareHasVersionEntities(savedCustomer, customerMsg);
// unassign edge from customer
edgeImitator.expectMessageAmount(2);

4
application/src/test/java/org/thingsboard/server/edge/EntityViewEdgeTest.java

@ -68,7 +68,7 @@ public class EntityViewEdgeTest extends AbstractEdgeTest {
EntityViewUpdateMsg entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage;
EntityView entityView = JacksonUtil.fromString(entityViewUpdateMsg.getEntity(), EntityView.class, true);
Assert.assertNotNull(entityView);
Assert.assertEquals(savedEntityView, entityView);
compareHasVersionEntities(savedEntityView, entityView);
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, entityViewUpdateMsg.getMsgType());
// request entity view(s) for device
@ -265,7 +265,7 @@ public class EntityViewEdgeTest extends AbstractEdgeTest {
EntityViewUpdateMsg entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage;
EntityView entityViewMsg = JacksonUtil.fromString(entityViewUpdateMsg.getEntity(), EntityView.class, true);
Assert.assertNotNull(entityViewMsg);
Assert.assertEquals(entityView, entityViewMsg);
compareHasVersionEntities(entityView, entityViewMsg);
Assert.assertEquals(device.getId(), entityViewMsg.getEntityId());
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, entityViewUpdateMsg.getMsgType());
testAutoGeneratedCodeByProtobuf(entityViewUpdateMsg);

10
application/src/test/java/org/thingsboard/server/edge/RelationEdgeTest.java

@ -57,7 +57,7 @@ public class RelationEdgeTest extends AbstractEdgeTest {
RelationUpdateMsg relationUpdateMsg = (RelationUpdateMsg) latestMessage;
EntityRelation entityRelation = JacksonUtil.fromString(relationUpdateMsg.getEntity(), EntityRelation.class, true);
Assert.assertNotNull(entityRelation);
Assert.assertEquals(relation, entityRelation);
compareHasVersionEntities(relation, entityRelation);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, relationUpdateMsg.getMsgType());
// delete relation
@ -76,7 +76,7 @@ public class RelationEdgeTest extends AbstractEdgeTest {
relationUpdateMsg = (RelationUpdateMsg) latestMessage;
entityRelation = JacksonUtil.fromString(relationUpdateMsg.getEntity(), EntityRelation.class, true);
Assert.assertNotNull(entityRelation);
Assert.assertEquals(deletedRelation, entityRelation);
compareHasVersionEntities(deletedRelation, entityRelation);
Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, relationUpdateMsg.getMsgType());
}
@ -155,7 +155,7 @@ public class RelationEdgeTest extends AbstractEdgeTest {
RelationUpdateMsg relationUpdateMsg = (RelationUpdateMsg) latestMessage;
EntityRelation entityRelation = JacksonUtil.fromString(relationUpdateMsg.getEntity(), EntityRelation.class, true);
Assert.assertNotNull(entityRelation);
Assert.assertEquals(deviceToAssetRelation, entityRelation);
compareHasVersionEntities(deviceToAssetRelation, entityRelation);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, relationUpdateMsg.getMsgType());
}
@ -177,7 +177,7 @@ public class RelationEdgeTest extends AbstractEdgeTest {
RelationUpdateMsg relationUpdateMsg = (RelationUpdateMsg) latestMessage;
EntityRelation entityRelation = JacksonUtil.fromString(relationUpdateMsg.getEntity(), EntityRelation.class, true);
Assert.assertNotNull(entityRelation);
Assert.assertEquals(relation, entityRelation);
compareHasVersionEntities(relation, entityRelation);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, relationUpdateMsg.getMsgType());
// delete relation
@ -196,7 +196,7 @@ public class RelationEdgeTest extends AbstractEdgeTest {
relationUpdateMsg = (RelationUpdateMsg) latestMessage;
entityRelation = JacksonUtil.fromString(relationUpdateMsg.getEntity(), EntityRelation.class, true);
Assert.assertNotNull(entityRelation);
Assert.assertEquals(deletedRelation, entityRelation);
compareHasVersionEntities(deletedRelation, entityRelation);
Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, relationUpdateMsg.getMsgType());
}

4
application/src/test/java/org/thingsboard/server/edge/TenantEdgeTest.java

@ -50,7 +50,7 @@ public class TenantEdgeTest extends AbstractEdgeTest {
TenantProfileUpdateMsg tenantProfileUpdateMsg = tenantProfileUpdateMsgOpt.get();
Tenant tenantMsg = JacksonUtil.fromString(tenantUpdateMsg.getEntity(), Tenant.class, true);
Assert.assertNotNull(tenantMsg);
Assert.assertEquals(savedTenant, tenantMsg);
compareHasVersionEntities(savedTenant, tenantMsg);
TenantProfile tenantProfileMsg = JacksonUtil.fromString(tenantProfileUpdateMsg.getEntity(), TenantProfile.class, true);
Assert.assertNotNull(tenantProfileMsg);
Assert.assertEquals(tenantMsg.getTenantProfileId(), tenantProfileMsg.getId());
@ -75,7 +75,7 @@ public class TenantEdgeTest extends AbstractEdgeTest {
Assert.assertNotNull(tenantProfileMsg);
// tenant update
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, tenantUpdateMsg.getMsgType());
Assert.assertEquals(savedTenant, tenantMsg);
compareHasVersionEntities(savedTenant, tenantMsg);
Assert.assertEquals(savedTenant.getTenantProfileId(), tenantProfileMsg.getId());
}

2
application/src/test/java/org/thingsboard/server/edge/WidgetEdgeTest.java

@ -68,7 +68,7 @@ public class WidgetEdgeTest extends AbstractEdgeTest {
WidgetType widgetsType = JacksonUtil.fromString(widgetTypeUpdateMsg.getEntity(), WidgetType.class, true);
Assert.assertNotNull(widgetsType);
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, widgetTypeUpdateMsg.getMsgType());
Assert.assertEquals(savedWidgetType, widgetsType);
compareHasVersionEntities(savedWidgetType, widgetsType);
// update widget bundle
edgeImitator.expectMessageAmount(1);

181
application/src/test/java/org/thingsboard/server/service/edge/EdgeMsgConstructorUtilsTest.java

@ -38,12 +38,30 @@ import org.thingsboard.rule.engine.rest.TbSendRestApiCallReplyNode;
import org.thingsboard.rule.engine.telemetry.TbCalculatedFieldsNode;
import org.thingsboard.rule.engine.telemetry.TbMsgAttributesNode;
import org.thingsboard.rule.engine.telemetry.TbMsgTimeseriesNode;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.EntityView;
import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.User;
import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.asset.AssetProfile;
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.id.AssetId;
import org.thingsboard.server.common.data.id.AssetProfileId;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.EntityViewId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.relation.EntityRelation;
import org.thingsboard.server.common.data.rule.RuleChain;
import org.thingsboard.server.common.data.rule.RuleChainMetaData;
import org.thingsboard.server.common.data.rule.RuleNode;
import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.gen.edge.v1.EdgeVersion;
import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
@ -278,4 +296,167 @@ public class EdgeMsgConstructorUtilsTest {
edgeEvent.setBody(body);
return edgeEvent;
}
@Test
public void testConstructAssetUpdatedMsg_versionIsReset() {
Asset asset = new Asset();
asset.setId(new AssetId(UUID.randomUUID()));
asset.setName("Test Asset");
asset.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructAssetUpdatedMsg(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, asset).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"Asset version should be null in serialized message");
}
@Test
public void testConstructAssetProfileUpdatedMsg_versionIsReset() {
AssetProfile assetProfile = new AssetProfile();
assetProfile.setId(new AssetProfileId(UUID.randomUUID()));
assetProfile.setName("Test Asset Profile");
assetProfile.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructAssetProfileUpdatedMsg(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, assetProfile).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"AssetProfile version should be null in serialized message");
}
@Test
public void testConstructCustomerUpdatedMsg_versionIsReset() {
Customer customer = new Customer();
customer.setId(new CustomerId(UUID.randomUUID()));
customer.setTitle("Test Customer");
customer.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructCustomerUpdatedMsg(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, customer).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"Customer version should be null in serialized message");
}
@Test
public void testConstructDashboardUpdatedMsg_versionIsReset() {
Dashboard dashboard = new Dashboard();
dashboard.setId(new DashboardId(UUID.randomUUID()));
dashboard.setTitle("Test Dashboard");
dashboard.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructDashboardUpdatedMsg(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, dashboard).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"Dashboard version should be null in serialized message");
}
@Test
public void testConstructDeviceUpdatedMsg_versionIsReset() {
Device device = new Device();
device.setId(new DeviceId(UUID.randomUUID()));
device.setName("Test Device");
device.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructDeviceUpdatedMsg(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, device).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"Device version should be null in serialized message");
}
@Test
public void testConstructDeviceCredentialsUpdatedMsg_versionIsReset() {
DeviceCredentials credentials = new DeviceCredentials();
credentials.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructDeviceCredentialsUpdatedMsg(credentials).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"DeviceCredentials version should be null in serialized message");
}
@Test
public void testConstructEntityViewUpdatedMsg_versionIsReset() {
EntityView entityView = new EntityView();
entityView.setId(new EntityViewId(UUID.randomUUID()));
entityView.setName("Test EntityView");
entityView.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructEntityViewUpdatedMsg(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, entityView).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"EntityView version should be null in serialized message");
}
@Test
public void testConstructRelationUpdatedMsg_versionIsReset() {
EntityRelation relation = new EntityRelation();
relation.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructRelationUpdatedMsg(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, relation).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"EntityRelation version should be null in serialized message");
}
@Test
public void testConstructRuleChainUpdatedMsg_versionIsReset() {
RuleChain ruleChain = new RuleChain();
ruleChain.setId(new org.thingsboard.server.common.data.id.RuleChainId(UUID.randomUUID()));
ruleChain.setName("Test RuleChain");
ruleChain.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructRuleChainUpdatedMsg(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, ruleChain, false).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"RuleChain version should be null in serialized message");
}
@Test
public void testConstructTenantUpdateMsg_versionIsReset() {
Tenant tenant = new Tenant();
tenant.setId(TenantId.fromUUID(UUID.randomUUID()));
tenant.setTitle("Test Tenant");
tenant.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructTenantUpdateMsg(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, tenant).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"Tenant version should be null in serialized message");
}
@Test
public void testConstructUserUpdatedMsg_versionIsReset() {
User user = new User();
user.setId(new UserId(UUID.randomUUID()));
user.setEmail("test@test.com");
user.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructUserUpdatedMsg(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, user).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"User version should be null in serialized message");
}
@Test
public void testConstructRuleChainMetadataUpdatedMsg_versionIsReset() {
RuleChainMetaData metaData = new RuleChainMetaData();
metaData.setVersion(42L);
String entity = EdgeMsgConstructorUtils.constructRuleChainMetadataUpdatedMsg(
UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, metaData, EdgeVersion.V_4_0_0).getEntity();
JsonNode json = JacksonUtil.toJsonNode(entity);
Assertions.assertTrue(json.get("version") == null || json.get("version").isNull(),
"RuleChainMetaData version should be null in serialized message");
}
}

Loading…
Cancel
Save