4545import java .util .Properties ;
4646import java .util .concurrent .TimeUnit ;
4747import java .util .stream .Stream ;
48+ import org .hisp .dhis .common .CodeGenerator ;
4849import org .hisp .dhis .common .IdentifiableObjectManager ;
4950import org .hisp .dhis .common .UID ;
5051import 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