Skip to content

Commit 782566a

Browse files
author
jodzga
committed
Added test for timeout with many tasks on queue
1 parent 50b3db6 commit 782566a

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

test/com/linkedin/parseq/TestTasks.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,13 @@
1919
import com.linkedin.parseq.promise.Promise;
2020
import com.linkedin.parseq.promise.PromiseListener;
2121
import com.linkedin.parseq.promise.Promises;
22+
import com.linkedin.parseq.trace.codec.json.JsonTraceCodec;
23+
2224
import org.testng.annotations.Test;
2325

26+
import java.io.IOException;
27+
import java.util.ArrayList;
28+
import java.util.List;
2429
import java.util.concurrent.Callable;
2530
import java.util.concurrent.TimeUnit;
2631
import java.util.concurrent.TimeoutException;
@@ -171,6 +176,35 @@ public String call() throws Exception
171176
assertEquals(error, timeoutTask.getError());
172177
}
173178

179+
@Test
180+
public void testTimeoutTaskWithoutTimeoutWhenManyTasksAreOnQueeu() throws InterruptedException, IOException
181+
{
182+
final String value = "value";
183+
184+
List<Task<String>> tasks = new ArrayList<Task<String>>();
185+
for (int i = 0; i < 50; i++) {
186+
Task<String> t = Tasks.callable("task", new Callable<String>() {
187+
@Override
188+
public String call() throws Exception {
189+
Thread.sleep(1); //this task is "busy" for 1 millisecond
190+
return value;
191+
}
192+
});
193+
tasks.add(Tasks.timeoutWithError(50, TimeUnit.MILLISECONDS, t));
194+
}
195+
196+
final Task<?> timeoutTask = Tasks.par(tasks);
197+
198+
getEngine().run(timeoutTask);
199+
200+
assertTrue(timeoutTask.await(5, TimeUnit.SECONDS));
201+
202+
System.out.println(new JsonTraceCodec().encode(timeoutTask.getTrace()));
203+
204+
//tasks should not time out
205+
assertEquals(false, timeoutTask.isFailed());
206+
}
207+
174208
@Test
175209
public void testSetPriorityBelowMinValue()
176210
{

0 commit comments

Comments
 (0)