From 4b1500390e0221faf492304725b8983e69fc542f Mon Sep 17 00:00:00 2001 From: Volodymyr Babak Date: Fri, 23 Oct 2020 19:28:36 +0300 Subject: [PATCH] Added test for autogenerated code of protobuf --- .../thingsboard/server/edge/BaseEdgeTest.java | 206 ++++++++++++------ 1 file changed, 139 insertions(+), 67 deletions(-) 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 0974986455..55dfdeeaee 100644 --- a/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java +++ b/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java @@ -23,20 +23,16 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.gson.JsonObject; import com.google.protobuf.AbstractMessage; +import com.google.protobuf.Extension; +import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.MessageLite; +import com.google.protobuf.Parser; import lombok.extern.slf4j.Slf4j; import org.junit.After; 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; @@ -55,7 +51,6 @@ 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; @@ -115,6 +110,7 @@ import java.util.Random; import java.util.UUID; import java.util.concurrent.TimeUnit; +import static com.google.protobuf.Extension.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @Slf4j @@ -439,14 +435,18 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { log.info("RuleChains tested successfully"); } - private void testRuleChainMetadataRequestMsg(RuleChainId ruleChainId) throws InterruptedException { - RuleChainMetadataRequestMsg ruleChainMetadataRequestMsg = RuleChainMetadataRequestMsg.newBuilder() + private void testRuleChainMetadataRequestMsg(RuleChainId ruleChainId) throws Exception { + RuleChainMetadataRequestMsg ruleChainMetadataRequestMsg = RuleChainMetadataRequestMsg.newBuilder().clear() .setRuleChainIdMSB(ruleChainId.getId().getMostSignificantBits()) .setRuleChainIdLSB(ruleChainId.getId().getLeastSignificantBits()) .build(); - UplinkMsg uplinkMsg = UplinkMsg.newBuilder() + testAutoGeneratedCodeByProtobuf(ruleChainMetadataRequestMsg); + + UplinkMsg uplinkMsg = UplinkMsg.newBuilder().clear() .addRuleChainMetadataRequestMsg(ruleChainMetadataRequestMsg) .build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); + edgeImitator.expectResponsesAmount(1); edgeImitator.expectMessageAmount(1); edgeImitator.sendUplinkMsg(uplinkMsg); @@ -966,16 +966,21 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { private void sendDevice() throws Exception { UUID uuid = UUIDs.timeBased(); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - DeviceUpdateMsg.Builder deviceUpdateMsgBuilder = DeviceUpdateMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + DeviceUpdateMsg.Builder deviceUpdateMsgBuilder = DeviceUpdateMsg.newBuilder().clear(); deviceUpdateMsgBuilder.setIdMSB(uuid.getMostSignificantBits()); deviceUpdateMsgBuilder.setIdLSB(uuid.getLeastSignificantBits()); deviceUpdateMsgBuilder.setName("Edge Device 2"); deviceUpdateMsgBuilder.setType("test"); deviceUpdateMsgBuilder.setMsgType(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE); - builder.addDeviceUpdateMsg(deviceUpdateMsgBuilder.build()); + DeviceUpdateMsg deviceUpdateMsg = deviceUpdateMsgBuilder.build(); + testAutoGeneratedCodeByProtobuf(deviceUpdateMsg); + builder.addDeviceUpdateMsg(deviceUpdateMsg); + edgeImitator.expectResponsesAmount(1); - edgeImitator.sendUplinkMsg(builder.build()); + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); Device device = doGet("/api/device/" + uuid.toString(), Device.class); @@ -997,16 +1002,21 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { doPost("/api/relation", relation); edgeImitator.waitForMessages(); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - RelationRequestMsg.Builder relationRequestMsgBuilder = RelationRequestMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + RelationRequestMsg.Builder relationRequestMsgBuilder = RelationRequestMsg.newBuilder().clear(); relationRequestMsgBuilder.setEntityIdMSB(device.getId().getId().getMostSignificantBits()); relationRequestMsgBuilder.setEntityIdLSB(device.getId().getId().getLeastSignificantBits()); relationRequestMsgBuilder.setEntityType(device.getId().getEntityType().name()); - builder.addRelationRequestMsg(relationRequestMsgBuilder.build()); + RelationRequestMsg relationRequestMsg = relationRequestMsgBuilder.build(); + testAutoGeneratedCodeByProtobuf(relationRequestMsg); + + builder.addRelationRequestMsg(relationRequestMsg); + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); edgeImitator.expectResponsesAmount(1); edgeImitator.expectMessageAmount(1); - edgeImitator.sendUplinkMsg(builder.build()); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); edgeImitator.waitForMessages(); @@ -1030,16 +1040,22 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { private void sendAlarm() throws Exception { Device device = findDeviceByName("Edge Device 2"); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - AlarmUpdateMsg.Builder alarmUpdateMgBuilder = AlarmUpdateMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + AlarmUpdateMsg.Builder alarmUpdateMgBuilder = AlarmUpdateMsg.newBuilder().clear(); alarmUpdateMgBuilder.setName("alarm from edge"); alarmUpdateMgBuilder.setStatus(AlarmStatus.ACTIVE_UNACK.name()); alarmUpdateMgBuilder.setSeverity(AlarmSeverity.CRITICAL.name()); alarmUpdateMgBuilder.setOriginatorName(device.getName()); alarmUpdateMgBuilder.setOriginatorType(EntityType.DEVICE.name()); - builder.addAlarmUpdateMsg(alarmUpdateMgBuilder.build()); + AlarmUpdateMsg alarmUpdateMsg = alarmUpdateMgBuilder.build(); + testAutoGeneratedCodeByProtobuf(alarmUpdateMsg); + builder.addAlarmUpdateMsg(alarmUpdateMsg); + + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); + edgeImitator.expectResponsesAmount(1); - edgeImitator.sendUplinkMsg(builder.build()); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); @@ -1065,8 +1081,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { Assert.assertTrue(foundDevice2.isPresent()); Device device2 = foundDevice2.get(); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - RelationUpdateMsg.Builder relationUpdateMsgBuilder = RelationUpdateMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + RelationUpdateMsg.Builder relationUpdateMsgBuilder = RelationUpdateMsg.newBuilder().clear(); relationUpdateMsgBuilder.setType("test"); relationUpdateMsgBuilder.setTypeGroup(RelationTypeGroup.COMMON.name()); relationUpdateMsgBuilder.setToIdMSB(device1.getId().getId().getMostSignificantBits()); @@ -1076,10 +1092,15 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { relationUpdateMsgBuilder.setFromIdLSB(device2.getId().getId().getLeastSignificantBits()); relationUpdateMsgBuilder.setFromEntityType(device2.getId().getEntityType().name()); relationUpdateMsgBuilder.setAdditionalInfo("{}"); - builder.addRelationUpdateMsg(relationUpdateMsgBuilder.build()); - UplinkMsg msg = builder.build(); + RelationUpdateMsg relationUpdateMsg = relationUpdateMsgBuilder.build(); + testAutoGeneratedCodeByProtobuf(relationUpdateMsg); + builder.addRelationUpdateMsg(relationUpdateMsg); + + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); + edgeImitator.expectResponsesAmount(1); - edgeImitator.sendUplinkMsg(msg); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); EntityRelation relation = doGet("/api/relation?" + @@ -1105,28 +1126,39 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { String timeseriesKey = "key"; String timeseriesValue = "25"; data.addProperty(timeseriesKey, timeseriesValue); - UplinkMsg.Builder builder1 = UplinkMsg.newBuilder(); - EntityDataProto.Builder entityDataBuilder = EntityDataProto.newBuilder(); + UplinkMsg.Builder builder1 = UplinkMsg.newBuilder().clear(); + EntityDataProto.Builder entityDataBuilder = EntityDataProto.newBuilder().clear(); entityDataBuilder.setPostTelemetryMsg(JsonConverter.convertToTelemetryProto(data, System.currentTimeMillis())); entityDataBuilder.setEntityType(device.getId().getEntityType().name()); entityDataBuilder.setEntityIdMSB(device.getUuidId().getMostSignificantBits()); entityDataBuilder.setEntityIdLSB(device.getUuidId().getLeastSignificantBits()); - builder1.addEntityData(entityDataBuilder.build()); - edgeImitator.sendUplinkMsg(builder1.build()); + EntityDataProto entityDataProto1 = entityDataBuilder.build(); + testAutoGeneratedCodeByProtobuf(entityDataProto1); + builder1.addEntityData(entityDataProto1); + + UplinkMsg uplinkMsg1 = builder1.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg1); + edgeImitator.sendUplinkMsg(uplinkMsg1); JsonObject attributesData = new JsonObject(); String attributesKey = "test_attr"; String attributesValue = "test_value"; attributesData.addProperty(attributesKey, attributesValue); - UplinkMsg.Builder builder2 = UplinkMsg.newBuilder(); - EntityDataProto.Builder entityDataBuilder2 = EntityDataProto.newBuilder(); + UplinkMsg.Builder builder2 = UplinkMsg.newBuilder().clear(); + EntityDataProto.Builder entityDataBuilder2 = EntityDataProto.newBuilder().clear(); entityDataBuilder2.setEntityType(device.getId().getEntityType().name()); entityDataBuilder2.setEntityIdMSB(device.getId().getId().getMostSignificantBits()); entityDataBuilder2.setEntityIdLSB(device.getId().getId().getLeastSignificantBits()); entityDataBuilder2.setAttributesUpdatedMsg(JsonConverter.convertToAttributesProto(attributesData)); entityDataBuilder2.setPostAttributeScope(DataConstants.SERVER_SCOPE); - builder2.addEntityData(entityDataBuilder2.build()); - edgeImitator.sendUplinkMsg(builder2.build()); + EntityDataProto entityDataProto2 = entityDataBuilder2.build(); + testAutoGeneratedCodeByProtobuf(entityDataProto2); + + builder2.addEntityData(entityDataProto2); + UplinkMsg uplinkMsg2 = builder2.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg2); + + edgeImitator.sendUplinkMsg(uplinkMsg2); edgeImitator.waitForResponses(); Thread.sleep(1000); @@ -1145,14 +1177,20 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { private void sendRuleChainMetadataRequest() throws Exception { RuleChainId edgeRootRuleChainId = edge.getRootRuleChainId(); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - RuleChainMetadataRequestMsg.Builder ruleChainMetadataRequestMsgBuilder = RuleChainMetadataRequestMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + RuleChainMetadataRequestMsg.Builder ruleChainMetadataRequestMsgBuilder = RuleChainMetadataRequestMsg.newBuilder().clear(); ruleChainMetadataRequestMsgBuilder.setRuleChainIdMSB(edgeRootRuleChainId.getId().getMostSignificantBits()); ruleChainMetadataRequestMsgBuilder.setRuleChainIdLSB(edgeRootRuleChainId.getId().getLeastSignificantBits()); - builder.addRuleChainMetadataRequestMsg(ruleChainMetadataRequestMsgBuilder.build()); + RuleChainMetadataRequestMsg ruleChainMetadataRequestMsg = ruleChainMetadataRequestMsgBuilder.build(); + testAutoGeneratedCodeByProtobuf(ruleChainMetadataRequestMsg); + + builder.addRuleChainMetadataRequestMsg(ruleChainMetadataRequestMsg); + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); + edgeImitator.expectResponsesAmount(1); edgeImitator.expectMessageAmount(1); - edgeImitator.sendUplinkMsg(builder.build()); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); edgeImitator.waitForMessages(); @@ -1166,14 +1204,19 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { private void sendUserCredentialsRequest() throws Exception { UserId userId = edgeImitator.getUserId(); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - UserCredentialsRequestMsg.Builder userCredentialsRequestMsgBuilder = UserCredentialsRequestMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + UserCredentialsRequestMsg.Builder userCredentialsRequestMsgBuilder = UserCredentialsRequestMsg.newBuilder().clear(); userCredentialsRequestMsgBuilder.setUserIdMSB(userId.getId().getMostSignificantBits()); userCredentialsRequestMsgBuilder.setUserIdLSB(userId.getId().getLeastSignificantBits()); - builder.addUserCredentialsRequestMsg(userCredentialsRequestMsgBuilder.build()); + UserCredentialsRequestMsg userCredentialsRequestMsg = userCredentialsRequestMsgBuilder.build(); + testAutoGeneratedCodeByProtobuf(userCredentialsRequestMsg); + builder.addUserCredentialsRequestMsg(userCredentialsRequestMsg); + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); + edgeImitator.expectResponsesAmount(1); edgeImitator.expectMessageAmount(1); - edgeImitator.sendUplinkMsg(builder.build()); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); edgeImitator.waitForMessages(); @@ -1189,15 +1232,19 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { DeviceCredentials deviceCredentials = doGet("/api/device/" + device.getId().getId().toString() + "/credentials", DeviceCredentials.class); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - DeviceCredentialsRequestMsg.Builder deviceCredentialsRequestMsgBuilder = DeviceCredentialsRequestMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + DeviceCredentialsRequestMsg.Builder deviceCredentialsRequestMsgBuilder = DeviceCredentialsRequestMsg.newBuilder().clear(); deviceCredentialsRequestMsgBuilder.setDeviceIdMSB(device.getUuidId().getMostSignificantBits()); deviceCredentialsRequestMsgBuilder.setDeviceIdLSB(device.getUuidId().getLeastSignificantBits()); - builder.addDeviceCredentialsRequestMsg(deviceCredentialsRequestMsgBuilder.build()); + DeviceCredentialsRequestMsg deviceCredentialsRequestMsg = deviceCredentialsRequestMsgBuilder.build(); + testAutoGeneratedCodeByProtobuf(deviceCredentialsRequestMsg); + builder.addDeviceCredentialsRequestMsg(deviceCredentialsRequestMsg); + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); edgeImitator.expectResponsesAmount(1); edgeImitator.expectMessageAmount(1); - edgeImitator.sendUplinkMsg(builder.build()); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); edgeImitator.waitForMessages(); @@ -1213,36 +1260,46 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { private void sendDeviceCredentialsUpdate() throws Exception { Device device = findDeviceByName("Edge Device 1"); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - DeviceCredentialsUpdateMsg.Builder deviceCredentialsUpdateMsgBuilder = DeviceCredentialsUpdateMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + DeviceCredentialsUpdateMsg.Builder deviceCredentialsUpdateMsgBuilder = DeviceCredentialsUpdateMsg.newBuilder().clear(); deviceCredentialsUpdateMsgBuilder.setDeviceIdMSB(device.getUuidId().getMostSignificantBits()); deviceCredentialsUpdateMsgBuilder.setDeviceIdLSB(device.getUuidId().getLeastSignificantBits()); deviceCredentialsUpdateMsgBuilder.setCredentialsType(DeviceCredentialsType.ACCESS_TOKEN.name()); deviceCredentialsUpdateMsgBuilder.setCredentialsId("NEW_TOKEN"); - builder.addDeviceCredentialsUpdateMsg(deviceCredentialsUpdateMsgBuilder.build()); + DeviceCredentialsUpdateMsg deviceCredentialsUpdateMsg = deviceCredentialsUpdateMsgBuilder.build(); + testAutoGeneratedCodeByProtobuf(deviceCredentialsUpdateMsg); + builder.addDeviceCredentialsUpdateMsg(deviceCredentialsUpdateMsg); + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); edgeImitator.expectResponsesAmount(1); - edgeImitator.sendUplinkMsg(builder.build()); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); } private void sendDeviceRpcResponse() throws Exception { Device device = findDeviceByName("Edge Device 1"); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - DeviceRpcCallMsg.Builder deviceRpcCallResponse = DeviceRpcCallMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + DeviceRpcCallMsg.Builder deviceRpcCallResponse = DeviceRpcCallMsg.newBuilder().clear(); deviceRpcCallResponse.setDeviceIdMSB(device.getUuidId().getMostSignificantBits()); deviceRpcCallResponse.setDeviceIdLSB(device.getUuidId().getLeastSignificantBits()); deviceRpcCallResponse.setOneway(true); deviceRpcCallResponse.setOriginServiceId("originServiceId"); deviceRpcCallResponse.setExpirationTime(System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(10)); RpcResponseMsg.Builder responseBuilder = - RpcResponseMsg.newBuilder().setResponse("{}"); - deviceRpcCallResponse.setResponseMsg(responseBuilder.build()); - builder.addDeviceRpcCallMsg(deviceRpcCallResponse.build()); + RpcResponseMsg.newBuilder().clear().setResponse("{}"); + RpcResponseMsg rpcResponseMsg = responseBuilder.build(); + testAutoGeneratedCodeByProtobuf(rpcResponseMsg); + deviceRpcCallResponse.setResponseMsg(rpcResponseMsg); + DeviceRpcCallMsg deviceRpcCallMsg = deviceRpcCallResponse.build(); + testAutoGeneratedCodeByProtobuf(deviceRpcCallMsg); + builder.addDeviceRpcCallMsg(deviceRpcCallMsg); + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); edgeImitator.expectResponsesAmount(1); - edgeImitator.sendUplinkMsg(builder.build()); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); } @@ -1255,16 +1312,20 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { doPost("/api/plugins/telemetry/DEVICE/" + device.getId().getId().toString() + "/attributes/" + DataConstants.SERVER_SCOPE, attributesData); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - AttributesRequestMsg.Builder attributesRequestMsgBuilder = AttributesRequestMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + AttributesRequestMsg.Builder attributesRequestMsgBuilder = AttributesRequestMsg.newBuilder().clear(); attributesRequestMsgBuilder.setEntityIdMSB(device.getUuidId().getMostSignificantBits()); attributesRequestMsgBuilder.setEntityIdLSB(device.getUuidId().getLeastSignificantBits()); attributesRequestMsgBuilder.setEntityType(EntityType.DEVICE.name()); - builder.addAttributesRequestMsg(attributesRequestMsgBuilder.build()); + AttributesRequestMsg attributesRequestMsg = attributesRequestMsgBuilder.build(); + testAutoGeneratedCodeByProtobuf(attributesRequestMsg); + builder.addAttributesRequestMsg(attributesRequestMsg); + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); edgeImitator.expectResponsesAmount(1); edgeImitator.expectMessageAmount(1); - edgeImitator.sendUplinkMsg(builder.build()); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); edgeImitator.waitForMessages(); @@ -1290,14 +1351,19 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { Optional foundDevice = edgeDevices.stream().filter(device1 -> device1.getName().equals("Edge Device 2")).findAny(); Assert.assertTrue(foundDevice.isPresent()); Device device = foundDevice.get(); - UplinkMsg.Builder builder = UplinkMsg.newBuilder(); - DeviceUpdateMsg.Builder deviceDeleteMsgBuilder = DeviceUpdateMsg.newBuilder(); + UplinkMsg.Builder builder = UplinkMsg.newBuilder().clear(); + DeviceUpdateMsg.Builder deviceDeleteMsgBuilder = DeviceUpdateMsg.newBuilder().clear(); deviceDeleteMsgBuilder.setMsgType(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE); deviceDeleteMsgBuilder.setIdMSB(device.getId().getId().getMostSignificantBits()); deviceDeleteMsgBuilder.setIdLSB(device.getId().getId().getLeastSignificantBits()); - builder.addDeviceUpdateMsg(deviceDeleteMsgBuilder.build()); + DeviceUpdateMsg deviceUpdateMsg = deviceDeleteMsgBuilder.build(); + testAutoGeneratedCodeByProtobuf(deviceUpdateMsg); + builder.addDeviceUpdateMsg(deviceUpdateMsg); + UplinkMsg uplinkMsg = builder.build(); + testAutoGeneratedCodeByProtobuf(uplinkMsg); + edgeImitator.expectResponsesAmount(1); - edgeImitator.sendUplinkMsg(builder.build()); + edgeImitator.sendUplinkMsg(uplinkMsg); edgeImitator.waitForResponses(); device = doGet("/api/device/" + device.getId().getId().toString(), Device.class); Assert.assertNotNull(device); @@ -1329,4 +1395,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { edgeEvent.setBody(entityBody); return edgeEvent; } + + private void testAutoGeneratedCodeByProtobuf(MessageLite source) throws InvalidProtocolBufferException { + MessageLite target = source.getParserForType().parseFrom(source.toByteArray()); + Assert.assertEquals(source, target); + Assert.assertEquals(source.hashCode(), target.hashCode()); + } }