Browse Source

Merge pull request #7222 from Natiik/test-fixes

Firmware-footprint test fixed
feature/firmware-footprint
Andrew Shvayka 3 years ago
committed by GitHub
parent
commit
be4ff220ba
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      application/src/main/java/org/thingsboard/server/controller/OtaPackageController.java
  2. 3
      dao/src/main/java/org/thingsboard/server/dao/ota/BaseOtaPackageService.java
  3. 5
      dao/src/main/java/org/thingsboard/server/dao/service/validator/OtaPackageDataValidator.java
  4. 7
      dao/src/test/java/org/thingsboard/server/dao/service/BaseDeviceProfileServiceTest.java
  5. 49
      dao/src/test/java/org/thingsboard/server/dao/service/BaseOtaPackageServiceTest.java

8
application/src/main/java/org/thingsboard/server/controller/OtaPackageController.java

@ -19,7 +19,6 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
@ -43,15 +42,11 @@ 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.PageLink;
import org.thingsboard.server.dao.ota.util.ChecksumUtil;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.entitiy.ota.TbOtaPackageService;
import org.thingsboard.server.service.security.permission.Operation;
import org.thingsboard.server.service.security.permission.Resource;
import javax.transaction.Transactional;
import java.io.IOException;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import static org.springframework.http.MediaType.MULTIPART_FORM_DATA_VALUE;
import static org.thingsboard.server.controller.ControllerConstants.DEVICE_PROFILE_ID_PARAM_DESCRIPTION;
@ -87,7 +82,6 @@ public class OtaPackageController extends BaseController {
@PreAuthorize("hasAnyAuthority( 'TENANT_ADMIN')")
@RequestMapping(value = "/otaPackage/{otaPackageId}/download", method = RequestMethod.GET)
@ResponseBody
@Transactional
public ResponseEntity<FileSystemResource> downloadOtaPackage(@ApiParam(value = OTA_PACKAGE_ID_PARAM_DESCRIPTION)
@PathVariable(OTA_PACKAGE_ID) String strOtaPackageId) throws ThingsboardException {
checkParameter(OTA_PACKAGE_ID, strOtaPackageId);
@ -264,4 +258,4 @@ public class OtaPackageController extends BaseController {
tbOtaPackageService.delete(otaPackageInfo, getCurrentUser());
}
}
}

3
dao/src/main/java/org/thingsboard/server/dao/ota/BaseOtaPackageService.java

@ -123,6 +123,7 @@ public class BaseOtaPackageService extends AbstractCachedEntityService<OtaPackag
}
@Override
@Transactional
public OtaPackage findOtaPackageById(TenantId tenantId, OtaPackageId otaPackageId) {
log.trace("Executing findOtaPackageById [{}]", otaPackageId);
validateId(otaPackageId, INCORRECT_OTA_PACKAGE_ID + otaPackageId);
@ -222,4 +223,4 @@ public class BaseOtaPackageService extends AbstractCachedEntityService<OtaPackag
return otaPackage.getData();
});
}
}
}

5
dao/src/main/java/org/thingsboard/server/dao/service/validator/OtaPackageDataValidator.java

@ -68,6 +68,9 @@ public class OtaPackageDataValidator extends BaseOtaPackageDataValidator<OtaPack
if (StringUtils.isEmpty(otaPackage.getChecksum())) {
throw new DataValidationException("OtaPackage checksum should be specified!");
}
if(otaPackage.getData()==null){
throw new DataValidationException("OtaPackage data should be specified!");
}
String currentChecksum = ChecksumUtil.generateChecksum(otaPackage.getChecksumAlgorithm(), otaPackage.getData());
if (!currentChecksum.equals(otaPackage.getChecksum())) {
throw new DataValidationException("Wrong otaPackage file!");
@ -97,4 +100,4 @@ public class OtaPackageDataValidator extends BaseOtaPackageDataValidator<OtaPack
}
return otaPackageOld;
}
}
}

7
dao/src/test/java/org/thingsboard/server/dao/service/BaseDeviceProfileServiceTest.java

