Add implementation and test for ota package contructor
This commit is contained in:
		
							parent
							
								
									3b3a41a2ec
								
							
						
					
					
						commit
						2bf8e9d5b4
					
				@ -16,59 +16,54 @@
 | 
				
			|||||||
package org.thingsboard.server.service.edge.rpc.constructor;
 | 
					package org.thingsboard.server.service.edge.rpc.constructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.protobuf.ByteString;
 | 
					import com.google.protobuf.ByteString;
 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					 | 
				
			||||||
import org.springframework.stereotype.Component;
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
import org.thingsboard.server.common.data.DeviceProfile;
 | 
					import org.thingsboard.common.util.JacksonUtil;
 | 
				
			||||||
import org.thingsboard.server.common.data.OtaPackage;
 | 
					import org.thingsboard.server.common.data.OtaPackage;
 | 
				
			||||||
import org.thingsboard.server.common.data.id.DeviceProfileId;
 | 
					 | 
				
			||||||
import org.thingsboard.server.common.data.id.OtaPackageId;
 | 
					import org.thingsboard.server.common.data.id.OtaPackageId;
 | 
				
			||||||
import org.thingsboard.server.common.transport.util.DataDecodingEncodingService;
 | 
					 | 
				
			||||||
import org.thingsboard.server.gen.edge.v1.DeviceProfileUpdateMsg;
 | 
					 | 
				
			||||||
import org.thingsboard.server.gen.edge.v1.OtaPackageUpdateMsg;
 | 
					import org.thingsboard.server.gen.edge.v1.OtaPackageUpdateMsg;
 | 
				
			||||||
import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
 | 
					import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
 | 
				
			||||||
import org.thingsboard.server.queue.util.TbCoreComponent;
 | 
					import org.thingsboard.server.queue.util.TbCoreComponent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.nio.charset.StandardCharsets;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Component
 | 
					@Component
 | 
				
			||||||
@TbCoreComponent
 | 
					@TbCoreComponent
 | 
				
			||||||
public class OtaPackageMsgConstructor {
 | 
					public class OtaPackageMsgConstructor {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Autowired
 | 
					 | 
				
