use of com.infiniteautomation.mango.spring.service.DataPointService in project ma-core-public by infiniteautomation.
the class DataPointTagsDaoTest method updateTags.
// @Test
public void updateTags() {
System.out.println(Common.MA_DATA_PATH);
LongSummaryStatistics stats;
DataPointService dataPointService = Common.getBean(DataPointService.class);
MockDataSourceVO ds = createMockDataSource(true);
List<DataPointVO> points = Stream.generate(() -> createMockDataPoint(ds, new MockPointLocatorVO(DataType.NUMERIC, true), true)).limit(numPoints).collect(Collectors.toList());
AtomicInteger count = new AtomicInteger();
List<String> tagKeys = Stream.generate(() -> "key" + count.getAndIncrement()).limit(numTags).collect(Collectors.toList());
// add half the tags
stats = points.stream().mapToLong(point -> {
point.setTags(tagKeys.stream().limit(numTags / 2).collect(Collectors.toMap(Function.identity(), k -> k + "_value" + random.nextInt(10))));
long start = System.currentTimeMillis();
dataPointService.update(point.getId(), point);
return System.currentTimeMillis() - start;
}).summaryStatistics();
System.out.println("add half the tags: " + stats);
// add/update the tags
stats = points.stream().mapToLong(point -> {
point.setTags(tagKeys.stream().collect(Collectors.toMap(Function.identity(), k -> k + "_value" + random.nextInt(10))));
long start = System.currentTimeMillis();
dataPointService.update(point.getId(), point);
return System.currentTimeMillis() - start;
}).summaryStatistics();
System.out.println("add/update the tags: " + stats);
// save without updating tags
stats = points.stream().mapToLong(point -> {
long start = System.currentTimeMillis();
dataPointService.update(point.getId(), point);
return System.currentTimeMillis() - start;
}).summaryStatistics();
System.out.println("save without updating tags: " + stats);
// remove half of the tags
stats = points.stream().mapToLong(point -> {
Map<String, String> existing = point.getTags();
point.setTags(tagKeys.stream().limit(numTags / 2).collect(Collectors.toMap(Function.identity(), existing::get)));
long start = System.currentTimeMillis();
dataPointService.update(point.getId(), point);
return System.currentTimeMillis() - start;
}).summaryStatistics();
System.out.println("remove half of the tags: " + stats);
}
use of com.infiniteautomation.mango.spring.service.DataPointService in project ma-core-public by infiniteautomation.
the class DataPointPermissionTest method testDeleteDataPoint.
/**
* Test to ensure an un-used permission is deleted
*/
@Test
public void testDeleteDataPoint() {
// Insert some data points
Set<Role> readRoles = this.createRoles(2).stream().map(r -> r.getRole()).collect(Collectors.toSet());
List<IDataPoint> points = this.createMockDataPoints(1, false, MangoPermission.requireAnyRole(readRoles), new MangoPermission());
DataPointService service = Common.getBean(DataPointService.class);
runAs.runAs(new PermissionHolder() {
@Override
public String getPermissionHolderName() {
return "Test";
}
@Override
public boolean isPermissionHolderDisabled() {
return false;
}
@Override
public Set<Role> getRoles() {
return readRoles;
}
}, () -> {
List<Integer> ids = points.stream().map(dp -> dp.getId()).collect(Collectors.toList());
QueryBuilder<DataPointVO> query = service.buildQuery().in("id", ids.toArray());
List<DataPointVO> vos = query.query();
assertEquals(points.size(), vos.size());
for (DataPointVO vo : vos) {
assertTrue(points.contains(vo));
}
List<Integer> existing = getPermissionIds(null);
// Delete the source and point
DataSourceDao.getInstance().delete(vos.get(0).getDataSourceId());
// We should have removed 1 permission
assertEquals(existing.size() - 1, getPermissionIds(null).size());
});
}
use of com.infiniteautomation.mango.spring.service.DataPointService in project ma-core-public by infiniteautomation.
the class MockMango method createDataPoints.
/**
* Create points asynchronously and wait for all to be created
*/
public List<DataPointVO> createDataPoints(int count, Map<String, String> tags) throws ExecutionException, InterruptedException {
MockDataSourceVO ds = createMockDataSource();
DataPointService service = Common.getBean(DataPointService.class);
List<CompletableFuture<DataPointVO>> points = new ArrayList<>();
for (int i = 0; i < count; i++) {
DataPointVO dp = new DataPointVO();
dp.setName(UUID.randomUUID().toString());
dp.setDeviceName(ds.getName());
dp.setPointLocator(new MockPointLocatorVO(DataType.NUMERIC, true));
dp.setDataSourceId(ds.getId());
dp.setTags(tags);
points.add(service.insertAsync(dp).toCompletableFuture());
}
return CompletableFuture.allOf(points.toArray(new CompletableFuture[0])).thenApply(ignored -> points.stream().map(CompletableFuture::join).collect(Collectors.toList())).get();
}
use of com.infiniteautomation.mango.spring.service.DataPointService in project ma-core-public by infiniteautomation.
the class DataPointQueryPermissionTest method testDeleteSingleRoleFromAndSet.
/**
* Delete a single role from an and set (this results in the user still having permission)
*/
@Test
public void testDeleteSingleRoleFromAndSet() {
// Insert some data points
Set<Role> readRoles = this.createRoles(3).stream().map(r -> r.getRole()).collect(Collectors.toSet());
List<IDataPoint> points = this.createMockDataPoints(5, false, MangoPermission.requireAllRoles(readRoles), new MangoPermission());
List<IDataPoint> unreadable = this.createMockDataPoints(5, false, new MangoPermission(), new MangoPermission());
Role role = readRoles.iterator().next();
Common.getBean(RoleDao.class).delete(role.getId());
readRoles.remove(role);
DataPointService service = Common.getBean(DataPointService.class);
runAs.runAs(new PermissionHolder() {
@Override
public String getPermissionHolderName() {
return "Test";
}
@Override
public boolean isPermissionHolderDisabled() {
return false;
}
@Override
public Set<Role> getRoles() {
return readRoles;
}
}, () -> {
List<Integer> ids = points.stream().map(dp -> dp.getId()).collect(Collectors.toList());
ids.addAll(unreadable.stream().map(dp -> dp.getId()).collect(Collectors.toList()));
QueryBuilder<DataPointVO> query = service.buildQuery().in("id", ids.toArray());
List<DataPointVO> vos = query.query();
assertEquals(points.size(), vos.size());
for (DataPointVO vo : vos) {
assertTrue(points.contains(vo));
}
});
}
use of com.infiniteautomation.mango.spring.service.DataPointService in project ma-core-public by infiniteautomation.
the class DataPointQueryPermissionTest method testOrPermission.
@Test
public void testOrPermission() {
// Insert some data points
Set<Role> readRoles = this.createRoles(2).stream().map(r -> r.getRole()).collect(Collectors.toSet());
List<IDataPoint> points = this.createMockDataPoints(5, false, MangoPermission.requireAnyRole(readRoles), new MangoPermission());
List<IDataPoint> unreadable = this.createMockDataPoints(5, false, new MangoPermission(), new MangoPermission());
DataPointService service = Common.getBean(DataPointService.class);
runAs.runAs(new PermissionHolder() {
@Override
public String getPermissionHolderName() {
return "Test";
}
@Override
public boolean isPermissionHolderDisabled() {
return false;
}
@Override
public Set<Role> getRoles() {
return readRoles;
}
}, () -> {
List<Integer> ids = points.stream().map(dp -> dp.getId()).collect(Collectors.toList());
ids.addAll(unreadable.stream().map(dp -> dp.getId()).collect(Collectors.toList()));
QueryBuilder<DataPointVO> query = service.buildQuery().in("id", ids.toArray());
List<DataPointVO> vos = query.query();
assertEquals(points.size(), vos.size());
for (DataPointVO vo : vos) {
assertTrue(points.contains(vo));
}
});
}
Aggregations