1 package com.atlassian.sal.core.executor;
2
3 import com.atlassian.sal.api.executor.ThreadLocalContextManager;
4 import com.google.common.base.Throwables;
5 import org.junit.Test;
6
7 import java.util.concurrent.Callable;
8
9 import static org.junit.Assert.assertNotNull;
10
11 public class TestThreadLocalDelegateCallable {
12
13 @Test
14 public void testRun() throws InterruptedException {
15 final ThreadLocalContextManager<Object> manager = new StubThreadLocalContextManager();
16 Callable<Void> delegate = new Callable<Void>() {
17 public Void call() {
18 assertNotNull(manager.getThreadLocalContext());
19 return null;
20 }
21 };
22
23 manager.setThreadLocalContext(new Object());
24 final Callable callable = new ThreadLocalDelegateCallable<Object, Void>(manager, delegate);
25 Thread t = new Thread(new Runnable() {
26
27 public void run() {
28 try {
29 callable.call();
30 } catch (Exception e) {
31 throw Throwables.propagate(e);
32 }
33 }
34 });
35 t.start();
36 t.join(10000);
37 assertNotNull(manager.getThreadLocalContext());
38 }
39 }