Skip to content

Commit 090c8ea

Browse files
authored
test: fix flaky AuditIntegrationTest await conditions [DHIS2-21858] (2.43) (#24503)
1 parent deaba3c commit 090c8ea

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/audit/AuditIntegrationTest.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import java.util.Properties;
4646
import java.util.concurrent.TimeUnit;
4747
import java.util.stream.Stream;
48+
import org.hisp.dhis.common.CodeGenerator;
4849
import org.hisp.dhis.common.IdentifiableObjectManager;
4950
import org.hisp.dhis.common.UID;
5051
import org.hisp.dhis.common.auth.ApiHeadersAuthScheme;
@@ -142,7 +143,7 @@ void testSaveMetadata() {
142143
DataElement dataElement = createDataElement('A');
143144
dataElementService.addDataElement(dataElement);
144145
AuditQuery query = AuditQuery.builder().uid(Sets.newHashSet(dataElement.getUid())).build();
145-
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 0);
146+
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 1);
146147
List<Audit> audits = auditService.getAudits(query);
147148
assertEquals(1, audits.size());
148149
Audit audit = audits.get(0);
@@ -155,7 +156,9 @@ void testSaveMetadata() {
155156
@MethodSource("provideAuthSchemes")
156157
void testSaveRoute(AuthScheme authScheme) {
157158
Route route = new Route();
158-
route.setUid(BASE_UID);
159+
// each parameterized run needs its own UID: audits are written asynchronously
160+
// outside the test transaction, so audits for a shared UID leak between runs
161+
route.setUid(CodeGenerator.generateUid());
159162
route.setName("foo");
160163
route.setAuth(authScheme);
161164
route.setUrl("http://stub");
@@ -167,7 +170,7 @@ void testSaveRoute(AuthScheme authScheme) {
167170
return null;
168171
});
169172
AuditQuery query = AuditQuery.builder().uid(Sets.newHashSet(route.getUid())).build();
170-
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 0);
173+
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 1);
171174
List<Audit> audits = auditService.getAudits(query);
172175
assertEquals(1, audits.size());
173176
assertFalse(audits.get(0).getData().contains("passw0rd"));
@@ -185,7 +188,7 @@ void testSaveTrackedEntity() {
185188
TrackedEntity trackedEntity = createTrackedEntity('A', ou, attribute, trackedEntityType);
186189
manager.save(trackedEntity);
187190
AuditQuery query = AuditQuery.builder().uid(Sets.newHashSet(trackedEntity.getUid())).build();
188-
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 0);
191+
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 1);
189192
List<Audit> audits = auditService.getAudits(query);
190193
assertEquals(1, audits.size());
191194
Audit audit = audits.get(0);
@@ -214,7 +217,7 @@ void testSaveTrackedAttributeValue() {
214217
attributes.put("attribute", attribute.getUid());
215218
attributes.put("trackedEntity", trackedEntity.getUid());
216219
AuditQuery query = AuditQuery.builder().auditAttributes(attributes).build();
217-
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 0);
220+
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 1);
218221
List<Audit> audits = auditService.getAudits(query);
219222
assertEquals(1, audits.size());
220223
Audit audit = audits.get(0);
@@ -283,7 +286,7 @@ void testSaveAggregateDataValue() throws ConflictException {
283286
AuditAttributes attributes = new AuditAttributes();
284287
attributes.put("dataElement", dataElementA.getUid());
285288
AuditQuery query = AuditQuery.builder().auditAttributes(attributes).build();
286-
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 0);
289+
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 1);
287290
List<Audit> audits = auditService.getAudits(query);
288291
assertEquals(1, audits.size());
289292
Audit audit = audits.get(0);
@@ -308,7 +311,7 @@ void testSaveProgram() throws IOException {
308311
programStage.addDataElement(dataElement, 0);
309312
manager.save(programStage);
310313
AuditQuery query = AuditQuery.builder().uid(Sets.newHashSet(programStage.getUid())).build();
311-
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 0);
314+
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 1);
312315
List<Audit> audits = auditService.getAudits(query);
313316
assertEquals(1, audits.size());
314317
Audit audit = audits.get(0);
@@ -344,7 +347,7 @@ void testSaveDataSet() throws JsonProcessingException {
344347
return null;
345348
});
346349
AuditQuery query = AuditQuery.builder().uid(Sets.newHashSet(dataSet.getUid())).build();
347-
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 0);
350+
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> auditService.countAudits(query) >= 1);
348351
List<Audit> audits = auditService.getAudits(query);
349352
assertEquals(1, audits.size());
350353
Audit audit = audits.get(0);

0 commit comments

Comments
 (0)