INT-1148 Added test for independent ThreadLocalChannel instances after changes in https://fisheye.springsource.org/changelog/spring-integration/?cs=3205

This commit is contained in:
Mark Fisher
2010-05-24 19:08:23 +00:00
parent d9123c968d
commit 41e55caf36

View File

@@ -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<Object> otherThreadResults = new ArrayList<Object>();
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));
}
}