From 41e55caf362c84abd673b4ce9e42e72dfbc8b8e6 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Mon, 24 May 2010 19:08:23 +0000 Subject: [PATCH] INT-1148 Added test for independent ThreadLocalChannel instances after changes in https://fisheye.springsource.org/changelog/spring-integration/?cs=3205 --- .../channel/ThreadLocalChannelTests.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/channel/ThreadLocalChannelTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/channel/ThreadLocalChannelTests.java index f2575e3a3f..d3cd1d1dd0 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/channel/ThreadLocalChannelTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/channel/ThreadLocalChannelTests.java @@ -23,6 +23,10 @@ import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import org.junit.Before; import org.junit.Test; @@ -74,4 +78,41 @@ public class ThreadLocalChannelTests { assertNull(channel.receive()); } + @Test + public void multipleThreadLocalChannels() throws Exception { + final ThreadLocalChannel channel1 = new ThreadLocalChannel(); + final ThreadLocalChannel channel2 = new ThreadLocalChannel(); + channel1.send(new StringMessage("test-1.1")); + channel1.send(new StringMessage("test-1.2")); + channel1.send(new StringMessage("test-1.3")); + channel2.send(new StringMessage("test-2.1")); + channel2.send(new StringMessage("test-2.2")); + Executor otherThreadExecutor = Executors.newSingleThreadExecutor(); + final List otherThreadResults = new ArrayList(); + final CountDownLatch latch = new CountDownLatch(2); + otherThreadExecutor.execute(new Runnable() { + public void run() { + otherThreadResults.add(channel1.receive(0)); + latch.countDown(); + } + }); + otherThreadExecutor.execute(new Runnable() { + public void run() { + otherThreadResults.add(channel2.receive(0)); + latch.countDown(); + } + }); + latch.await(1, TimeUnit.SECONDS); + assertEquals(2, otherThreadResults.size()); + assertNull(otherThreadResults.get(0)); + assertNull(otherThreadResults.get(1)); + assertEquals("test-1.1", channel1.receive(0).getPayload()); + assertEquals("test-1.2", channel1.receive(0).getPayload()); + assertEquals("test-1.3", channel1.receive(0).getPayload()); + assertNull(channel1.receive(0)); + assertEquals("test-2.1", channel2.receive(0).getPayload()); + assertEquals("test-2.2", channel2.receive(0).getPayload()); + assertNull(channel2.receive(0)); + } + }