			||||||
    private DataDecodingEncodingService dataDecodingEncodingService;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public OtaPackageUpdateMsg constructOtaPackageUpdatedMsg(UpdateMsgType msgType, OtaPackage otaPackage) {
 | 
					    public OtaPackageUpdateMsg constructOtaPackageUpdatedMsg(UpdateMsgType msgType, OtaPackage otaPackage) {
 | 
				
			||||||
        OtaPackageUpdateMsg.Builder builder = OtaPackageUpdateMsg.newBuilder()
 | 
					        OtaPackageUpdateMsg.Builder builder = OtaPackageUpdateMsg.newBuilder()
 | 
				
			||||||
                .setMsgType(msgType)
 | 
					                .setMsgType(msgType)
 | 
				
			||||||
                .setIdMSB(otaPackage.getId().getId().getMostSignificantBits())
 | 
					                .setIdMSB(otaPackage.getId().getId().getMostSignificantBits())
 | 
				
			||||||
                .setIdLSB(otaPackage.getId().getId().getLeastSignificantBits());
 | 
					                .setIdLSB(otaPackage.getId().getId().getLeastSignificantBits())
 | 
				
			||||||
//                .setName(deviceProfile.getName())
 | 
					                .setDeviceProfileIdMSB(otaPackage.getDeviceProfileId().getId().getMostSignificantBits())
 | 
				
			||||||
//                .setDefault(deviceProfile.isDefault())
 | 
					                .setDeviceProfileIdLSB(otaPackage.getDeviceProfileId().getId().getLeastSignificantBits())
 | 
				
			||||||
//                .setType(deviceProfile.getType().name())
 | 
					                .setType(otaPackage.getType().name())
 | 
				
			||||||
//                .setProfileDataBytes(ByteString.copyFrom(dataDecodingEncodingService.encode(deviceProfile.getProfileData())));
 | 
					                .setTitle(otaPackage.getTitle())
 | 
				
			||||||
        // TODO: @voba - add possibility to setup edge rule chain as device profile default
 | 
					                .setVersion(otaPackage.getVersion())
 | 
				
			||||||
//        if (deviceProfile.getDefaultRuleChainId() != null) {
 | 
					                .setTag(otaPackage.getTag());
 | 
				
			||||||
//            builder.setDefaultRuleChainIdMSB(deviceProfile.getDefaultRuleChainId().getId().getMostSignificantBits())
 | 
					
 | 
				
			||||||
//                    .setDefaultRuleChainIdLSB(deviceProfile.getDefaultRuleChainId().getId().getLeastSignificantBits());
 | 
					        if (otaPackage.getUrl() != null) {
 | 
				
			||||||
//        }
 | 
					            builder.setUrl(otaPackage.getUrl());
 | 
				
			||||||
//        if (deviceProfile.getDefaultQueueName() != null) {
 | 
					        }
 | 
				
			||||||
//            builder.setDefaultQueueName(deviceProfile.getDefaultQueueName());
 | 
					        if (otaPackage.getAdditionalInfo() != null) {
 | 
				
			||||||
//        }
 | 
					            builder.setAdditionalInfo(JacksonUtil.toString(otaPackage.getAdditionalInfo()));
 | 
				
			||||||
//        if (deviceProfile.getDescription() != null) {
 | 
					        }
 | 
				
			||||||
//            builder.setDescription(deviceProfile.getDescription());
 | 
					        if (otaPackage.getFileName() != null) {
 | 
				
			||||||
//        }
 | 
					            builder.setFileName(otaPackage.getFileName());
 | 
				
			||||||
//        if (deviceProfile.getTransportType() != null) {
 | 
					        }
 | 
				
			||||||
//            builder.setTransportType(deviceProfile.getTransportType().name());
 | 
					        if (otaPackage.getContentType() != null) {
 | 
				
			||||||
//        }
 | 
					            builder.setContentType(otaPackage.getContentType());
 | 
				
			||||||
//        if (deviceProfile.getProvisionType() != null) {
 | 
					        }
 | 
				
			||||||
//            builder.setProvisionType(deviceProfile.getProvisionType().name());
 | 
					        if (otaPackage.getChecksumAlgorithm() != null) {
 | 
				
			||||||
//        }
 | 
					            builder.setChecksumAlgorithm(otaPackage.getChecksumAlgorithm().name());
 | 
				
			||||||
//        if (deviceProfile.getProvisionDeviceKey() != null) {
 | 
					        }
 | 
				
			||||||
//            builder.setProvisionDeviceKey(deviceProfile.getProvisionDeviceKey());
 | 
					        if (otaPackage.getChecksum() != null) {
 | 
				
			||||||
//        }
 | 
					            builder.setChecksum(otaPackage.getChecksum());
 | 
				
			||||||
//        if (deviceProfile.getImage() != null) {
 | 
					        }
 | 
				
			||||||
//            builder.setImage(ByteString.copyFrom(deviceProfile.getImage().getBytes(StandardCharsets.UTF_8)));
 | 
					        if (otaPackage.getDataSize() != null) {
 | 
				
			||||||
//        }
 | 
					            builder.setDataSize(otaPackage.getDataSize());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (otaPackage.getData() != null) {
 | 
				
			||||||
 | 
					            builder.setData(ByteString.copyFrom(otaPackage.getData().array()));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        return builder.build();
 | 
					        return builder.build();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -23,6 +23,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			|||||||
import com.fasterxml.jackson.databind.node.ObjectNode;
 | 
					import com.fasterxml.jackson.databind.node.ObjectNode;
 | 
				
			||||||
import com.google.gson.JsonObject;
 | 
					import com.google.gson.JsonObject;
 | 
				
			||||||
import com.google.protobuf.AbstractMessage;
 | 
					import com.google.protobuf.AbstractMessage;
 | 
				
			||||||
 | 
					import com.google.protobuf.ByteString;
 | 
				
			||||||
import com.google.protobuf.InvalidProtocolBufferException;
 | 
					import com.google.protobuf.InvalidProtocolBufferException;
 | 
				
			||||||
import com.google.protobuf.MessageLite;
 | 
					import com.google.protobuf.MessageLite;
 | 
				
			||||||
import org.apache.commons.lang3.RandomStringUtils;
 | 
					import org.apache.commons.lang3.RandomStringUtils;
 | 
				
			||||||
@ -32,7 +33,10 @@ import org.junit.Assert;
 | 
				
			|||||||
import org.junit.Before;
 | 
					import org.junit.Before;
 | 
				
			||||||
import org.junit.Test;
 | 
					import org.junit.Test;
 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.mock.web.MockMultipartFile;
 | 
				
			||||||
import org.springframework.test.context.TestPropertySource;
 | 
					import org.springframework.test.context.TestPropertySource;
 | 
				
			||||||
 | 
					import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder;
 | 
				
			||||||
 | 
					import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
 | 
				
			||||||
import org.thingsboard.common.util.JacksonUtil;
 | 
					import org.thingsboard.common.util.JacksonUtil;
 | 
				
			||||||
import org.thingsboard.server.cluster.TbClusterService;
 | 
					import org.thingsboard.server.cluster.TbClusterService;
 | 
				
			||||||
import org.thingsboard.server.common.data.Customer;
 | 
					import org.thingsboard.server.common.data.Customer;
 | 
				
			||||||
@ -72,6 +76,8 @@ import org.thingsboard.server.common.data.id.EntityId;
 | 
				
			|||||||
import org.thingsboard.server.common.data.id.EntityIdFactory;
 | 
					import org.thingsboard.server.common.data.id.EntityIdFactory;
 | 
				
			||||||
import org.thingsboard.server.common.data.id.RuleChainId;
 | 
					import org.thingsboard.server.common.data.id.RuleChainId;
 | 
				
			||||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
					import org.thingsboard.server.common.data.id.TenantId;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.ota.ChecksumAlgorithm;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.ota.OtaPackageType;
 | 
				
			||||||
import org.thingsboard.server.common.data.page.PageData;
 | 
					import org.thingsboard.server.common.data.page.PageData;
 | 
				
			||||||
import org.thingsboard.server.common.data.page.PageLink;
 | 
					import org.thingsboard.server.common.data.page.PageLink;
 | 
				
			||||||
import org.thingsboard.server.common.data.query.EntityKeyValueType;
 | 
					import org.thingsboard.server.common.data.query.EntityKeyValueType;
 | 
				
			||||||
@ -126,6 +132,7 @@ import org.thingsboard.server.gen.edge.v1.WidgetTypeUpdateMsg;
 | 
				
			|||||||
import org.thingsboard.server.gen.edge.v1.WidgetsBundleUpdateMsg;
 | 
					import org.thingsboard.server.gen.edge.v1.WidgetsBundleUpdateMsg;
 | 
				
			||||||
import org.thingsboard.server.gen.transport.TransportProtos;
 | 
					import org.thingsboard.server.gen.transport.TransportProtos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.nio.ByteBuffer;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
@ -213,7 +220,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
 | 
				
			|||||||
        thermostatDeviceProfile = this.createDeviceProfile(THERMOSTAT_DEVICE_PROFILE_NAME, transportConfiguration);
 | 
					        thermostatDeviceProfile = this.createDeviceProfile(THERMOSTAT_DEVICE_PROFILE_NAME, transportConfiguration);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        extendDeviceProfileData(thermostatDeviceProfile);
 | 
					        extendDeviceProfileData(thermostatDeviceProfile);
 | 
				
			||||||
        doPost("/api/deviceProfile", thermostatDeviceProfile, DeviceProfile.class);
 | 
					        thermostatDeviceProfile = doPost("/api/deviceProfile", thermostatDeviceProfile, DeviceProfile.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Device savedDevice = saveDevice("Edge Device 1", THERMOSTAT_DEVICE_PROFILE_NAME);
 | 
					        Device savedDevice = saveDevice("Edge Device 1", THERMOSTAT_DEVICE_PROFILE_NAME);
 | 
				
			||||||
        doPost("/api/edge/" + edge.getUuidId()
 | 
					        doPost("/api/edge/" + edge.getUuidId()
 | 
				
			||||||
@ -1650,15 +1657,16 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testOtaPackages() throws Exception {
 | 
					    public void testOtaPackages_usesUrl() throws Exception {
 | 
				
			||||||
        // 1
 | 
					        // 1
 | 
				
			||||||
        SaveOtaPackageInfoRequest firmwareInfo = new SaveOtaPackageInfoRequest();
 | 
					        SaveOtaPackageInfoRequest firmwareInfo = new SaveOtaPackageInfoRequest();
 | 
				
			||||||
        firmwareInfo.setDeviceProfileId(thermostatDeviceProfile.getId());
 | 
					        firmwareInfo.setDeviceProfileId(thermostatDeviceProfile.getId());
 | 
				
			||||||
        firmwareInfo.setType(FIRMWARE);
 | 
					        firmwareInfo.setType(FIRMWARE);
 | 
				
			||||||
        firmwareInfo.setTitle("My firmware");
 | 
					        firmwareInfo.setTitle("My firmware #1");
 | 
				
			||||||
        firmwareInfo.setVersion("v1.0");
 | 
					        firmwareInfo.setVersion("v1.0");
 | 
				
			||||||
 | 
					        firmwareInfo.setTag("My firmware #1 v1.0");
 | 
				
			||||||
        firmwareInfo.setUsesUrl(true);
 | 
					        firmwareInfo.setUsesUrl(true);
 | 
				
			||||||
        firmwareInfo.setUrl("http://thingsboard.io/v1");
 | 
					        firmwareInfo.setUrl("http://localhost:8080/v1/package");
 | 
				
			||||||
        firmwareInfo.setAdditionalInfo(JacksonUtil.newObjectNode());
 | 
					        firmwareInfo.setAdditionalInfo(JacksonUtil.newObjectNode());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        edgeImitator.expectMessageAmount(1);
 | 
					        edgeImitator.expectMessageAmount(1);
 | 
				
			||||||
@ -1669,10 +1677,75 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
 | 
				
			|||||||
        Assert.assertTrue(latestMessage instanceof OtaPackageUpdateMsg);
 | 
					        Assert.assertTrue(latestMessage instanceof OtaPackageUpdateMsg);
 | 
				
			||||||
        OtaPackageUpdateMsg otaPackageUpdateMsg = (OtaPackageUpdateMsg) latestMessage;
 | 
					        OtaPackageUpdateMsg otaPackageUpdateMsg = (OtaPackageUpdateMsg) latestMessage;
 | 
				
			||||||
        Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, otaPackageUpdateMsg.getMsgType());
 | 
					        Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, otaPackageUpdateMsg.getMsgType());
 | 
				
			||||||
 | 
					        Assert.assertEquals(savedFirmwareInfo.getUuidId().getMostSignificantBits(), otaPackageUpdateMsg.getIdMSB());
 | 
				
			||||||
 | 
					        Assert.assertEquals(savedFirmwareInfo.getUuidId().getLeastSignificantBits(), otaPackageUpdateMsg.getIdLSB());
 | 
				
			||||||
 | 
					        Assert.assertEquals(thermostatDeviceProfile.getUuidId().getMostSignificantBits(), otaPackageUpdateMsg.getDeviceProfileIdMSB());
 | 
				
			||||||
 | 
					        Assert.assertEquals(thermostatDeviceProfile.getUuidId().getLeastSignificantBits(), otaPackageUpdateMsg.getDeviceProfileIdLSB());
 | 
				
			||||||
 | 
					        Assert.assertEquals(FIRMWARE, OtaPackageType.valueOf(otaPackageUpdateMsg.getType()));
 | 
				
			||||||
 | 
					        Assert.assertEquals("My firmware #1", otaPackageUpdateMsg.getTitle());
 | 
				
			||||||
 | 
					        Assert.assertEquals("v1.0", otaPackageUpdateMsg.getVersion());
 | 
				
			||||||
 | 
					        Assert.assertEquals("My firmware #1 v1.0", otaPackageUpdateMsg.getTag());
 | 
				
			||||||
 | 
					        Assert.assertEquals("http://localhost:8080/v1/package", otaPackageUpdateMsg.getUrl());
 | 
				
			||||||
 | 
					        Assert.assertFalse(otaPackageUpdateMsg.hasData());
 | 
				
			||||||
 | 
					        Assert.assertFalse(otaPackageUpdateMsg.hasFileName());
 | 
				
			||||||
 | 
					        Assert.assertFalse(otaPackageUpdateMsg.hasContentType());
 | 
				
			||||||
 | 
					        Assert.assertFalse(otaPackageUpdateMsg.hasChecksumAlgorithm());
 | 
				
			||||||
 | 
					        Assert.assertFalse(otaPackageUpdateMsg.hasChecksum());
 | 
				
			||||||
 | 
					        Assert.assertFalse(otaPackageUpdateMsg.hasDataSize());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 2
 | 
				
			||||||
 | 
					        edgeImitator.expectMessageAmount(1);
 | 
				
			||||||
 | 
					        doDelete("/api/otaPackage/" + savedFirmwareInfo.getUuidId())
 | 
				
			||||||
 | 
					                .andExpect(status().isOk());
 | 
				
			||||||
 | 
					        Assert.assertTrue(edgeImitator.waitForMessages());
 | 
				
			||||||
 | 
					        latestMessage = edgeImitator.getLatestMessage();
 | 
				
			||||||
 | 
					        Assert.assertTrue(latestMessage instanceof OtaPackageUpdateMsg);
 | 
				
			||||||
 | 
					        otaPackageUpdateMsg = (OtaPackageUpdateMsg) latestMessage;
 | 
				
			||||||
 | 
					        Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, otaPackageUpdateMsg.getMsgType());
 | 
				
			||||||
        Assert.assertEquals(otaPackageUpdateMsg.getIdMSB(), savedFirmwareInfo.getUuidId().getMostSignificantBits());
 | 
					        Assert.assertEquals(otaPackageUpdateMsg.getIdMSB(), savedFirmwareInfo.getUuidId().getMostSignificantBits());
 | 
				
			||||||
        Assert.assertEquals(otaPackageUpdateMsg.getIdLSB(), savedFirmwareInfo.getUuidId().getLeastSignificantBits());
 | 
					        Assert.assertEquals(otaPackageUpdateMsg.getIdLSB(), savedFirmwareInfo.getUuidId().getLeastSignificantBits());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // TODO - add check of content - constructor fix
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testOtaPackages_hasData() throws Exception {
 | 
				
			||||||
 | 
					        // 1
 | 
				
			||||||
 | 
					        SaveOtaPackageInfoRequest firmwareInfo = new SaveOtaPackageInfoRequest();
 | 
				
			||||||
 | 
					        firmwareInfo.setDeviceProfileId(thermostatDeviceProfile.getId());
 | 
				
			||||||
 | 
					        firmwareInfo.setType(FIRMWARE);
 | 
				
			||||||
 | 
					        firmwareInfo.setTitle("My firmware #2");
 | 
				
			||||||
 | 
					        firmwareInfo.setVersion("v2.0");
 | 
				
			||||||
 | 
					        firmwareInfo.setTag("My firmware #2 v2.0");
 | 
				
			||||||
 | 
					        firmwareInfo.setUsesUrl(false);
 | 
				
			||||||
 | 
					        firmwareInfo.setHasData(false);
 | 
				
			||||||
 | 
					        firmwareInfo.setAdditionalInfo(JacksonUtil.newObjectNode());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        edgeImitator.expectMessageAmount(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OtaPackageInfo savedFirmwareInfo = doPost("/api/otaPackage", firmwareInfo, OtaPackageInfo.class);
 | 
				
			||||||
 | 
					        MockMultipartFile testData = new MockMultipartFile("file", "firmware.bin", "image/png", ByteBuffer.wrap(new byte[]{1, 3, 5}).array());
 | 
				
			||||||
 | 
					        savedFirmwareInfo = saveData("/api/otaPackage/" + savedFirmwareInfo.getId().getId().toString() + "?checksumAlgorithm={checksumAlgorithm}", testData, ChecksumAlgorithm.SHA256.name());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Assert.assertTrue(edgeImitator.waitForMessages());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        AbstractMessage latestMessage = edgeImitator.getLatestMessage();
 | 
				
			||||||
 | 
					        Assert.assertTrue(latestMessage instanceof OtaPackageUpdateMsg);
 | 
				
			||||||
 | 
					        OtaPackageUpdateMsg otaPackageUpdateMsg = (OtaPackageUpdateMsg) latestMessage;
 | 
				
			||||||
 | 
					        Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, otaPackageUpdateMsg.getMsgType());
 | 
				
			||||||
 | 
					        Assert.assertEquals(savedFirmwareInfo.getUuidId().getMostSignificantBits(), otaPackageUpdateMsg.getIdMSB());
 | 
				
			||||||
 | 
					        Assert.assertEquals(savedFirmwareInfo.getUuidId().getLeastSignificantBits(), otaPackageUpdateMsg.getIdLSB());
 | 
				
			||||||
 | 
					        Assert.assertEquals(thermostatDeviceProfile.getUuidId().getMostSignificantBits(), otaPackageUpdateMsg.getDeviceProfileIdMSB());
 | 
				
			||||||
 | 
					        Assert.assertEquals(thermostatDeviceProfile.getUuidId().getLeastSignificantBits(), otaPackageUpdateMsg.getDeviceProfileIdLSB());
 | 
				
			||||||
 | 
					        Assert.assertEquals(FIRMWARE, OtaPackageType.valueOf(otaPackageUpdateMsg.getType()));
 | 
				
			||||||
 | 
					        Assert.assertEquals("My firmware #2", otaPackageUpdateMsg.getTitle());
 | 
				
			||||||
 | 
					        Assert.assertEquals("v2.0", otaPackageUpdateMsg.getVersion());
 | 
				
			||||||
 | 
					        Assert.assertEquals("My firmware #2 v2.0", otaPackageUpdateMsg.getTag());
 | 
				
			||||||
 | 
					        Assert.assertFalse(otaPackageUpdateMsg.hasUrl());
 | 
				
			||||||
 | 
					        Assert.assertEquals("firmware.bin", otaPackageUpdateMsg.getFileName());
 | 
				
			||||||
 | 
					        Assert.assertEquals("image/png", otaPackageUpdateMsg.getContentType());
 | 
				
			||||||
 | 
					        Assert.assertEquals(ChecksumAlgorithm.SHA256.name(), otaPackageUpdateMsg.getChecksumAlgorithm());
 | 
				
			||||||
 | 
					        Assert.assertEquals("62467691cf583d4fa78b18fafaf9801f505e0ef03baf0603fd4b0cd004cd1e75", otaPackageUpdateMsg.getChecksum());
 | 
				
			||||||
 | 
					        Assert.assertEquals(3L, otaPackageUpdateMsg.getDataSize());
 | 
				
			||||||
 | 
					        Assert.assertEquals(ByteString.copyFrom(new byte[]{1, 3, 5}), otaPackageUpdateMsg.getData());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 2
 | 
					        // 2
 | 
				
			||||||
        edgeImitator.expectMessageAmount(1);
 | 
					        edgeImitator.expectMessageAmount(1);
 | 
				
			||||||
@ -1767,4 +1840,12 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
 | 
				
			|||||||
        Assert.assertEquals(source, target);
 | 
					        Assert.assertEquals(source, target);
 | 
				
			||||||
        Assert.assertEquals(source.hashCode(), target.hashCode());
 | 
					        Assert.assertEquals(source.hashCode(), target.hashCode());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private OtaPackageInfo saveData(String urlTemplate, MockMultipartFile content, String... params) throws Exception {
 | 
				
			||||||
 | 
					        MockMultipartHttpServletRequestBuilder postRequest = MockMvcRequestBuilders.multipart(urlTemplate, params);
 | 
				
			||||||
 | 
					        postRequest.file(content);
 | 
				
			||||||
 | 
					        setJwtToken(postRequest);
 | 
				
			||||||
 | 
					        return readResponse(mockMvc.perform(postRequest).andExpect(status().isOk()), OtaPackageInfo.class);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -432,13 +432,13 @@ message OtaPackageUpdateMsg {
 | 
				
			|||||||
  string version = 8;
 | 
					  string version = 8;
 | 
				
			||||||
  string tag = 9;
 | 
					  string tag = 9;
 | 
				
			||||||
  optional string url = 10;
 | 
					  optional string url = 10;
 | 
				
			||||||
  bool hasData = 11;
 | 
					  optional string fileName = 11;
 | 
				
			||||||
  optional string fileName = 12;
 | 
					  optional string contentType = 12;
 | 
				
			||||||
  optional string contentType = 13;
 | 
					  optional string checksumAlgorithm = 13;
 | 
				
			||||||
  optional string checksumAlgorithm = 14;
 | 
					  optional string checksum = 14;
 | 
				
			||||||
  optional string checksum = 15;
 | 
					  optional int64 dataSize = 15;
 | 
				
			||||||
  optional int64 dataSize = 16;
 | 
					  optional bytes data = 16;
 | 
				
			||||||
  optional bytes data = 17;
 | 
					  optional string additionalInfo = 17;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user