--- jsr166/src/test/tck/AbstractExecutorServiceTest.java 2015/10/05 22:54:45 1.41 +++ jsr166/src/test/tck/AbstractExecutorServiceTest.java 2017/07/17 22:27:30 1.48 @@ -11,6 +11,7 @@ import static java.util.concurrent.TimeU import java.security.PrivilegedAction; import java.security.PrivilegedExceptionAction; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.concurrent.AbstractExecutorService; @@ -165,25 +166,13 @@ public class AbstractExecutorServiceTest } /** - * execute(null runnable) throws NPE + * Submitting null tasks throws NullPointerException */ - public void testExecuteNullRunnable() { - ExecutorService e = new DirectExecutorService(); - try { - e.submit((Runnable) null); - shouldThrow(); - } catch (NullPointerException success) {} - } - - /** - * submit(null callable) throws NPE - */ - public void testSubmitNullCallable() { - ExecutorService e = new DirectExecutorService(); - try { - e.submit((Callable) null); - shouldThrow(); - } catch (NullPointerException success) {} + public void testNullTaskSubmission() { + final ExecutorService e = new DirectExecutorService(); + try (PoolCleaner cleaner = cleaner(e)) { + assertNullTaskSubmissionThrowsNullPointerException(e); + } } /** @@ -249,13 +238,15 @@ public class AbstractExecutorServiceTest } /** - * invokeAny(empty collection) throws IAE + * invokeAny(empty collection) throws IllegalArgumentException */ public void testInvokeAny2() throws Exception { final ExecutorService e = new DirectExecutorService(); + final Collection> emptyCollection + = Collections.emptyList(); try (PoolCleaner cleaner = cleaner(e)) { try { - e.invokeAny(new ArrayList>()); + e.invokeAny(emptyCollection); shouldThrow(); } catch (IllegalArgumentException success) {} } @@ -267,7 +258,7 @@ public class AbstractExecutorServiceTest public void testInvokeAny3() throws Exception { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new Callable() { public Long call() { throw new ArithmeticException(); }}); l.add(null); @@ -284,7 +275,7 @@ public class AbstractExecutorServiceTest public void testInvokeAny4() throws InterruptedException { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new NPETask()); try { e.invokeAny(l); @@ -301,7 +292,7 @@ public class AbstractExecutorServiceTest public void testInvokeAny5() throws Exception { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new StringTask()); l.add(new StringTask()); String result = e.invokeAny(l); @@ -323,12 +314,14 @@ public class AbstractExecutorServiceTest } /** - * invokeAll(empty collection) returns empty collection + * invokeAll(empty collection) returns empty list */ public void testInvokeAll2() throws InterruptedException { final ExecutorService e = new DirectExecutorService(); + final Collection> emptyCollection + = Collections.emptyList(); try (PoolCleaner cleaner = cleaner(e)) { - List> r = e.invokeAll(new ArrayList>()); + List> r = e.invokeAll(emptyCollection); assertTrue(r.isEmpty()); } } @@ -339,7 +332,7 @@ public class AbstractExecutorServiceTest public void testInvokeAll3() throws InterruptedException { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new StringTask()); l.add(null); try { @@ -355,7 +348,7 @@ public class AbstractExecutorServiceTest public void testInvokeAll4() throws Exception { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new NPETask()); List> futures = e.invokeAll(l); assertEquals(1, futures.size()); @@ -374,7 +367,7 @@ public class AbstractExecutorServiceTest public void testInvokeAll5() throws Exception { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new StringTask()); l.add(new StringTask()); List> futures = e.invokeAll(l); @@ -391,36 +384,37 @@ public class AbstractExecutorServiceTest final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { try { - e.invokeAny(null, MEDIUM_DELAY_MS, MILLISECONDS); + e.invokeAny(null, randomTimeout(), randomTimeUnit()); shouldThrow(); } catch (NullPointerException success) {} } } /** - * timed invokeAny(null time unit) throws NPE + * timed invokeAny(null time unit) throws NullPointerException */ public void testTimedInvokeAnyNullTimeUnit() throws Exception { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new StringTask()); try { - e.invokeAny(l, MEDIUM_DELAY_MS, null); + e.invokeAny(l, randomTimeout(), null); shouldThrow(); } catch (NullPointerException success) {} } } /** - * timed invokeAny(empty collection) throws IAE + * timed invokeAny(empty collection) throws IllegalArgumentException */ public void testTimedInvokeAny2() throws Exception { final ExecutorService e = new DirectExecutorService(); + final Collection> emptyCollection + = Collections.emptyList(); try (PoolCleaner cleaner = cleaner(e)) { try { - e.invokeAny(new ArrayList>(), - MEDIUM_DELAY_MS, MILLISECONDS); + e.invokeAny(emptyCollection, randomTimeout(), randomTimeUnit()); shouldThrow(); } catch (IllegalArgumentException success) {} } @@ -432,12 +426,12 @@ public class AbstractExecutorServiceTest public void testTimedInvokeAny3() throws Exception { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new Callable() { public Long call() { throw new ArithmeticException(); }}); l.add(null); try { - e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS); + e.invokeAny(l, randomTimeout(), randomTimeUnit()); shouldThrow(); } catch (NullPointerException success) {} } @@ -449,14 +443,16 @@ public class AbstractExecutorServiceTest public void testTimedInvokeAny4() throws Exception { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + long startTime = System.nanoTime(); + List> l = new ArrayList<>(); l.add(new NPETask()); try { - e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS); + e.invokeAny(l, LONG_DELAY_MS, MILLISECONDS); shouldThrow(); } catch (ExecutionException success) { assertTrue(success.getCause() instanceof NullPointerException); } + assertTrue(millisElapsedSince(startTime) < LONG_DELAY_MS); } } @@ -466,22 +462,24 @@ public class AbstractExecutorServiceTest public void testTimedInvokeAny5() throws Exception { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + long startTime = System.nanoTime(); + List> l = new ArrayList<>(); l.add(new StringTask()); l.add(new StringTask()); - String result = e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS); + String result = e.invokeAny(l, LONG_DELAY_MS, MILLISECONDS); assertSame(TEST_STRING, result); + assertTrue(millisElapsedSince(startTime) < LONG_DELAY_MS); } } /** - * timed invokeAll(null) throws NPE + * timed invokeAll(null) throws NullPointerException */ public void testTimedInvokeAll1() throws InterruptedException { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { try { - e.invokeAll(null, MEDIUM_DELAY_MS, MILLISECONDS); + e.invokeAll(null, randomTimeout(), randomTimeUnit()); shouldThrow(); } catch (NullPointerException success) {} } @@ -493,37 +491,40 @@ public class AbstractExecutorServiceTest public void testTimedInvokeAllNullTimeUnit() throws InterruptedException { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new StringTask()); try { - e.invokeAll(l, MEDIUM_DELAY_MS, null); + e.invokeAll(l, randomTimeout(), null); shouldThrow(); } catch (NullPointerException success) {} } } /** - * timed invokeAll(empty collection) returns empty collection + * timed invokeAll(empty collection) returns empty list */ public void testTimedInvokeAll2() throws InterruptedException { final ExecutorService e = new DirectExecutorService(); + final Collection> emptyCollection + = Collections.emptyList(); try (PoolCleaner cleaner = cleaner(e)) { - List> r = e.invokeAll(new ArrayList>(), MEDIUM_DELAY_MS, MILLISECONDS); + List> r = + e.invokeAll(emptyCollection, randomTimeout(), randomTimeUnit()); assertTrue(r.isEmpty()); } } /** - * timed invokeAll(c) throws NPE if c has null elements + * timed invokeAll(c) throws NullPointerException if c has null elements */ public void testTimedInvokeAll3() throws InterruptedException { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new StringTask()); l.add(null); try { - e.invokeAll(l, MEDIUM_DELAY_MS, MILLISECONDS); + e.invokeAll(l, randomTimeout(), randomTimeUnit()); shouldThrow(); } catch (NullPointerException success) {} } @@ -535,10 +536,10 @@ public class AbstractExecutorServiceTest public void testTimedInvokeAll4() throws Exception { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new NPETask()); List> futures = - e.invokeAll(l, MEDIUM_DELAY_MS, MILLISECONDS); + e.invokeAll(l, LONG_DELAY_MS, MILLISECONDS); assertEquals(1, futures.size()); try { futures.get(0).get(); @@ -555,7 +556,7 @@ public class AbstractExecutorServiceTest public void testTimedInvokeAll5() throws Exception { final ExecutorService e = new DirectExecutorService(); try (PoolCleaner cleaner = cleaner(e)) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); l.add(new StringTask()); l.add(new StringTask()); List> futures =