Browse Source

More tests

pull/10201/head
ViacheslavKlimov 2 years ago
parent
commit
40d9789035
  1. 19
      application/src/test/java/org/thingsboard/server/service/housekeeper/HousekeeperServiceTest.java
  2. 28
      dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java
  3. 23
      dao/src/test/java/org/thingsboard/server/dao/service/EntityDaoRegistryTest.java

19
application/src/test/java/org/thingsboard/server/service/housekeeper/HousekeeperServiceTest.java

@ -80,6 +80,7 @@ import org.thingsboard.server.gen.transport.TransportProtos.HousekeeperTaskProto
import org.thingsboard.server.gen.transport.TransportProtos.ToHousekeeperServiceMsg;
import org.thingsboard.server.service.housekeeper.processor.TsHistoryDeletionTaskProcessor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@ -232,13 +233,17 @@ public class HousekeeperServiceTest extends AbstractControllerTest {
createRelatedData(differentTenantCustomerId);
loginDifferentTenant();
Device device = createDevice("test", "test");
createRelatedData(device.getId());
List<DeviceId> devices = new ArrayList<>();
for (int i = 1; i <= 300; i++) {
Device device = createDevice("test" + i, "test" + i);
createRelatedData(device.getId());
devices.add(device.getId());
}
Asset asset = createAsset();
createRelatedData(asset.getId());
createRelation(device.getId(), asset.getId());
createAlarm(device.getId(), asset.getId());
createRelation(devices.get(0), asset.getId());
createAlarm(devices.get(0), asset.getId());
RuleChainMetaData ruleChainMetaData = createRuleChain();
RuleChainId ruleChainId = ruleChainMetaData.getRuleChainId();
@ -256,8 +261,10 @@ public class HousekeeperServiceTest extends AbstractControllerTest {
loginSysAdmin();
deleteDifferentTenant();
await().atMost(30, TimeUnit.SECONDS).untilAsserted(() -> {
verifyNoRelatedData(device.getId());
await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
for (DeviceId deviceId : devices) {
verifyNoRelatedData(deviceId);
}
verifyNoRelatedData(asset.getId());
verifyNoRelatedData(ruleNode1Id);
verifyNoRelatedData(ruleNode2Id);

28
dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java

@ -27,6 +27,7 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.Dao;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.Collection;
@ -122,24 +123,29 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D>
ids.forEach(repository::deleteById);
}
@Override
public List<D> find(TenantId tenantId) {
List<E> entities = Lists.newArrayList(getRepository().findAll());
return DaoUtil.convertDataList(entities);
}
@Override
public List<UUID> findIdsByTenantIdAndIdOffset(TenantId tenantId, UUID idOffset, int limit) {
String tableName = Optional.ofNullable(getEntityType())
.orElseThrow(() -> new IllegalArgumentException("Entity type not specified"))
.getTableName();
String query = "SELECT id FROM " + getEntityType().getTableName() + " WHERE " + getTenantIdColumn() + " = ? ";
Object[] params;
if (idOffset == null) {
return jdbcTemplate.queryForList("SELECT id FROM " + tableName + " WHERE tenant_id = ? ORDER BY id LIMIT ?",
UUID.class, tenantId.getId(), limit);
params = new Object[]{tenantId.getId(), limit};
} else {
return jdbcTemplate.queryForList("SELECT id FROM " + tableName + " WHERE tenant_id = ? AND id > ? ORDER BY id LIMIT ?",
UUID.class, tenantId.getId(), idOffset, limit);
query += " AND id > ? ";
params = new Object[]{tenantId.getId(), idOffset, limit};
}
query += " ORDER BY id LIMIT ?";
return jdbcTemplate.queryForList(query, UUID.class, params);
}
@Override
public List<D> find(TenantId tenantId) {
List<E> entities = Lists.newArrayList(getRepository().findAll());
return DaoUtil.convertDataList(entities);
protected String getTenantIdColumn() {
return ModelConstants.TENANT_ID_COLUMN;
}
}

23
dao/src/test/java/org/thingsboard/server/dao/service/EntityDaoRegistryTest.java

@ -16,6 +16,7 @@
package org.thingsboard.server.dao.service;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.EntityType;
@ -26,6 +27,7 @@ import org.thingsboard.server.dao.entity.EntityDaoRegistry;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
@Slf4j
@ -46,10 +48,29 @@ public class EntityDaoRegistryTest extends AbstractServiceTest {
@Test
public void givenAllDaos_whenFindById_thenOk() {
for (EntityType entityType : EntityType.values()) {
Dao<?> dao = entityDaoRegistry.getDao(entityType);
assertDoesNotThrow(() -> {
entityDaoRegistry.getDao(entityType).findById(TenantId.SYS_TENANT_ID, UUID.randomUUID());
dao.findById(TenantId.SYS_TENANT_ID, UUID.randomUUID());
});
}
}
@Test
public void givenAllDaos_whenFindIdsByTenantIdAndIdOffset_thenOk() {
for (EntityType entityType : EntityType.values()) {
Dao<?> dao = entityDaoRegistry.getDao(entityType);
try {
dao.findIdsByTenantIdAndIdOffset(TenantId.SYS_TENANT_ID, null, 10);
dao.findIdsByTenantIdAndIdOffset(TenantId.SYS_TENANT_ID, UUID.randomUUID(), 10);
} catch (Exception e) {
String error = ExceptionUtils.getRootCauseMessage(e);
if (error.contains("tenant_id")) {
log.debug("[{}] Ignoring not found tenant_id column", entityType);
} else {
fail("findIdsByTenantIdAndIdOffset for " + entityType + " dao threw error: " + error);
}
}
}
}
}

Loading…
Cancel
Save