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;