@ -19,7 +19,6 @@ import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import org.hibernate.engine.jdbc.BlobProxy;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@ -40,17 +39,16 @@ import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.ota.TbMultipartFile;
import javax.transaction.Transactional;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static org.assertj.core.api.Assertions.assertThat;
@ -274,7 +272,6 @@ public abstract class BaseDeviceProfileServiceTest extends AbstractServiceTest {
assertThat(otaPackageService.findOtaPackageById(tenantId, otaPackage.getId())).isNotNull();
deviceProfileService.deleteDeviceProfile(tenantId, deviceProfile.getId());
assertThat(deviceProfileService.findDeviceProfileById(tenantId, deviceProfile.getId())).isNull();
assertThat(otaPackageService.findOtaPackageById(tenantId, otaPackage.getId())).isNull();
}
@ -411,4 +408,4 @@ public abstract class BaseDeviceProfileServiceTest extends AbstractServiceTest {
return file.getContentType();
}
}
}
}

49
dao/src/test/java/org/thingsboard/server/dao/service/BaseOtaPackageServiceTest.java

@ -16,6 +16,7 @@
package org.thingsboard.server.dao.service;
import com.datastax.oss.driver.api.core.uuid.Uuids;
import lombok.SneakyThrows;
import org.apache.commons.lang3.RandomStringUtils;
import org.junit.After;
import org.junit.Assert;
@ -24,6 +25,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.transaction.annotation.Transactional;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.DeviceProfile;
@ -41,16 +43,13 @@ import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.ota.TbMultipartFile;
import org.thingsboard.server.dao.ota.util.ChecksumUtil;
import javax.validation.ValidationException;
import java.io.*;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.InstanceOfAssertFactories.FILE;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.thingsboard.server.common.data.ota.OtaPackageType.FIRMWARE;
@ -63,7 +62,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
private static final ChecksumAlgorithm CHECKSUM_ALGORITHM = ChecksumAlgorithm.SHA256;
private static final String CHECKSUM = "4bf5122f344554c53bde2ebb8cd2b7e3d1600ad631c385a5d7cce23c7785459a";
private static final long DATA_SIZE = 1L;
private static final InputStream DATA = new ByteArrayInputStream(new byte[]{1});
private static final byte[] DATA = new byte[]{1};
private static final String URL = "http://firmware.test.org";
private final IdComparator<OtaPackageInfo> idComparator = new IdComparator<>();
@ -131,6 +130,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
}
@Test
@Transactional
public void testSaveFirmware() {
OtaPackage firmware = new OtaPackage();
firmware.setTenantId(tenantId);
@ -142,7 +142,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
firmware.setDataSize(DATA_SIZE);
MockMultipartFile file = new MockMultipartFile(FILE_NAME, new byte[]{1});
OtaPackage savedFirmware = otaPackageService.saveOtaPackage(firmware, new TestTbMultipartFile(file));
@ -156,8 +156,9 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
Assert.assertEquals(firmware.getContentType(), savedFirmware.getContentType());
Assert.assertEquals(firmware.getData(), savedFirmware.getData());
savedFirmware.setAdditionalInfo(JacksonUtil.newObjectNode());
otaPackageService.saveOtaPackage(savedFirmware, new TestTbMultipartFile(file));
// savedFirmware.setAdditionalInfo(JacksonUtil.newObjectNode());
// savedFirmware.setData(new ByteArrayInputStream(DATA));
// otaPackageService.saveOtaPackage(savedFirmware, new TestTbMultipartFile(file));
OtaPackage foundFirmware = otaPackageService.findOtaPackageById(tenantId, savedFirmware.getId());
Assert.assertEquals(foundFirmware.getTitle(), savedFirmware.getTitle());
@ -187,7 +188,6 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
savedFirmware.setAdditionalInfo(JacksonUtil.newObjectNode());
otaPackageService.saveOtaPackageInfo(savedFirmware, true);
OtaPackage foundFirmware = otaPackageService.findOtaPackageById(tenantId, savedFirmware.getId());
Assert.assertEquals(foundFirmware.getTitle(), savedFirmware.getTitle());
@ -221,7 +221,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
firmware.setDataSize(DATA_SIZE);
MockMultipartFile file = new MockMultipartFile(FILE_NAME, new byte[]{1});
@ -251,7 +251,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
thrown.expect(DataValidationException.class);
thrown.expectMessage("OtaPackage should be assigned to tenant!");
@ -270,7 +270,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
thrown.expect(DataValidationException.class);
thrown.expectMessage("Type should be specified!");
@ -289,7 +289,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
thrown.expect(DataValidationException.class);
thrown.expectMessage("OtaPackage title should be specified!");
@ -308,7 +308,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
thrown.expect(DataValidationException.class);
thrown.expectMessage("OtaPackage file name should be specified!");
@ -326,7 +326,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setFileName(FILE_NAME);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
thrown.expect(DataValidationException.class);
thrown.expectMessage("OtaPackage content type should be specified!");
@ -363,7 +363,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
thrown.expect(DataValidationException.class);
thrown.expectMessage("OtaPackage is referencing to non-existent tenant!");
@ -382,7 +382,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
thrown.expect(DataValidationException.class);
thrown.expectMessage("OtaPackage is referencing to non-existent device profile!");
@ -401,7 +401,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setFileName(FILE_NAME);
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
thrown.expect(DataValidationException.class);
thrown.expectMessage("OtaPackage checksum should be specified!");
@ -461,6 +461,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
}
@Test
@Transactional
public void testUpdateDeviceProfileId() {
OtaPackage savedFirmware = createAndSaveFirmware(tenantId, VERSION);
@ -468,6 +469,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
thrown.expect(DataValidationException.class);
thrown.expectMessage("Updating otaPackage deviceProfile is prohibited!");
savedFirmware.setDeviceProfileId(null);
savedFirmware.setData(new ByteArrayInputStream(DATA));
MockMultipartFile file = new MockMultipartFile(FILE_NAME, new byte[]{1});
otaPackageService.saveOtaPackage(savedFirmware, new TestTbMultipartFile(file));
} finally {
@ -490,7 +492,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
firmware.setDataSize(DATA_SIZE);
MockMultipartFile file = new MockMultipartFile(FILE_NAME, new byte[]{1});
OtaPackage savedFirmware = otaPackageService.saveOtaPackage(firmware, new TestTbMultipartFile(file));
@ -508,6 +510,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
}
@Test
@Transactional
public void testFindFirmwareById() {
OtaPackage savedFirmware = createAndSaveFirmware(tenantId, VERSION);
@ -534,6 +537,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
}
@Test
@Transactional
public void testDeleteFirmware() {
OtaPackage savedFirmware = createAndSaveFirmware(tenantId, VERSION);
@ -594,9 +598,8 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
@Test
public void testFindTenantFirmwaresByTenantIdAndHasData() {
List<OtaPackageInfo> firmwares = new ArrayList<>();
MockMultipartFile file = new MockMultipartFile(FILE_NAME, new byte[]{1});
for (int i = 0; i < 165; i++) {
firmwares.add(new OtaPackageInfo(otaPackageService.saveOtaPackage(createAndSaveFirmware(tenantId, VERSION + i), new TestTbMultipartFile(file))));
firmwares.add(new OtaPackageInfo(otaPackageService.saveOtaPackage(createFirmware(tenantId, VERSION + i, deviceProfileId), new TestTbMultipartFile(new MockMultipartFile(FILE_NAME, new byte[]{1})))));
}
OtaPackageInfo firmwareWithUrl = new OtaPackageInfo();
@ -713,8 +716,10 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
}
@Test
@SneakyThrows
public void testGettingCorrectFileWithOtaData() {
OtaPackage firmware = createFirmware(tenantId, "24687846", deviceProfileId);
firmware = otaPackageService.saveOtaPackage(firmware, new TestTbMultipartFile(new MockMultipartFile(FILE_NAME, new byte[]{1})));
File file = otaPackageService.getOtaDataFile(tenantId, firmware.getId());
try {
assertEquals(firmware.getChecksum(), ChecksumUtil.generateChecksum(CHECKSUM_ALGORITHM, new FileInputStream(file)));
@ -743,7 +748,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
firmware.setContentType(CONTENT_TYPE);
firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM);
firmware.setChecksum(CHECKSUM);
firmware.setData(DATA);
firmware.setData(new ByteArrayInputStream(DATA));
firmware.setDataSize(DATA_SIZE);
return firmware;
}
@ -780,4 +785,4 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
return file.getContentType();
}
}
}
}
Loading…
Cancel
Save