Browse Source

More tests

pull/10201/head
ViacheslavKlimov 3 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.gen.transport.TransportProtos.ToHousekeeperServiceMsg;
import org.thingsboard.server.service.housekeeper.processor.TsHistoryDeletionTaskProcessor; import org.thingsboard.server.service.housekeeper.processor.TsHistoryDeletionTaskProcessor;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -232,13 +233,17 @@ public class HousekeeperServiceTest extends AbstractControllerTest {
createRelatedData(differentTenantCustomerId); createRelatedData(differentTenantCustomerId);
loginDifferentTenant(); loginDifferentTenant();
Device device = createDevice("test", "test"); List<DeviceId> devices = new ArrayList<>();
createRelatedData(device.getId()); for (int i = 1; i <= 300; i++) {
Device device = createDevice("test" + i, "test" + i);
createRelatedData(device.getId());
devices.add(device.getId());
}
Asset asset = createAsset(); Asset asset = createAsset();
createRelatedData(asset.getId()); createRelatedData(asset.getId());
createRelation(device.getId(), asset.getId()); createRelation(devices.get(0), asset.getId());
createAlarm(device.getId(), asset.getId()); createAlarm(devices.get(0), asset.getId());
RuleChainMetaData ruleChainMetaData = createRuleChain(); RuleChainMetaData ruleChainMetaData = createRuleChain();
RuleChainId ruleChainId = ruleChainMetaData.getRuleChainId(); RuleChainId ruleChainId = ruleChainMetaData.getRuleChainId();
@ -256,8 +261,10 @@ public class HousekeeperServiceTest extends AbstractControllerTest {
loginSysAdmin(); loginSysAdmin();
deleteDifferentTenant(); deleteDifferentTenant();
await().atMost(30, TimeUnit.SECONDS).untilAsserted(() -> { await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
verifyNoRelatedData(device.getId()); for (DeviceId deviceId : devices) {
verifyNoRelatedData(deviceId);
}
verifyNoRelatedData(asset.getId()); verifyNoRelatedData(asset.getId());
verifyNoRelatedData(ruleNode1Id); verifyNoRelatedData(ruleNode1Id);
verifyNoRelatedData(ruleNode2Id); 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.Dao;
import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.model.BaseEntity; import org.thingsboard.server.dao.model.BaseEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.util.SqlDao; import org.thingsboard.server.dao.util.SqlDao;
import java.util.Collection; import java.util.Collection;
@ -122,24 +123,29 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D>
ids.forEach(repository::deleteById); ids.forEach(repository::deleteById);
} }
@Override
public List<D> find(TenantId tenantId) {
List<E> entities = Lists.newArrayList(getRepository().findAll());
return DaoUtil.convertDataList(entities);
}
@Override @Override
public List<UUID> findIdsByTenantIdAndIdOffset(TenantId tenantId, UUID idOffset, int limit) { public List<UUID> findIdsByTenantIdAndIdOffset(TenantId tenantId, UUID idOffset, int limit) {
String tableName = Optional.ofNullable(getEntityType()) String query = "SELECT id FROM " + getEntityType().getTableName() + " WHERE " + getTenantIdColumn() + " = ? ";
.orElseThrow(() -> new IllegalArgumentException("Entity type not specified")) Object[] params;
.getTableName();
if (idOffset == null) { if (idOffset == null) {
return jdbcTemplate.queryForList("SELECT id FROM " + tableName + " WHERE tenant_id = ? ORDER BY id LIMIT ?", params = new Object[]{tenantId.getId(), limit};
UUID.class, tenantId.getId(), limit);
} else { } else {
return jdbcTemplate.queryForList("SELECT id FROM " + tableName + " WHERE tenant_id = ? AND id > ? ORDER BY id LIMIT ?", query += " AND id > ? ";
UUID.class, tenantId.getId(), idOffset, limit); params = new Object[]{tenantId.getId(), idOffset, limit};
} }
query += " ORDER BY id LIMIT ?";
return jdbcTemplate.queryForList(query, UUID.class, params);
} }
@Override protected String getTenantIdColumn() {
public List<D> find(TenantId tenantId) { return ModelConstants.TENANT_ID_COLUMN;
List<E> entities = Lists.newArrayList(getRepository().findAll());
return DaoUtil.convertDataList(entities);
} }
} }

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

@ -16,6 +16,7 @@
package org.thingsboard.server.dao.service; package org.thingsboard.server.dao.service;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.junit.Test; import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.EntityType;
@ -26,6 +27,7 @@ import org.thingsboard.server.dao.entity.EntityDaoRegistry;
import java.util.UUID; import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
@Slf4j @Slf4j
@ -46,10 +48,29 @@ public class EntityDaoRegistryTest extends AbstractServiceTest {
@Test @Test
public void givenAllDaos_whenFindById_thenOk() { public void givenAllDaos_whenFindById_thenOk() {
for (EntityType entityType : EntityType.values()) { for (EntityType entityType : EntityType.values()) {
Dao<?> dao = entityDaoRegistry.getDao(entityType);
assertDoesNotThrow(() -> { 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