Browse Source

Add test to demonstrate 4.2 not affected by SPR-13185

Issue: SPR-13185
pull/835/head
Rossen Stoyanchev 9 years ago
parent
commit
16cbfcfd2f
  1. 23
      spring-messaging/src/test/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistryTests.java

23
spring-messaging/src/test/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistryTests.java

@ -20,6 +20,7 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
@ -404,7 +405,6 @@ public class DefaultSubscriptionRegistryTests {
// SPR-12665 // SPR-12665
@Test @Test
@SuppressWarnings("rawtypes")
public void findSubscriptionsReturnsMapSafeToIterate() throws Exception { public void findSubscriptionsReturnsMapSafeToIterate() throws Exception {
this.registry.registerSubscription(subscribeMessage("sess1", "1", "/foo")); this.registry.registerSubscription(subscribeMessage("sess1", "1", "/foo"));
@ -414,7 +414,7 @@ public class DefaultSubscriptionRegistryTests {
assertNotNull(subscriptions); assertNotNull(subscriptions);
assertEquals(2, subscriptions.size()); assertEquals(2, subscriptions.size());
Iterator iterator = subscriptions.entrySet().iterator(); Iterator<Map.Entry<String, List<String>>> iterator = subscriptions.entrySet().iterator();
iterator.next(); iterator.next();
this.registry.registerSubscription(subscribeMessage("sess3", "1", "/foo")); this.registry.registerSubscription(subscribeMessage("sess3", "1", "/foo"));
@ -423,6 +423,25 @@ public class DefaultSubscriptionRegistryTests {
// no ConcurrentModificationException // no ConcurrentModificationException
} }
@Test
public void findSubscriptionsReturnsMapSafeToIterateIncludingValues() throws Exception {
this.registry.registerSubscription(subscribeMessage("sess1", "1", "/foo"));
this.registry.registerSubscription(subscribeMessage("sess1", "2", "/foo"));
MultiValueMap<String, String> allSubscriptions = this.registry.findSubscriptions(createMessage("/foo"));
assertNotNull(allSubscriptions);
assertEquals(1, allSubscriptions.size());
Iterator<String> iteratorValues = allSubscriptions.get("sess1").iterator();
iteratorValues.next();
this.registry.unregisterSubscription(unsubscribeMessage("sess1", "2"));
iteratorValues.next();
// no ConcurrentModificationException
}
@Test @Test
public void findSubscriptionsWithConcurrentUnregisterAllSubscriptions() throws Exception { public void findSubscriptionsWithConcurrentUnregisterAllSubscriptions() throws Exception {

Loading…
Cancel
Save