|
19 | 19 | import com.linkedin.parseq.promise.Promise;
|
20 | 20 | import com.linkedin.parseq.promise.PromiseListener;
|
21 | 21 | import com.linkedin.parseq.promise.Promises;
|
| 22 | +import com.linkedin.parseq.trace.codec.json.JsonTraceCodec; |
| 23 | + |
22 | 24 | import org.testng.annotations.Test;
|
23 | 25 |
|
| 26 | +import java.io.IOException; |
| 27 | +import java.util.ArrayList; |
| 28 | +import java.util.List; |
24 | 29 | import java.util.concurrent.Callable;
|
25 | 30 | import java.util.concurrent.TimeUnit;
|
26 | 31 | import java.util.concurrent.TimeoutException;
|
@@ -171,6 +176,35 @@ public String call() throws Exception
|
171 | 176 | assertEquals(error, timeoutTask.getError());
|
172 | 177 | }
|
173 | 178 |
|
| 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 | + |
174 | 208 | @Test
|
175 | 209 | public void testSetPriorityBelowMinValue()
|
176 | 210 | {
|
|
0 commit comments