210 |
|
final CountDownLatch done = new CountDownLatch(cycles); |
211 |
|
Runnable task = new CheckedRunnable() { |
212 |
|
public void realRun() { done.countDown(); }}; |
213 |
< |
ScheduledFuture h = |
213 |
> |
ScheduledFuture periodicTask = |
214 |
|
p.scheduleAtFixedRate(task, 0, delay, MILLISECONDS); |
215 |
|
await(done); |
216 |
< |
h.cancel(true); |
217 |
< |
double normalizedTime = |
216 |
> |
periodicTask.cancel(true); |
217 |
> |
double elapsedDelays = |
218 |
|
(double) millisElapsedSince(startTime) / delay; |
219 |
< |
if (normalizedTime >= cycles - 1 && |
220 |
< |
normalizedTime <= cycles) |
219 |
> |
if (elapsedDelays >= cycles - 1 && |
220 |
> |
elapsedDelays <= cycles) |
221 |
|
return; |
222 |
|
} |
223 |
< |
throw new AssertionError("unexpected execution rate"); |
223 |
> |
fail("unexpected execution rate"); |
224 |
|
} |
225 |
|
} |
226 |
|
|
236 |
|
final CountDownLatch done = new CountDownLatch(cycles); |
237 |
|
Runnable task = new CheckedRunnable() { |
238 |
|
public void realRun() { done.countDown(); }}; |
239 |
< |
ScheduledFuture h = |
239 |
> |
ScheduledFuture periodicTask = |
240 |
|
p.scheduleWithFixedDelay(task, 0, delay, MILLISECONDS); |
241 |
|
await(done); |
242 |
< |
h.cancel(true); |
243 |
< |
double normalizedTime = |
242 |
> |
periodicTask.cancel(true); |
243 |
> |
double elapsedDelays = |
244 |
|
(double) millisElapsedSince(startTime) / delay; |
245 |
< |
if (normalizedTime >= cycles - 1 && |
246 |
< |
normalizedTime <= cycles) |
245 |
> |
if (elapsedDelays >= cycles - 1 && |
246 |
> |
elapsedDelays <= cycles) |
247 |
|
return; |
248 |
|
} |
249 |
< |
throw new AssertionError("unexpected execution rate"); |
249 |
> |
fail("unexpected execution rate"); |
250 |
|
} |
251 |
|
} |
252 |
|
|
1097 |
|
public void testTimedInvokeAny4() throws Exception { |
1098 |
|
final ExecutorService e = new CustomExecutor(2); |
1099 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1100 |
+ |
long startTime = System.nanoTime(); |
1101 |
|
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1102 |
|
l.add(new NPETask()); |
1103 |
|
try { |
1104 |
< |
e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS); |
1104 |
> |
e.invokeAny(l, LONG_DELAY_MS, MILLISECONDS); |
1105 |
|
shouldThrow(); |
1106 |
|
} catch (ExecutionException success) { |
1107 |
|
assertTrue(success.getCause() instanceof NullPointerException); |
1108 |
|
} |
1109 |
+ |
assertTrue(millisElapsedSince(startTime) < LONG_DELAY_MS); |
1110 |
|
} |
1111 |
|
} |
1112 |
|
|
1116 |
|
public void testTimedInvokeAny5() throws Exception { |
1117 |
|
final ExecutorService e = new CustomExecutor(2); |
1118 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1119 |
+ |
long startTime = System.nanoTime(); |
1120 |
|
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1121 |
|
l.add(new StringTask()); |
1122 |
|
l.add(new StringTask()); |
1123 |
< |
String result = e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS); |
1123 |
> |
String result = e.invokeAny(l, LONG_DELAY_MS, MILLISECONDS); |
1124 |
|
assertSame(TEST_STRING, result); |
1125 |
+ |
assertTrue(millisElapsedSince(startTime) < LONG_DELAY_MS); |
1126 |
|
} |
1127 |
|
} |
1128 |
|
|