Merge pull request #13834 from dashevchenko/flakyEdqsTestsFix

Fixed flaky edqs tests
This commit is contained in:
Viacheslav Klimov 2025-08-08 13:22:33 +03:00 committed by GitHub
commit 3d92d7894c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 39 additions and 10 deletions

View File

@ -25,6 +25,9 @@ import org.thingsboard.server.common.data.edqs.EdqsState;
import org.thingsboard.server.common.data.edqs.EdqsState.EdqsApiMode; import org.thingsboard.server.common.data.edqs.EdqsState.EdqsApiMode;
import org.thingsboard.server.common.data.edqs.ToCoreEdqsRequest; import org.thingsboard.server.common.data.edqs.ToCoreEdqsRequest;
import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.query.AlarmCountQuery;
import org.thingsboard.server.common.data.query.AlarmData;
import org.thingsboard.server.common.data.query.AlarmDataQuery;
import org.thingsboard.server.common.data.query.EntityCountQuery; import org.thingsboard.server.common.data.query.EntityCountQuery;
import org.thingsboard.server.common.data.query.EntityData; import org.thingsboard.server.common.data.query.EntityData;
import org.thingsboard.server.common.data.query.EntityDataQuery; import org.thingsboard.server.common.data.query.EntityDataQuery;
@ -70,12 +73,24 @@ public class EdqsEntityQueryControllerTest extends EntityQueryControllerTest {
result -> result.getTotalElements() == expectedResultSize); result -> result.getTotalElements() == expectedResultSize);
} }
@Override
protected PageData<AlarmData> findAlarmsByQueryAndCheck(AlarmDataQuery query, int expectedResultSize) {
return await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> findAlarmsByQuery(query),
result -> result.getTotalElements() == expectedResultSize);
}
@Override @Override
protected Long countByQueryAndCheck(EntityCountQuery query, long expectedResult) { protected Long countByQueryAndCheck(EntityCountQuery query, long expectedResult) {
return await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> countByQuery(query), return await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> countByQuery(query),
result -> result == expectedResult); result -> result == expectedResult);
} }
@Override
protected Long countAlarmsByQueryAndCheck(AlarmCountQuery query, long expectedResult) {
return await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> countAlarmsByQuery(query),
result -> result == expectedResult);
}
@Test @Test
public void testEdqsState() throws Exception { public void testEdqsState() throws Exception {
loginSysAdmin(); loginSysAdmin();

View File

@ -278,8 +278,7 @@ public class EntityQueryControllerTest extends AbstractControllerTest {
assetTypeFilter.setEntityType(EntityType.ASSET); assetTypeFilter.setEntityType(EntityType.ASSET);
AlarmCountQuery assetAlarmQuery = new AlarmCountQuery(assetTypeFilter); AlarmCountQuery assetAlarmQuery = new AlarmCountQuery(assetTypeFilter);
Long assetAlamCount = doPostWithResponse("/api/alarmsQuery/count", assetAlarmQuery, Long.class); countAlarmsByQueryAndCheck(assetAlarmQuery, assets.size());
Assert.assertEquals(assets.size(), assetAlamCount.longValue());
KeyFilter nameFilter = buildStringKeyFilter(EntityKeyType.ENTITY_FIELD, "name", StringFilterPredicate.StringOperation.STARTS_WITH, "Asset1"); KeyFilter nameFilter = buildStringKeyFilter(EntityKeyType.ENTITY_FIELD, "name", StringFilterPredicate.StringOperation.STARTS_WITH, "Asset1");
List<KeyFilter> keyFilters = Collections.singletonList(nameFilter); List<KeyFilter> keyFilters = Collections.singletonList(nameFilter);
@ -369,8 +368,7 @@ public class EntityQueryControllerTest extends AbstractControllerTest {
assetTypeFilter.setEntityType(EntityType.ASSET); assetTypeFilter.setEntityType(EntityType.ASSET);
AlarmCountQuery assetAlarmQuery = new AlarmCountQuery(assetTypeFilter); AlarmCountQuery assetAlarmQuery = new AlarmCountQuery(assetTypeFilter);
Long assetAlamCount = doPostWithResponse("/api/alarmsQuery/count", assetAlarmQuery, Long.class); countAlarmsByQueryAndCheck(assetAlarmQuery, 10);
Assert.assertEquals(10, assetAlamCount.longValue());
KeyFilter nameFilter = buildStringKeyFilter(EntityKeyType.ENTITY_FIELD, "name", StringFilterPredicate.StringOperation.STARTS_WITH, "Asset1"); KeyFilter nameFilter = buildStringKeyFilter(EntityKeyType.ENTITY_FIELD, "name", StringFilterPredicate.StringOperation.STARTS_WITH, "Asset1");
List<KeyFilter> keyFilters = Collections.singletonList(nameFilter); List<KeyFilter> keyFilters = Collections.singletonList(nameFilter);
@ -438,9 +436,7 @@ public class EntityQueryControllerTest extends AbstractControllerTest {
assetTypeFilter.setEntityType(EntityType.ASSET); assetTypeFilter.setEntityType(EntityType.ASSET);
AlarmDataQuery assetAlarmQuery = new AlarmDataQuery(assetTypeFilter, pageLink, null, null, null, alarmFields); AlarmDataQuery assetAlarmQuery = new AlarmDataQuery(assetTypeFilter, pageLink, null, null, null, alarmFields);
PageData<AlarmData> alarmPageData = doPostWithTypedResponse("/api/alarmsQuery/find", assetAlarmQuery, new TypeReference<>() { PageData<AlarmData> alarmPageData = findAlarmsByQueryAndCheck(assetAlarmQuery, 10);
});
Assert.assertEquals(10, alarmPageData.getTotalElements());
List<String> retrievedAlarmTypes = alarmPageData.getData().stream().map(Alarm::getType).toList(); List<String> retrievedAlarmTypes = alarmPageData.getData().stream().map(Alarm::getType).toList();
assertThat(retrievedAlarmTypes).containsExactlyInAnyOrderElementsOf(assetAlarmTypes); assertThat(retrievedAlarmTypes).containsExactlyInAnyOrderElementsOf(assetAlarmTypes);
@ -511,9 +507,7 @@ public class EntityQueryControllerTest extends AbstractControllerTest {
assetTypeFilter.setEntityType(EntityType.ASSET); assetTypeFilter.setEntityType(EntityType.ASSET);
AlarmDataQuery assetAlarmQuery = new AlarmDataQuery(assetTypeFilter, pageLink, null, null, null, Collections.emptyList()); AlarmDataQuery assetAlarmQuery = new AlarmDataQuery(assetTypeFilter, pageLink, null, null, null, Collections.emptyList());
PageData<AlarmData> alarmPageData = doPostWithTypedResponse("/api/alarmsQuery/find", assetAlarmQuery, new TypeReference<>() { PageData<AlarmData> alarmPageData = findAlarmsByQueryAndCheck(assetAlarmQuery, 10);
});
Assert.assertEquals(10, alarmPageData.getTotalElements());
List<String> retrievedAlarmTypes = alarmPageData.getData().stream().map(Alarm::getType).toList(); List<String> retrievedAlarmTypes = alarmPageData.getData().stream().map(Alarm::getType).toList();
assertThat(retrievedAlarmTypes).containsExactlyInAnyOrderElementsOf(assetAlarmTypes); assertThat(retrievedAlarmTypes).containsExactlyInAnyOrderElementsOf(assetAlarmTypes);
@ -1141,22 +1135,42 @@ public class EntityQueryControllerTest extends AbstractControllerTest {
}); });
} }
protected PageData<AlarmData> findAlarmsByQuery(AlarmDataQuery query) throws Exception {
return doPostWithTypedResponse("/api/alarmsQuery/find", query, new TypeReference<>() {});
}
protected PageData<EntityData> findByQueryAndCheck(EntityDataQuery query, int expectedResultSize) throws Exception { protected PageData<EntityData> findByQueryAndCheck(EntityDataQuery query, int expectedResultSize) throws Exception {
PageData<EntityData> result = findByQuery(query); PageData<EntityData> result = findByQuery(query);
assertThat(result.getTotalElements()).isEqualTo(expectedResultSize); assertThat(result.getTotalElements()).isEqualTo(expectedResultSize);
return result; return result;
} }
protected PageData<AlarmData> findAlarmsByQueryAndCheck(AlarmDataQuery query, int expectedResultSize) throws Exception {
PageData<AlarmData> result = findAlarmsByQuery(query);
assertThat(result.getTotalElements()).isEqualTo(expectedResultSize);
return result;
}
protected Long countByQuery(EntityCountQuery countQuery) throws Exception { protected Long countByQuery(EntityCountQuery countQuery) throws Exception {
return doPostWithResponse("/api/entitiesQuery/count", countQuery, Long.class); return doPostWithResponse("/api/entitiesQuery/count", countQuery, Long.class);
} }
protected Long countAlarmsByQuery(AlarmCountQuery countQuery) throws Exception {
return doPostWithResponse("/api/alarmsQuery/count", countQuery, Long.class);
}
protected Long countByQueryAndCheck(EntityCountQuery query, long expectedResult) throws Exception { protected Long countByQueryAndCheck(EntityCountQuery query, long expectedResult) throws Exception {
Long result = countByQuery(query); Long result = countByQuery(query);
assertThat(result).isEqualTo(expectedResult); assertThat(result).isEqualTo(expectedResult);
return result; return result;
} }
protected Long countAlarmsByQueryAndCheck(AlarmCountQuery query, long expectedResult) throws Exception {
Long result = countAlarmsByQuery(query);
assertThat(result).isEqualTo(expectedResult);
return result;
}
private KeyFilter getEntityFieldStringEqualToKeyFilter(String keyName, String value) { private KeyFilter getEntityFieldStringEqualToKeyFilter(String keyName, String value) {
KeyFilter tenantOwnerNameFilter = new KeyFilter(); KeyFilter tenantOwnerNameFilter = new KeyFilter();
tenantOwnerNameFilter.setKey(new EntityKey(EntityKeyType.ENTITY_FIELD, keyName)); tenantOwnerNameFilter.setKey(new EntityKey(EntityKeyType.ENTITY_FIELD, keyName));