This is an automated email from the ASF dual-hosted git repository.

sseifert pushed a commit to branch 
feature/SLING-11916-force-orderd-event-delivery
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-osgi-mock.git

commit 8ed3c94edf1cc8ed56d475454a40274635cb19eb
Author: Stefan Seifert <[email protected]>
AuthorDate: Thu Oct 19 11:20:41 2023 +0200

    SLING-11916 switch to newSingleThreadExecutor to enforce ordered delivery 
of events
    improve readability of error log messages in case of missed events
---
 .../java/org/apache/sling/testing/mock/osgi/MockEventAdmin.java  | 2 +-
 .../org/apache/sling/testing/mock/osgi/MockEventAdminTest.java   | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git 
a/core/src/main/java/org/apache/sling/testing/mock/osgi/MockEventAdmin.java 
b/core/src/main/java/org/apache/sling/testing/mock/osgi/MockEventAdmin.java
index 1f1443e..a5e0814 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/osgi/MockEventAdmin.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/osgi/MockEventAdmin.java
@@ -63,7 +63,7 @@ public final class MockEventAdmin implements EventAdmin {
     @Activate
     protected void activate(ComponentContext componentContext) {
         this.bundleContext = componentContext.getBundleContext();
-        asyncHandler = Executors.newCachedThreadPool();
+        asyncHandler = Executors.newSingleThreadExecutor();
     }
 
     @Deactivate
diff --git 
a/core/src/test/java/org/apache/sling/testing/mock/osgi/MockEventAdminTest.java 
b/core/src/test/java/org/apache/sling/testing/mock/osgi/MockEventAdminTest.java
index 916c4ee..69e070b 100644
--- 
a/core/src/test/java/org/apache/sling/testing/mock/osgi/MockEventAdminTest.java
+++ 
b/core/src/test/java/org/apache/sling/testing/mock/osgi/MockEventAdminTest.java
@@ -19,12 +19,14 @@
 package org.apache.sling.testing.mock.osgi;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.Dictionary;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
 import org.junit.Before;
@@ -120,6 +122,7 @@ public class MockEventAdminTest {
                     && eventHandlerSampleAll.hasExpected()
                     && eventHandlerAll.hasExpected();
         }
+        assertTrue(expectedResult);
     }
 
     private static class DummyEventHandler implements EventHandler {
@@ -143,8 +146,10 @@ public class MockEventAdminTest {
 
         public boolean hasExpected() {
             List<Event> received = getReceivedEvents();
-            if (expectedEvents != null && !Objects.equals(expectedEvents, 
received)) {
-                log.error("missed expectations {} received {}", 
expectedEvents, received);
+            List<String> expecedEventTopics = 
expectedEvents.stream().map(Event::getTopic).collect(Collectors.toList());
+            List<String> receivedEventTopics = 
received.stream().map(Event::getTopic).collect(Collectors.toList());
+            if (expectedEvents != null && !Objects.equals(expecedEventTopics, 
receivedEventTopics)) {
+                log.error("missed expectations {} received {}", 
expecedEventTopics, receivedEventTopics);
                 return false;
             }
             return true;

Reply via email to