package org.jooby.issues; import static org.junit.Assert.assertTrue; import org.jooby.Deferred; import org.jooby.exec.Exec; import org.jooby.test.ServerFeature; import org.junit.Test; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigValueFactory; public class Issue488d extends ServerFeature { { use(ConfigFactory.empty() .withValue("executors.fj", ConfigValueFactory.fromAnyRef("forkjoin = 2")) .withValue("executors.cached", ConfigValueFactory.fromAnyRef("cached"))); executor("fj"); use(new Exec()); get("/488", req -> new Deferred(deferred -> { deferred.resolve(Thread.currentThread().getName()); })); get("/488/cached", req -> new Deferred("cached", deferred -> { deferred.resolve(Thread.currentThread().getName()); })); get("/488/fj", promise(deferred -> { deferred.resolve(Thread.currentThread().getName()); })); get("/488/local/cached", promise("cached", (req, deferred) -> { deferred.resolve(Thread.currentThread().getName()); })); get("/488/local/fj", promise("fj", deferred -> { deferred.resolve(Thread.currentThread().getName()); })); } @Test public void deferredOnGloablOrLocalExecutor() throws Exception { request() .get("/488") .expect(rsp -> { assertTrue(rsp.startsWith("forkjoin")); }); request() .get("/488/cached") .expect(rsp -> { assertTrue(rsp.startsWith("cached")); }); request() .get("/488/fj") .expect(rsp -> { assertTrue(rsp.startsWith("forkjoin")); }); request() .get("/488/local/cached") .expect(rsp -> { assertTrue(rsp.startsWith("cached")); }); request() .get("/488/local/fj") .expect(rsp -> { assertTrue(rsp.startsWith("forkjoin")); }); } }