package com.linkedin.parseq.trace; import org.testng.annotations.Test; import com.linkedin.parseq.BaseEngineTest; import com.linkedin.parseq.Task; import com.linkedin.parseq.promise.Promises; import com.linkedin.parseq.promise.SettablePromise; /** * @author Jaroslaw Odzga (jodzga@linkedin.com) */ public class TestFusionTaskTrace extends BaseEngineTest { @Test public void testMap0() { Task<Integer> task = Task.value("value", 1); runAndWait("FusionTaskTraceTest.testMap0", task); } @Test public void testMap1() { Task<Integer> task = Task.value("value", 1).map("m1", x -> x); runAndWait("FusionTaskTraceTest.testMap1", task); } @Test public void testMap2() { Task<Integer> task = Task.value("value", 1).map("m1", x -> x).map("m2", x -> x); runAndWait("FusionTaskTraceTest.testMap2", task); } @Test public void testMap3() { Task<Integer> task = Task.value("value", 1).map("m1", x -> x).map("m2", x -> x).map("m3", x -> x); runAndWait("FusionTaskTraceTest.testMap3", task); } @Test public void testMap4() { Task<Integer> task = Task.value("value", 1).map("m1", x -> x).map("m2", x -> x).map("m3", x -> x).map("m4", x -> x); runAndWait("FusionTaskTraceTest.testMap4", task); } @Test public void testMapFork() { Task<Integer> base = Task.value("value", 1); Task<Integer> task = Task.par(base.map("m1", x -> x), base.map("m2", x -> x)) .map("sum", (x, y) -> x + y); runAndWait("FusionTaskTraceTest.testMapFork", task); } @Test public void testAsyncMap0() { Task<Integer> task = Task.async("value", () -> { SettablePromise<Integer> p = Promises.settable(); p.done(1); return p; }); runAndWait("FusionTaskTraceTest.testAsyncMap0", task); } @Test public void testAsyncMap1() { Task<Integer> task = Task.async("value", () -> { SettablePromise<Integer> p = Promises.settable(); p.done(1); return p; }).map("m1", x -> x); runAndWait("FusionTaskTraceTest.testAsyncMa1p", task); } @Test public void testAsync2() { Task<Integer> task = Task.async("value", () -> { SettablePromise<Integer> p = Promises.settable(); p.done(1); return p; }).map("m1", x -> x).map("m2", x -> x); runAndWait("FusionTaskTraceTest.testAsyncMap2", task); } @Test public void testAsync3() { Task<Integer> task = Task.async("value", () -> { SettablePromise<Integer> p = Promises.settable(); p.done(1); return p; }).map("m1", x -> x).map("m2", x -> x).map("m3", x -> x); runAndWait("FusionTaskTraceTest.testAsyncMap3", task); } @Test public void testAsync4() { Task<Integer> task = Task.async("value", () -> { SettablePromise<Integer> p = Promises.settable(); p.done(1); return p; }).map("m1", x -> x).map("m2", x -> x).map("m3", x -> x).map("m4", x -> x); runAndWait("FusionTaskTraceTest.testAsyncMap4", task); } @Test public void testAsyncFork() { Task<Integer> base = Task.async("value", () -> { SettablePromise<Integer> p = Promises.settable(); p.done(1); return p; }); Task<Integer> task = Task.par(base.map("m1", x -> x), base.map("m2", x -> x)) .map("sum", (x, y) -> x + y); runAndWait("FusionTaskTraceTest.testAsyncFork", task); } }