This is an automated email from the ASF dual-hosted git repository. timothyjward pushed a commit to branch feature/v1.1 in repository https://gitbox.apache.org/repos/asf/aries-typedevent.git
commit 4bb733d445f4811116f924e2b0c2adfdb476294b Merge: ae53309 206a419 Author: Tim Ward <[email protected]> AuthorDate: Tue Apr 9 17:55:03 2024 +0100 Merge branch 'main' into feature/v1.1 Pick up the cherry-picked fixes for wildcard listener management that are now in main Signed-off-by: Tim Ward <[email protected]> .../bus/osgi/EventDeliveryIntegrationTest.java | 50 ++++++++++++++++++++++ org.apache.aries.typedevent.bus/test.bndrun | 2 +- .../test.bndrun | 1 + 3 files changed, 52 insertions(+), 1 deletion(-) diff --cc org.apache.aries.typedevent.bus/src/test/java/org/apache/aries/typedevent/bus/osgi/EventDeliveryIntegrationTest.java index d77a6a6,96d0b65..59dbb0d --- a/org.apache.aries.typedevent.bus/src/test/java/org/apache/aries/typedevent/bus/osgi/EventDeliveryIntegrationTest.java +++ b/org.apache.aries.typedevent.bus/src/test/java/org/apache/aries/typedevent/bus/osgi/EventDeliveryIntegrationTest.java @@@ -274,42 -287,42 +274,92 @@@ public class EventDeliveryIntegrationTe TestEvent event = new TestEvent(); event.message = "boo"; + Dictionary<String, Object> props = new Hashtable<>(); + props.put(TYPED_EVENT_TOPICS, "foo/bar/*"); + + regs.add(context.registerService(TypedEventHandler.class, typedEventHandler, props)); + + regs.add(context.registerService(UntypedEventHandler.class, untypedEventHandler, props)); + + eventBus.deliver("foo/bar/foobar", event); + + Mockito.verify(typedEventHandler, Mockito.timeout(1000)).notify( + Mockito.eq("foo/bar/foobar"), Mockito.argThat(isTestEventWithMessage("boo"))); + + Mockito.verify(untypedEventHandler, Mockito.timeout(1000)).notifyUntyped( + Mockito.eq("foo/bar/foobar"), Mockito.argThat(isUntypedTestEventWithMessage("boo"))); + + Mockito.clearInvocations(typedEventHandler, untypedEventHandler); + + props.put(TYPED_EVENT_TOPICS, "foo/bar/foobar/*"); + + regs.forEach(s -> s.setProperties(props)); + + eventBus.deliver("foo/bar/foobar", event); + + Mockito.verify(typedEventHandler, Mockito.after(1000).never()).notify( + Mockito.eq("foo/bar/foobar"), Mockito.any()); + Mockito.verify(untypedEventHandler, Mockito.after(1000).never()).notifyUntyped( + Mockito.eq("foo/bar/foobar"), Mockito.any()); + + eventBus.deliver("foo/bar/foobar/fizzbuzz", event); + + Mockito.verify(typedEventHandler, Mockito.timeout(1000)).notify( + Mockito.eq("foo/bar/foobar/fizzbuzz"), Mockito.argThat(isTestEventWithMessage("boo"))); + + Mockito.verify(untypedEventHandler, Mockito.timeout(1000)).notifyUntyped( + Mockito.eq("foo/bar/foobar/fizzbuzz"), Mockito.argThat(isUntypedTestEventWithMessage("boo"))); + + } ++ ++ /** ++ * Tests that events are delivered to untyped Event Handlers ++ * based on topic ++ * ++ * @throws InterruptedException ++ */ ++ @Test ++ public void testEventReceivingUpdateSingleLevelWildcardTopic() throws InterruptedException { ++ ++ TestEvent event = new TestEvent(); ++ event.message = "boo"; ++ + Dictionary<String, Object> props = new Hashtable<>(); + props.put(TYPED_EVENT_TOPICS, "foo/+/foobar"); + + regs.add(context.registerService(TypedEventHandler.class, typedEventHandler, props)); + + regs.add(context.registerService(UntypedEventHandler.class, untypedEventHandler, props)); + + eventBus.deliver("foo/bar/foobar", event); + + Mockito.verify(typedEventHandler, Mockito.timeout(1000)).notify( + Mockito.eq("foo/bar/foobar"), Mockito.argThat(isTestEventWithMessage("boo"))); + + Mockito.verify(untypedEventHandler, Mockito.timeout(1000)).notifyUntyped( + Mockito.eq("foo/bar/foobar"), Mockito.argThat(isUntypedTestEventWithMessage("boo"))); + + Mockito.clearInvocations(typedEventHandler, untypedEventHandler); + + props.put(TYPED_EVENT_TOPICS, "foo/bar/foobar/+"); + + regs.forEach(s -> s.setProperties(props)); + + eventBus.deliver("foo/bar/foobar", event); + + Mockito.verify(typedEventHandler, Mockito.after(1000).never()).notify( + Mockito.eq("foo/bar/foobar"), Mockito.any()); + Mockito.verify(untypedEventHandler, Mockito.after(1000).never()).notifyUntyped( + Mockito.eq("foo/bar/foobar"), Mockito.any()); + + eventBus.deliver("foo/bar/foobar/fizzbuzz", event); + + Mockito.verify(typedEventHandler, Mockito.timeout(1000)).notify( + Mockito.eq("foo/bar/foobar/fizzbuzz"), Mockito.argThat(isTestEventWithMessage("boo"))); + + Mockito.verify(untypedEventHandler, Mockito.timeout(1000)).notifyUntyped( + Mockito.eq("foo/bar/foobar/fizzbuzz"), Mockito.argThat(isUntypedTestEventWithMessage("boo"))); + + } } diff --cc org.apache.aries.typedevent.bus/test.bndrun index 86dda27,08314a8..7f3c04b --- a/org.apache.aries.typedevent.bus/test.bndrun +++ b/org.apache.aries.typedevent.bus/test.bndrun @@@ -53,7 -55,4 +53,7 @@@ ch.qos.logback.core;version='[1.2.3,1.2.4)',\ org.apache.aries.component-dsl.component-dsl;version='[1.2.2,1.2.3)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - slf4j.api;version='[1.7.30,1.7.31)' + slf4j.api;version='[1.7.30,1.7.31)',\ + org.mockito.junit-jupiter;version='[5.5.0,5.5.1)',\ + org.osgi.util.promise;version='[1.1.0,1.1.1)',\ - org.osgi.util.pushstream;version='[1.0.0,1.0.1)' ++ org.osgi.util.pushstream;version='[1.0.0,1.0.1)' diff --cc org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/test.bndrun index 2cf83af,4a55dc9..5ea6f33 --- a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/test.bndrun +++ b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/test.bndrun @@@ -52,7 -56,4 +52,8 @@@ org.objenesis;version='[3.3.0,3.3.1)',\ org.opentest4j;version='[1.3.0,1.3.1)',\ org.osgi.test.common;version='[1.2.1,1.2.2)',\ - org.osgi.test.junit5;version='[1.2.1,1.2.2)' + org.osgi.test.junit5;version='[1.2.1,1.2.2)',\ + org.apache.aries.typedevent.remote.api;version='[0.0.2,0.0.3)',\ + org.osgi.util.promise;version='[1.1.0,1.1.1)',\ + org.osgi.util.pushstream;version='[1.0.0,1.0.1)' ++
