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:
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user