|
|
@ -37,13 +37,13 @@ import org.thingsboard.server.common.data.tenant.profile.DefaultTenantProfileCon |
|
|
import org.thingsboard.server.dao.device.DeviceProfileService; |
|
|
import org.thingsboard.server.dao.device.DeviceProfileService; |
|
|
import org.thingsboard.server.dao.device.DeviceService; |
|
|
import org.thingsboard.server.dao.device.DeviceService; |
|
|
import org.thingsboard.server.dao.exception.DataValidationException; |
|
|
import org.thingsboard.server.dao.exception.DataValidationException; |
|
|
|
|
|
import org.thingsboard.server.dao.ota.OtaPackageDao; |
|
|
import org.thingsboard.server.dao.ota.OtaPackageService; |
|
|
import org.thingsboard.server.dao.ota.OtaPackageService; |
|
|
import org.thingsboard.server.dao.tenant.TbTenantProfileCache; |
|
|
import org.thingsboard.server.dao.tenant.TbTenantProfileCache; |
|
|
import org.thingsboard.server.dao.tenant.TenantProfileService; |
|
|
import org.thingsboard.server.dao.tenant.TenantProfileService; |
|
|
|
|
|
|
|
|
import java.nio.ByteBuffer; |
|
|
import java.nio.ByteBuffer; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
import java.util.Collections; |
|
|
|
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat; |
|
|
import static org.assertj.core.api.Assertions.assertThat; |
|
|
@ -77,6 +77,8 @@ public class OtaPackageServiceTest extends AbstractServiceTest { |
|
|
@Autowired |
|
|
@Autowired |
|
|
TenantProfileService tenantProfileService; |
|
|
TenantProfileService tenantProfileService; |
|
|
@Autowired |
|
|
@Autowired |
|
|
|
|
|
OtaPackageDao otaPackageDao; |
|
|
|
|
|
@Autowired |
|
|
TbTenantProfileCache tenantProfileCache; |
|
|
TbTenantProfileCache tenantProfileCache; |
|
|
|
|
|
|
|
|
@Before |
|
|
@Before |
|
|
@ -118,10 +120,8 @@ public class OtaPackageServiceTest extends AbstractServiceTest { |
|
|
Assert.assertEquals(1, otaPackageService.sumDataSizeByTenantId(tenantId)); |
|
|
Assert.assertEquals(1, otaPackageService.sumDataSizeByTenantId(tenantId)); |
|
|
|
|
|
|
|
|
int maxSumDataSize = 8; |
|
|
int maxSumDataSize = 8; |
|
|
List<OtaPackage> packages = new ArrayList<>(maxSumDataSize); |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 2; i <= maxSumDataSize; i++) { |
|
|
for (int i = 2; i <= maxSumDataSize; i++) { |
|
|
packages.add(createAndSaveFirmware(tenantId, "0." + i)); |
|
|
createAndSaveFirmware(tenantId, "0." + i); |
|
|
Assert.assertEquals(i, otaPackageService.sumDataSizeByTenantId(tenantId)); |
|
|
Assert.assertEquals(i, otaPackageService.sumDataSizeByTenantId(tenantId)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -533,6 +533,39 @@ public class OtaPackageServiceTest extends AbstractServiceTest { |
|
|
Assert.assertNull(foundFirmware); |
|
|
Assert.assertNull(foundFirmware); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
public void testDeleteOtaPackageWithoutData() { |
|
|
|
|
|
OtaPackageInfo firmwareInfo = new OtaPackageInfo(); |
|
|
|
|
|
firmwareInfo.setTenantId(tenantId); |
|
|
|
|
|
firmwareInfo.setDeviceProfileId(deviceProfileId); |
|
|
|
|
|
firmwareInfo.setType(FIRMWARE); |
|
|
|
|
|
firmwareInfo.setTitle(TITLE); |
|
|
|
|
|
firmwareInfo.setVersion(VERSION); |
|
|
|
|
|
OtaPackageInfo savedFirmwareInfo = otaPackageService.saveOtaPackageInfo(firmwareInfo, false); |
|
|
|
|
|
|
|
|
|
|
|
Assert.assertNotNull(savedFirmwareInfo); |
|
|
|
|
|
Assert.assertNotNull(savedFirmwareInfo.getId()); |
|
|
|
|
|
|
|
|
|
|
|
// Should not throw NPE when deleting package without data (OID is null)
|
|
|
|
|
|
otaPackageService.deleteOtaPackage(tenantId, savedFirmwareInfo.getId()); |
|
|
|
|
|
|
|
|
|
|
|
OtaPackageInfo foundFirmware = otaPackageService.findOtaPackageInfoById(tenantId, savedFirmwareInfo.getId()); |
|
|
|
|
|
Assert.assertNull(foundFirmware); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
public void testDeleteOtaPackageUnlinksLargeObject() { |
|
|
|
|
|
OtaPackage savedFirmware = createAndSaveFirmware(tenantId, VERSION); |
|
|
|
|
|
|
|
|
|
|
|
Long oid = otaPackageDao.getDataOidById(savedFirmware.getId().getId()); |
|
|
|
|
|
Assert.assertNotNull(oid); |
|
|
|
|
|
|
|
|
|
|
|
otaPackageService.deleteOtaPackage(tenantId, savedFirmware.getId()); |
|
|
|
|
|
|
|
|
|
|
|
// Verify the large object was unlinked - PostgreSQL throws an exception when the object doesn't exist
|
|
|
|
|
|
assertThatThrownBy(() -> otaPackageDao.unlinkLargeObject(oid)).hasMessageContaining("large object " + oid + " does not exist"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@Test |
|
|
@Test |
|
|
public void testFindTenantFirmwaresByTenantId() { |
|
|
public void testFindTenantFirmwaresByTenantId() { |
|
|
List<OtaPackageInfo> firmwares = new ArrayList<>(); |
|
|
List<OtaPackageInfo> firmwares = new ArrayList<>(); |
|
|
@ -567,8 +600,8 @@ public class OtaPackageServiceTest extends AbstractServiceTest { |
|
|
} |
|
|
} |
|
|
} while (pageData.hasNext()); |
|
|
} while (pageData.hasNext()); |
|
|
|
|
|
|
|
|
Collections.sort(firmwares, idComparator); |
|
|
firmwares.sort(idComparator); |
|
|
Collections.sort(loadedFirmwares, idComparator); |
|
|
loadedFirmwares.sort(idComparator); |
|
|
|
|
|
|
|
|
assertThat(firmwares).isEqualTo(loadedFirmwares); |
|
|
assertThat(firmwares).isEqualTo(loadedFirmwares); |
|
|
|
|
|
|
|
|
@ -622,8 +655,8 @@ public class OtaPackageServiceTest extends AbstractServiceTest { |
|
|
} |
|
|
} |
|
|
} while (pageData.hasNext()); |
|
|
} while (pageData.hasNext()); |
|
|
|
|
|
|
|
|
Collections.sort(firmwares, idComparator); |
|
|
firmwares.sort(idComparator); |
|
|
Collections.sort(loadedFirmwares, idComparator); |
|
|
loadedFirmwares.sort(idComparator); |
|
|
|
|
|
|
|
|
assertThat(firmwares).isEqualTo(loadedFirmwares); |
|
|
assertThat(firmwares).isEqualTo(loadedFirmwares); |
|
|
|
|
|
|
|
|
@ -726,4 +759,5 @@ public class OtaPackageServiceTest extends AbstractServiceTest { |
|
|
firmware.setDataSize(DATA_SIZE); |
|
|
firmware.setDataSize(DATA_SIZE); |
|
|
return firmware; |
|
|
return firmware; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|