|
|
@ -61,6 +61,7 @@ import org.thingsboard.server.dao.attributes.AttributesService; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
import java.util.Arrays; |
|
|
import java.util.Arrays; |
|
|
import java.util.Collections; |
|
|
import java.util.Collections; |
|
|
|
|
|
import java.util.Comparator; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
import java.util.concurrent.ExecutionException; |
|
|
import java.util.concurrent.ExecutionException; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
@ -87,7 +88,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Test |
|
|
@Test |
|
|
public void testCountEntitiesByQuery() { |
|
|
public void testCountEntitiesByQuery() throws InterruptedException { |
|
|
List<Device> devices = new ArrayList<>(); |
|
|
List<Device> devices = new ArrayList<>(); |
|
|
for (int i = 0; i < 97; i++) { |
|
|
for (int i = 0; i < 97; i++) { |
|
|
Device device = new Device(); |
|
|
Device device = new Device(); |
|
|
@ -130,7 +131,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Test |
|
|
@Test |
|
|
public void testCountHierarchicalEntitiesByQuery() { |
|
|
public void testCountHierarchicalEntitiesByQuery() throws InterruptedException { |
|
|
List<Asset> assets = new ArrayList<>(); |
|
|
List<Asset> assets = new ArrayList<>(); |
|
|
List<Device> devices = new ArrayList<>(); |
|
|
List<Device> devices = new ArrayList<>(); |
|
|
createTestHierarchy(assets, devices, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>()); |
|
|
createTestHierarchy(assets, devices, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>()); |
|
|
@ -407,7 +408,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
deviceService.deleteDevicesByTenantId(tenantId); |
|
|
deviceService.deleteDevicesByTenantId(tenantId); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void createTestHierarchy(List<Asset> assets, List<Device> devices, List<Long> consumptions, List<Long> highConsumptions, List<Long> temperatures, List<Long> highTemperatures) { |
|
|
private void createTestHierarchy(List<Asset> assets, List<Device> devices, List<Long> consumptions, List<Long> highConsumptions, List<Long> temperatures, List<Long> highTemperatures) throws InterruptedException { |
|
|
for (int i = 0; i < 5; i++) { |
|
|
for (int i = 0; i < 5; i++) { |
|
|
Asset asset = new Asset(); |
|
|
Asset asset = new Asset(); |
|
|
asset.setTenantId(tenantId); |
|
|
asset.setTenantId(tenantId); |
|
|
@ -415,6 +416,8 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
asset.setType("type" + i); |
|
|
asset.setType("type" + i); |
|
|
asset.setLabel("AssetLabel" + i); |
|
|
asset.setLabel("AssetLabel" + i); |
|
|
asset = assetService.saveAsset(asset); |
|
|
asset = assetService.saveAsset(asset); |
|
|
|
|
|
//TO make sure devices have different created time
|
|
|
|
|
|
Thread.sleep(1); |
|
|
assets.add(asset); |
|
|
assets.add(asset); |
|
|
EntityRelation er = new EntityRelation(); |
|
|
EntityRelation er = new EntityRelation(); |
|
|
er.setFrom(tenantId); |
|
|
er.setFrom(tenantId); |
|
|
@ -434,6 +437,8 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
device.setType("default" + j); |
|
|
device.setType("default" + j); |
|
|
device.setLabel("testLabel" + (int) (Math.random() * 1000)); |
|
|
device.setLabel("testLabel" + (int) (Math.random() * 1000)); |
|
|
device = deviceService.saveDevice(device); |
|
|
device = deviceService.saveDevice(device); |
|
|
|
|
|
//TO make sure devices have different created time
|
|
|
|
|
|
Thread.sleep(1); |
|
|
devices.add(device); |
|
|
devices.add(device); |
|
|
er = new EntityRelation(); |
|
|
er = new EntityRelation(); |
|
|
er.setFrom(asset.getId()); |
|
|
er.setFrom(asset.getId()); |
|
|
@ -451,7 +456,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Test |
|
|
@Test |
|
|
public void testSimpleFindEntityDataByQuery() { |
|
|
public void testSimpleFindEntityDataByQuery() throws InterruptedException { |
|
|
List<Device> devices = new ArrayList<>(); |
|
|
List<Device> devices = new ArrayList<>(); |
|
|
for (int i = 0; i < 97; i++) { |
|
|
for (int i = 0; i < 97; i++) { |
|
|
Device device = new Device(); |
|
|
Device device = new Device(); |
|
|
@ -459,6 +464,8 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
device.setName("Device" + i); |
|
|
device.setName("Device" + i); |
|
|
device.setType("default"); |
|
|
device.setType("default"); |
|
|
device.setLabel("testLabel" + (int) (Math.random() * 1000)); |
|
|
device.setLabel("testLabel" + (int) (Math.random() * 1000)); |
|
|
|
|
|
//TO make sure devices have different created time
|
|
|
|
|
|
Thread.sleep(1); |
|
|
devices.add(deviceService.saveDevice(device)); |
|
|
devices.add(deviceService.saveDevice(device)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -490,13 +497,16 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
|
|
|
|
|
|
List<EntityId> loadedIds = loadedEntities.stream().map(EntityData::getEntityId).collect(Collectors.toList()); |
|
|
List<EntityId> loadedIds = loadedEntities.stream().map(EntityData::getEntityId).collect(Collectors.toList()); |
|
|
List<EntityId> deviceIds = devices.stream().map(Device::getId).collect(Collectors.toList()); |
|
|
List<EntityId> deviceIds = devices.stream().map(Device::getId).collect(Collectors.toList()); |
|
|
|
|
|
deviceIds.sort(Comparator.comparing(EntityId::getId)); |
|
|
|
|
|
loadedIds.sort(Comparator.comparing(EntityId::getId)); |
|
|
Assert.assertEquals(deviceIds, loadedIds); |
|
|
Assert.assertEquals(deviceIds, loadedIds); |
|
|
|
|
|
|
|
|
List<String> loadedNames = loadedEntities.stream().map(entityData -> |
|
|
List<String> loadedNames = loadedEntities.stream().map(entityData -> |
|
|
entityData.getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue()).collect(Collectors.toList()); |
|
|
entityData.getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue()).collect(Collectors.toList()); |
|
|
List<String> deviceNames = devices.stream().map(Device::getName).collect(Collectors.toList()); |
|
|
List<String> deviceNames = devices.stream().map(Device::getName).collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
|
|
Collections.sort(loadedNames); |
|
|
|
|
|
Collections.sort(deviceNames); |
|
|
Assert.assertEquals(deviceNames, loadedNames); |
|
|
Assert.assertEquals(deviceNames, loadedNames); |
|
|
|
|
|
|
|
|
sortOrder = new EntityDataSortOrder( |
|
|
sortOrder = new EntityDataSortOrder( |
|
|
@ -525,6 +535,8 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
device.setType("default"); |
|
|
device.setType("default"); |
|
|
device.setLabel("testLabel" + (int) (Math.random() * 1000)); |
|
|
device.setLabel("testLabel" + (int) (Math.random() * 1000)); |
|
|
devices.add(deviceService.saveDevice(device)); |
|
|
devices.add(deviceService.saveDevice(device)); |
|
|
|
|
|
//TO make sure devices have different created time
|
|
|
|
|
|
Thread.sleep(1); |
|
|
long temperature = (long) (Math.random() * 100); |
|
|
long temperature = (long) (Math.random() * 100); |
|
|
temperatures.add(temperature); |
|
|
temperatures.add(temperature); |
|
|
if (temperature > 45) { |
|
|
if (temperature > 45) { |
|
|
@ -560,8 +572,11 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
loadedEntities.addAll(data.getData()); |
|
|
loadedEntities.addAll(data.getData()); |
|
|
} |
|
|
} |
|
|
Assert.assertEquals(67, loadedEntities.size()); |
|
|
Assert.assertEquals(67, loadedEntities.size()); |
|
|
List<String> loadedTemperatures = loadedEntities.stream().map(entityData -> |
|
|
List<String> loadedTemperatures = new ArrayList<>(); |
|
|
entityData.getLatest().get(EntityKeyType.ATTRIBUTE).get("temperature").getValue()).collect(Collectors.toList()); |
|
|
for (Device device : devices) { |
|
|
|
|
|
loadedTemperatures.add(loadedEntities.stream().filter(entityData -> entityData.getEntityId().equals(device.getId())).findFirst().orElse(null) |
|
|
|
|
|
.getLatest().get(EntityKeyType.ATTRIBUTE).get("temperature").getValue()); |
|
|
|
|
|
} |
|
|
List<String> deviceTemperatures = temperatures.stream().map(aLong -> Long.toString(aLong)).collect(Collectors.toList()); |
|
|
List<String> deviceTemperatures = temperatures.stream().map(aLong -> Long.toString(aLong)).collect(Collectors.toList()); |
|
|
Assert.assertEquals(deviceTemperatures, loadedTemperatures); |
|
|
Assert.assertEquals(deviceTemperatures, loadedTemperatures); |
|
|
|
|
|
|
|
|
|