ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/ThreadPoolExecutorTest.java
(Generate patch)

Comparing jsr166/src/test/tck/ThreadPoolExecutorTest.java (file contents):
Revision 1.97 by jsr166, Sun Oct 4 06:45:29 2015 UTC vs.
Revision 1.98 by jsr166, Sun Oct 4 07:23:20 2015 UTC

# Line 1074 | Line 1074 | public class ThreadPoolExecutorTest exte
1074              new ThreadPoolExecutor(1, 1,
1075                                     LONG_DELAY_MS, MILLISECONDS,
1076                                     new ArrayBlockingQueue<Runnable>(1));
1077 <        final CountDownLatch done = new CountDownLatch(1);
1078 <        try {
1077 >        try (PoolCleaner cleaner = cleaner(p)) {
1078 >            final CountDownLatch done = new CountDownLatch(1);
1079              Runnable task = new CheckedRunnable() {
1080                  public void realRun() throws InterruptedException {
1081                      done.await();
# Line 1089 | Line 1089 | public class ThreadPoolExecutorTest exte
1089                  } catch (RejectedExecutionException success) {}
1090                  assertTrue(p.getTaskCount() <= 2);
1091              }
1092        } finally {
1092              done.countDown();
1094            joinPool(p);
1093          }
1094      }
1095  
# Line 1103 | Line 1101 | public class ThreadPoolExecutorTest exte
1101              new ThreadPoolExecutor(1, 1,
1102                                     LONG_DELAY_MS, MILLISECONDS,
1103                                     new ArrayBlockingQueue<Runnable>(1));
1104 <        final CountDownLatch done = new CountDownLatch(1);
1105 <        try {
1104 >        try (PoolCleaner cleaner = cleaner(p)) {
1105 >            final CountDownLatch done = new CountDownLatch(1);
1106              Runnable task = new CheckedRunnable() {
1107                  public void realRun() throws InterruptedException {
1108                      done.await();
# Line 1118 | Line 1116 | public class ThreadPoolExecutorTest exte
1116                  } catch (RejectedExecutionException success) {}
1117                  assertTrue(p.getTaskCount() <= 2);
1118              }
1121        } finally {
1119              done.countDown();
1123            joinPool(p);
1120          }
1121      }
1122  
# Line 1322 | Line 1318 | public class ThreadPoolExecutorTest exte
1318              new ThreadPoolExecutor(2, 3,
1319                                     LONG_DELAY_MS, MILLISECONDS,
1320                                     new ArrayBlockingQueue<Runnable>(10));
1321 <        try {
1322 <            p.setMaximumPoolSize(1);
1323 <            shouldThrow();
1324 <        } catch (IllegalArgumentException success) {
1325 <        } finally {
1330 <            try { p.shutdown(); } catch (SecurityException ok) { return; }
1321 >        try (PoolCleaner cleaner = cleaner(p)) {
1322 >            try {
1323 >                p.setMaximumPoolSize(1);
1324 >                shouldThrow();
1325 >            } catch (IllegalArgumentException success) {}
1326          }
1332        joinPool(p);
1327      }
1328  
1329      /**
# Line 1341 | Line 1335 | public class ThreadPoolExecutorTest exte
1335              new ThreadPoolExecutor(2, 3,
1336                                     LONG_DELAY_MS, MILLISECONDS,
1337                                     new ArrayBlockingQueue<Runnable>(10));
1338 <        try {
1339 <            p.setMaximumPoolSize(-1);
1340 <            shouldThrow();
1341 <        } catch (IllegalArgumentException success) {
1342 <        } finally {
1349 <            try { p.shutdown(); } catch (SecurityException ok) { return; }
1338 >        try (PoolCleaner cleaner = cleaner(p)) {
1339 >            try {
1340 >                p.setMaximumPoolSize(-1);
1341 >                shouldThrow();
1342 >            } catch (IllegalArgumentException success) {}
1343          }
1351        joinPool(p);
1344      }
1345  
1346      /**
# Line 1360 | Line 1352 | public class ThreadPoolExecutorTest exte
1352              new ThreadPoolExecutor(1, 1,
1353                                     LONG_DELAY_MS, MILLISECONDS,
1354                                     new ArrayBlockingQueue<Runnable>(10));
1355 <        for (int s = 1; s < 5; s++) {
1356 <            p.setMaximumPoolSize(s);
1357 <            p.setCorePoolSize(s);
1358 <            try {
1359 <                p.setMaximumPoolSize(s - 1);
1360 <                shouldThrow();
1361 <            } catch (IllegalArgumentException success) {}
1362 <            assertEquals(s, p.getCorePoolSize());
1363 <            assertEquals(s, p.getMaximumPoolSize());
1364 <            try {
1365 <                p.setCorePoolSize(s + 1);
1366 <                shouldThrow();
1367 <            } catch (IllegalArgumentException success) {}
1368 <            assertEquals(s, p.getCorePoolSize());
1369 <            assertEquals(s, p.getMaximumPoolSize());
1355 >        try (PoolCleaner cleaner = cleaner(p)) {
1356 >            for (int s = 1; s < 5; s++) {
1357 >                p.setMaximumPoolSize(s);
1358 >                p.setCorePoolSize(s);
1359 >                try {
1360 >                    p.setMaximumPoolSize(s - 1);
1361 >                    shouldThrow();
1362 >                } catch (IllegalArgumentException success) {}
1363 >                assertEquals(s, p.getCorePoolSize());
1364 >                assertEquals(s, p.getMaximumPoolSize());
1365 >                try {
1366 >                    p.setCorePoolSize(s + 1);
1367 >                    shouldThrow();
1368 >                } catch (IllegalArgumentException success) {}
1369 >                assertEquals(s, p.getCorePoolSize());
1370 >                assertEquals(s, p.getMaximumPoolSize());
1371 >            }
1372          }
1379        joinPool(p);
1373      }
1374  
1375      /**
# Line 1388 | Line 1381 | public class ThreadPoolExecutorTest exte
1381              new ThreadPoolExecutor(2, 3,
1382                                     LONG_DELAY_MS, MILLISECONDS,
1383                                     new ArrayBlockingQueue<Runnable>(10));
1384 <        try {
1385 <            p.setKeepAliveTime(-1,MILLISECONDS);
1386 <            shouldThrow();
1387 <        } catch (IllegalArgumentException success) {
1388 <        } finally {
1396 <            try { p.shutdown(); } catch (SecurityException ok) { return; }
1384 >        try (PoolCleaner cleaner = cleaner(p)) {
1385 >            try {
1386 >                p.setKeepAliveTime(-1, MILLISECONDS);
1387 >                shouldThrow();
1388 >            } catch (IllegalArgumentException success) {}
1389          }
1398        joinPool(p);
1390      }
1391  
1392      /**
# Line 1403 | Line 1394 | public class ThreadPoolExecutorTest exte
1394       */
1395      public void testTerminated() {
1396          ExtendedTPE p = new ExtendedTPE();
1397 <        try { p.shutdown(); } catch (SecurityException ok) { return; }
1398 <        assertTrue(p.terminatedCalled());
1399 <        joinPool(p);
1397 >        try (PoolCleaner cleaner = cleaner(p)) {
1398 >            try { p.shutdown(); } catch (SecurityException ok) { return; }
1399 >            assertTrue(p.terminatedCalled());
1400 >            assertTrue(p.isShutdown());
1401 >        }
1402      }
1403  
1404      /**
# Line 1413 | Line 1406 | public class ThreadPoolExecutorTest exte
1406       */
1407      public void testBeforeAfter() throws InterruptedException {
1408          ExtendedTPE p = new ExtendedTPE();
1409 <        try {
1409 >        try (PoolCleaner cleaner = cleaner(p)) {
1410              final CountDownLatch done = new CountDownLatch(1);
1411              p.execute(new CheckedRunnable() {
1412                  public void realRun() {
# Line 1423 | Line 1416 | public class ThreadPoolExecutorTest exte
1416              assertEquals(0, done.getCount());
1417              assertTrue(p.afterCalled());
1418              assertTrue(p.beforeCalled());
1426            try { p.shutdown(); } catch (SecurityException ok) { return; }
1427        } finally {
1428            joinPool(p);
1419          }
1420      }
1421  
# Line 1433 | Line 1423 | public class ThreadPoolExecutorTest exte
1423       * completed submit of callable returns result
1424       */
1425      public void testSubmitCallable() throws Exception {
1426 <        ExecutorService e =
1426 >        final ExecutorService e =
1427              new ThreadPoolExecutor(2, 2,
1428                                     LONG_DELAY_MS, MILLISECONDS,
1429                                     new ArrayBlockingQueue<Runnable>(10));
1430 <        try {
1430 >        try (PoolCleaner cleaner = cleaner(e)) {
1431              Future<String> future = e.submit(new StringTask());
1432              String result = future.get();
1433              assertSame(TEST_STRING, result);
1444        } finally {
1445            joinPool(e);
1434          }
1435      }
1436  
# Line 1450 | Line 1438 | public class ThreadPoolExecutorTest exte
1438       * completed submit of runnable returns successfully
1439       */
1440      public void testSubmitRunnable() throws Exception {
1441 <        ExecutorService e =
1441 >        final ExecutorService e =
1442              new ThreadPoolExecutor(2, 2,
1443                                     LONG_DELAY_MS, MILLISECONDS,
1444                                     new ArrayBlockingQueue<Runnable>(10));
1445 <        try {
1445 >        try (PoolCleaner cleaner = cleaner(e)) {
1446              Future<?> future = e.submit(new NoOpRunnable());
1447              future.get();
1448              assertTrue(future.isDone());
1461        } finally {
1462            joinPool(e);
1449          }
1450      }
1451  
# Line 1467 | Line 1453 | public class ThreadPoolExecutorTest exte
1453       * completed submit of (runnable, result) returns result
1454       */
1455      public void testSubmitRunnable2() throws Exception {
1456 <        ExecutorService e =
1456 >        final ExecutorService e =
1457              new ThreadPoolExecutor(2, 2,
1458                                     LONG_DELAY_MS, MILLISECONDS,
1459                                     new ArrayBlockingQueue<Runnable>(10));
1460 <        try {
1460 >        try (PoolCleaner cleaner = cleaner(e)) {
1461              Future<String> future = e.submit(new NoOpRunnable(), TEST_STRING);
1462              String result = future.get();
1463              assertSame(TEST_STRING, result);
1478        } finally {
1479            joinPool(e);
1464          }
1465      }
1466  
# Line 1484 | Line 1468 | public class ThreadPoolExecutorTest exte
1468       * invokeAny(null) throws NPE
1469       */
1470      public void testInvokeAny1() throws Exception {
1471 <        ExecutorService e =
1471 >        final ExecutorService e =
1472              new ThreadPoolExecutor(2, 2,
1473                                     LONG_DELAY_MS, MILLISECONDS,
1474                                     new ArrayBlockingQueue<Runnable>(10));
1475 <        try {
1476 <            e.invokeAny(null);
1477 <            shouldThrow();
1478 <        } catch (NullPointerException success) {
1479 <        } finally {
1496 <            joinPool(e);
1475 >        try (PoolCleaner cleaner = cleaner(e)) {
1476 >            try {
1477 >                e.invokeAny(null);
1478 >                shouldThrow();
1479 >            } catch (NullPointerException success) {}
1480          }
1481      }
1482  
# Line 1501 | Line 1484 | public class ThreadPoolExecutorTest exte
1484       * invokeAny(empty collection) throws IAE
1485       */
1486      public void testInvokeAny2() throws Exception {
1487 <        ExecutorService e =
1487 >        final ExecutorService e =
1488              new ThreadPoolExecutor(2, 2,
1489                                     LONG_DELAY_MS, MILLISECONDS,
1490                                     new ArrayBlockingQueue<Runnable>(10));
1491 <        try {
1492 <            e.invokeAny(new ArrayList<Callable<String>>());
1493 <            shouldThrow();
1494 <        } catch (IllegalArgumentException success) {
1495 <        } finally {
1513 <            joinPool(e);
1491 >        try (PoolCleaner cleaner = cleaner(e)) {
1492 >            try {
1493 >                e.invokeAny(new ArrayList<Callable<String>>());
1494 >                shouldThrow();
1495 >            } catch (IllegalArgumentException success) {}
1496          }
1497      }
1498  
# Line 1523 | Line 1505 | public class ThreadPoolExecutorTest exte
1505              new ThreadPoolExecutor(2, 2,
1506                                     LONG_DELAY_MS, MILLISECONDS,
1507                                     new ArrayBlockingQueue<Runnable>(10));
1508 <        List<Callable<String>> l = new ArrayList<Callable<String>>();
1509 <        l.add(latchAwaitingStringTask(latch));
1510 <        l.add(null);
1511 <        try {
1512 <            e.invokeAny(l);
1513 <            shouldThrow();
1514 <        } catch (NullPointerException success) {
1515 <        } finally {
1508 >        try (PoolCleaner cleaner = cleaner(e)) {
1509 >            List<Callable<String>> l = new ArrayList<Callable<String>>();
1510 >            l.add(latchAwaitingStringTask(latch));
1511 >            l.add(null);
1512 >            try {
1513 >                e.invokeAny(l);
1514 >                shouldThrow();
1515 >            } catch (NullPointerException success) {}
1516              latch.countDown();
1535            joinPool(e);
1517          }
1518      }
1519  
# Line 1540 | Line 1521 | public class ThreadPoolExecutorTest exte
1521       * invokeAny(c) throws ExecutionException if no task completes
1522       */
1523      public void testInvokeAny4() throws Exception {
1524 <        ExecutorService e =
1524 >        final ExecutorService e =
1525              new ThreadPoolExecutor(2, 2,
1526                                     LONG_DELAY_MS, MILLISECONDS,
1527                                     new ArrayBlockingQueue<Runnable>(10));
1528 <        List<Callable<String>> l = new ArrayList<Callable<String>>();
1529 <        l.add(new NPETask());
1530 <        try {
1531 <            e.invokeAny(l);
1532 <            shouldThrow();
1533 <        } catch (ExecutionException success) {
1534 <            assertTrue(success.getCause() instanceof NullPointerException);
1535 <        } finally {
1536 <            joinPool(e);
1528 >        try (PoolCleaner cleaner = cleaner(e)) {
1529 >            List<Callable<String>> l = new ArrayList<Callable<String>>();
1530 >            l.add(new NPETask());
1531 >            try {
1532 >                e.invokeAny(l);
1533 >                shouldThrow();
1534 >            } catch (ExecutionException success) {
1535 >                assertTrue(success.getCause() instanceof NullPointerException);
1536 >            }
1537          }
1538      }
1539  
# Line 1560 | Line 1541 | public class ThreadPoolExecutorTest exte
1541       * invokeAny(c) returns result of some task
1542       */
1543      public void testInvokeAny5() throws Exception {
1544 <        ExecutorService e =
1544 >        final ExecutorService e =
1545              new ThreadPoolExecutor(2, 2,
1546                                     LONG_DELAY_MS, MILLISECONDS,
1547                                     new ArrayBlockingQueue<Runnable>(10));
1548 <        try {
1548 >        try (PoolCleaner cleaner = cleaner(e)) {
1549              List<Callable<String>> l = new ArrayList<Callable<String>>();
1550              l.add(new StringTask());
1551              l.add(new StringTask());
1552              String result = e.invokeAny(l);
1553              assertSame(TEST_STRING, result);
1573        } finally {
1574            joinPool(e);
1554          }
1555      }
1556  
# Line 1579 | Line 1558 | public class ThreadPoolExecutorTest exte
1558       * invokeAll(null) throws NPE
1559       */
1560      public void testInvokeAll1() throws Exception {
1561 <        ExecutorService e =
1561 >        final ExecutorService e =
1562              new ThreadPoolExecutor(2, 2,
1563                                     LONG_DELAY_MS, MILLISECONDS,
1564                                     new ArrayBlockingQueue<Runnable>(10));
1565 <        try {
1566 <            e.invokeAll(null);
1567 <            shouldThrow();
1568 <        } catch (NullPointerException success) {
1569 <        } finally {
1591 <            joinPool(e);
1565 >        try (PoolCleaner cleaner = cleaner(e)) {
1566 >            try {
1567 >                e.invokeAll(null);
1568 >                shouldThrow();
1569 >            } catch (NullPointerException success) {}
1570          }
1571      }
1572  
# Line 1596 | Line 1574 | public class ThreadPoolExecutorTest exte
1574       * invokeAll(empty collection) returns empty collection
1575       */
1576      public void testInvokeAll2() throws InterruptedException {
1577 <        ExecutorService e =
1577 >        final ExecutorService e =
1578              new ThreadPoolExecutor(2, 2,
1579                                     LONG_DELAY_MS, MILLISECONDS,
1580                                     new ArrayBlockingQueue<Runnable>(10));
1581 <        try {
1581 >        try (PoolCleaner cleaner = cleaner(e)) {
1582              List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>());
1583              assertTrue(r.isEmpty());
1606        } finally {
1607            joinPool(e);
1584          }
1585      }
1586  
# Line 1612 | Line 1588 | public class ThreadPoolExecutorTest exte
1588       * invokeAll(c) throws NPE if c has null elements
1589       */
1590      public void testInvokeAll3() throws Exception {
1591 <        ExecutorService e =
1591 >        final ExecutorService e =
1592              new ThreadPoolExecutor(2, 2,
1593                                     LONG_DELAY_MS, MILLISECONDS,
1594                                     new ArrayBlockingQueue<Runnable>(10));
1595 <        List<Callable<String>> l = new ArrayList<Callable<String>>();
1596 <        l.add(new StringTask());
1597 <        l.add(null);
1598 <        try {
1599 <            e.invokeAll(l);
1600 <            shouldThrow();
1601 <        } catch (NullPointerException success) {
1602 <        } finally {
1627 <            joinPool(e);
1595 >        try (PoolCleaner cleaner = cleaner(e)) {
1596 >            List<Callable<String>> l = new ArrayList<Callable<String>>();
1597 >            l.add(new StringTask());
1598 >            l.add(null);
1599 >            try {
1600 >                e.invokeAll(l);
1601 >                shouldThrow();
1602 >            } catch (NullPointerException success) {}
1603          }
1604      }
1605  
# Line 1632 | Line 1607 | public class ThreadPoolExecutorTest exte
1607       * get of element of invokeAll(c) throws exception on failed task
1608       */
1609      public void testInvokeAll4() throws Exception {
1610 <        ExecutorService e =
1610 >        final ExecutorService e =
1611              new ThreadPoolExecutor(2, 2,
1612                                     LONG_DELAY_MS, MILLISECONDS,
1613                                     new ArrayBlockingQueue<Runnable>(10));
1614 <        try {
1614 >        try (PoolCleaner cleaner = cleaner(e)) {
1615              List<Callable<String>> l = new ArrayList<Callable<String>>();
1616              l.add(new NPETask());
1617              List<Future<String>> futures = e.invokeAll(l);
# Line 1647 | Line 1622 | public class ThreadPoolExecutorTest exte
1622              } catch (ExecutionException success) {
1623                  assertTrue(success.getCause() instanceof NullPointerException);
1624              }
1650        } finally {
1651            joinPool(e);
1625          }
1626      }
1627  
# Line 1656 | Line 1629 | public class ThreadPoolExecutorTest exte
1629       * invokeAll(c) returns results of all completed tasks
1630       */
1631      public void testInvokeAll5() throws Exception {
1632 <        ExecutorService e =
1632 >        final ExecutorService e =
1633              new ThreadPoolExecutor(2, 2,
1634                                     LONG_DELAY_MS, MILLISECONDS,
1635                                     new ArrayBlockingQueue<Runnable>(10));
1636 <        try {
1636 >        try (PoolCleaner cleaner = cleaner(e)) {
1637              List<Callable<String>> l = new ArrayList<Callable<String>>();
1638              l.add(new StringTask());
1639              l.add(new StringTask());
# Line 1668 | Line 1641 | public class ThreadPoolExecutorTest exte
1641              assertEquals(2, futures.size());
1642              for (Future<String> future : futures)
1643                  assertSame(TEST_STRING, future.get());
1671        } finally {
1672            joinPool(e);
1644          }
1645      }
1646  
# Line 1677 | Line 1648 | public class ThreadPoolExecutorTest exte
1648       * timed invokeAny(null) throws NPE
1649       */
1650      public void testTimedInvokeAny1() throws Exception {
1651 <        ExecutorService e =
1651 >        final ExecutorService e =
1652              new ThreadPoolExecutor(2, 2,
1653                                     LONG_DELAY_MS, MILLISECONDS,
1654                                     new ArrayBlockingQueue<Runnable>(10));
1655 <        try {
1656 <            e.invokeAny(null, MEDIUM_DELAY_MS, MILLISECONDS);
1657 <            shouldThrow();
1658 <        } catch (NullPointerException success) {
1659 <        } finally {
1689 <            joinPool(e);
1655 >        try (PoolCleaner cleaner = cleaner(e)) {
1656 >            try {
1657 >                e.invokeAny(null, MEDIUM_DELAY_MS, MILLISECONDS);
1658 >                shouldThrow();
1659 >            } catch (NullPointerException success) {}
1660          }
1661      }
1662  
# Line 1694 | Line 1664 | public class ThreadPoolExecutorTest exte
1664       * timed invokeAny(,,null) throws NPE
1665       */
1666      public void testTimedInvokeAnyNullTimeUnit() throws Exception {
1667 <        ExecutorService e =
1667 >        final ExecutorService e =
1668              new ThreadPoolExecutor(2, 2,
1669                                     LONG_DELAY_MS, MILLISECONDS,
1670                                     new ArrayBlockingQueue<Runnable>(10));
1671 <        List<Callable<String>> l = new ArrayList<Callable<String>>();
1672 <        l.add(new StringTask());
1673 <        try {
1674 <            e.invokeAny(l, MEDIUM_DELAY_MS, null);
1675 <            shouldThrow();
1676 <        } catch (NullPointerException success) {
1677 <        } finally {
1708 <            joinPool(e);
1671 >        try (PoolCleaner cleaner = cleaner(e)) {
1672 >            List<Callable<String>> l = new ArrayList<Callable<String>>();
1673 >            l.add(new StringTask());
1674 >            try {
1675 >                e.invokeAny(l, MEDIUM_DELAY_MS, null);
1676 >                shouldThrow();
1677 >            } catch (NullPointerException success) {}
1678          }
1679      }
1680  
# Line 1713 | Line 1682 | public class ThreadPoolExecutorTest exte
1682       * timed invokeAny(empty collection) throws IAE
1683       */
1684      public void testTimedInvokeAny2() throws Exception {
1685 <        ExecutorService e =
1685 >        final ExecutorService e =
1686              new ThreadPoolExecutor(2, 2,
1687                                     LONG_DELAY_MS, MILLISECONDS,
1688                                     new ArrayBlockingQueue<Runnable>(10));
1689 <        try {
1690 <            e.invokeAny(new ArrayList<Callable<String>>(), MEDIUM_DELAY_MS, MILLISECONDS);
1691 <            shouldThrow();
1692 <        } catch (IllegalArgumentException success) {
1693 <        } finally {
1694 <            joinPool(e);
1689 >        try (PoolCleaner cleaner = cleaner(e)) {
1690 >            try {
1691 >                e.invokeAny(new ArrayList<Callable<String>>(),
1692 >                            MEDIUM_DELAY_MS, MILLISECONDS);
1693 >                shouldThrow();
1694 >            } catch (IllegalArgumentException success) {}
1695          }
1696      }
1697  
# Line 1735 | Line 1704 | public class ThreadPoolExecutorTest exte
1704              new ThreadPoolExecutor(2, 2,
1705                                     LONG_DELAY_MS, MILLISECONDS,
1706                                     new ArrayBlockingQueue<Runnable>(10));
1707 <        List<Callable<String>> l = new ArrayList<Callable<String>>();
1708 <        l.add(latchAwaitingStringTask(latch));
1709 <        l.add(null);
1710 <        try {
1711 <            e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS);
1712 <            shouldThrow();
1713 <        } catch (NullPointerException success) {
1714 <        } finally {
1707 >        try (PoolCleaner cleaner = cleaner(e)) {
1708 >            List<Callable<String>> l = new ArrayList<Callable<String>>();
1709 >            l.add(latchAwaitingStringTask(latch));
1710 >            l.add(null);
1711 >            try {
1712 >                e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS);
1713 >                shouldThrow();
1714 >            } catch (NullPointerException success) {}
1715              latch.countDown();
1747            joinPool(e);
1716          }
1717      }
1718  
# Line 1752 | Line 1720 | public class ThreadPoolExecutorTest exte
1720       * timed invokeAny(c) throws ExecutionException if no task completes
1721       */
1722      public void testTimedInvokeAny4() throws Exception {
1723 <        ExecutorService e =
1723 >        final ExecutorService e =
1724              new ThreadPoolExecutor(2, 2,
1725                                     LONG_DELAY_MS, MILLISECONDS,
1726                                     new ArrayBlockingQueue<Runnable>(10));
1727 <        List<Callable<String>> l = new ArrayList<Callable<String>>();
1728 <        l.add(new NPETask());
1729 <        try {
1730 <            e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS);
1731 <            shouldThrow();
1732 <        } catch (ExecutionException success) {
1733 <            assertTrue(success.getCause() instanceof NullPointerException);
1734 <        } finally {
1735 <            joinPool(e);
1727 >        try (PoolCleaner cleaner = cleaner(e)) {
1728 >            List<Callable<String>> l = new ArrayList<Callable<String>>();
1729 >            l.add(new NPETask());
1730 >            try {
1731 >                e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS);
1732 >                shouldThrow();
1733 >            } catch (ExecutionException success) {
1734 >                assertTrue(success.getCause() instanceof NullPointerException);
1735 >            }
1736          }
1737      }
1738  
# Line 1772 | Line 1740 | public class ThreadPoolExecutorTest exte
1740       * timed invokeAny(c) returns result of some task
1741       */
1742      public void testTimedInvokeAny5() throws Exception {
1743 <        ExecutorService e =
1743 >        final ExecutorService e =
1744              new ThreadPoolExecutor(2, 2,
1745                                     LONG_DELAY_MS, MILLISECONDS,
1746                                     new ArrayBlockingQueue<Runnable>(10));
1747 <        try {
1747 >        try (PoolCleaner cleaner = cleaner(e)) {
1748              List<Callable<String>> l = new ArrayList<Callable<String>>();
1749              l.add(new StringTask());
1750              l.add(new StringTask());
1751              String result = e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS);
1752              assertSame(TEST_STRING, result);
1785        } finally {
1786            joinPool(e);
1753          }
1754      }
1755  
# Line 1791 | Line 1757 | public class ThreadPoolExecutorTest exte
1757       * timed invokeAll(null) throws NPE
1758       */
1759      public void testTimedInvokeAll1() throws Exception {
1760 <        ExecutorService e =
1760 >        final ExecutorService e =
1761              new ThreadPoolExecutor(2, 2,
1762                                     LONG_DELAY_MS, MILLISECONDS,
1763                                     new ArrayBlockingQueue<Runnable>(10));
1764 <        try {
1765 <            e.invokeAll(null, MEDIUM_DELAY_MS, MILLISECONDS);
1766 <            shouldThrow();
1767 <        } catch (NullPointerException success) {
1768 <        } finally {
1803 <            joinPool(e);
1764 >        try (PoolCleaner cleaner = cleaner(e)) {
1765 >            try {
1766 >                e.invokeAll(null, MEDIUM_DELAY_MS, MILLISECONDS);
1767 >                shouldThrow();
1768 >            } catch (NullPointerException success) {}
1769          }
1770      }
1771  
# Line 1808 | Line 1773 | public class ThreadPoolExecutorTest exte
1773       * timed invokeAll(,,null) throws NPE
1774       */
1775      public void testTimedInvokeAllNullTimeUnit() throws Exception {
1776 <        ExecutorService e =
1776 >        final ExecutorService e =
1777              new ThreadPoolExecutor(2, 2,
1778                                     LONG_DELAY_MS, MILLISECONDS,
1779                                     new ArrayBlockingQueue<Runnable>(10));
1780 <        List<Callable<String>> l = new ArrayList<Callable<String>>();
1781 <        l.add(new StringTask());
1782 <        try {
1783 <            e.invokeAll(l, MEDIUM_DELAY_MS, null);
1784 <            shouldThrow();
1785 <        } catch (NullPointerException success) {
1786 <        } finally {
1822 <            joinPool(e);
1780 >        try (PoolCleaner cleaner = cleaner(e)) {
1781 >            List<Callable<String>> l = new ArrayList<Callable<String>>();
1782 >            l.add(new StringTask());
1783 >            try {
1784 >                e.invokeAll(l, MEDIUM_DELAY_MS, null);
1785 >                shouldThrow();
1786 >            } catch (NullPointerException success) {}
1787          }
1788      }
1789  
# Line 1827 | Line 1791 | public class ThreadPoolExecutorTest exte
1791       * timed invokeAll(empty collection) returns empty collection
1792       */
1793      public void testTimedInvokeAll2() throws InterruptedException {
1794 <        ExecutorService e =
1794 >        final ExecutorService e =
1795              new ThreadPoolExecutor(2, 2,
1796                                     LONG_DELAY_MS, MILLISECONDS,
1797                                     new ArrayBlockingQueue<Runnable>(10));
1798 <        try {
1799 <            List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>(), MEDIUM_DELAY_MS, MILLISECONDS);
1798 >        try (PoolCleaner cleaner = cleaner(e)) {
1799 >            List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>(),
1800 >                                                 MEDIUM_DELAY_MS, MILLISECONDS);
1801              assertTrue(r.isEmpty());
1837        } finally {
1838            joinPool(e);
1802          }
1803      }
1804  
# Line 1843 | Line 1806 | public class ThreadPoolExecutorTest exte
1806       * timed invokeAll(c) throws NPE if c has null elements
1807       */
1808      public void testTimedInvokeAll3() throws Exception {
1809 <        ExecutorService e =
1809 >        final ExecutorService e =
1810              new ThreadPoolExecutor(2, 2,
1811                                     LONG_DELAY_MS, MILLISECONDS,
1812                                     new ArrayBlockingQueue<Runnable>(10));
1813 <        List<Callable<String>> l = new ArrayList<Callable<String>>();
1814 <        l.add(new StringTask());
1815 <        l.add(null);
1816 <        try {
1817 <            e.invokeAll(l, MEDIUM_DELAY_MS, MILLISECONDS);
1818 <            shouldThrow();
1819 <        } catch (NullPointerException success) {
1820 <        } finally {
1858 <            joinPool(e);
1813 >        try (PoolCleaner cleaner = cleaner(e)) {
1814 >            List<Callable<String>> l = new ArrayList<Callable<String>>();
1815 >            l.add(new StringTask());
1816 >            l.add(null);
1817 >            try {
1818 >                e.invokeAll(l, MEDIUM_DELAY_MS, MILLISECONDS);
1819 >                shouldThrow();
1820 >            } catch (NullPointerException success) {}
1821          }
1822      }
1823  
# Line 1863 | Line 1825 | public class ThreadPoolExecutorTest exte
1825       * get of element of invokeAll(c) throws exception on failed task
1826       */
1827      public void testTimedInvokeAll4() throws Exception {
1828 <        ExecutorService e =
1828 >        final ExecutorService e =
1829              new ThreadPoolExecutor(2, 2,
1830                                     LONG_DELAY_MS, MILLISECONDS,
1831                                     new ArrayBlockingQueue<Runnable>(10));
1832 <        List<Callable<String>> l = new ArrayList<Callable<String>>();
1833 <        l.add(new NPETask());
1834 <        List<Future<String>> futures =
1835 <            e.invokeAll(l, MEDIUM_DELAY_MS, MILLISECONDS);
1836 <        assertEquals(1, futures.size());
1837 <        try {
1838 <            futures.get(0).get();
1839 <            shouldThrow();
1840 <        } catch (ExecutionException success) {
1841 <            assertTrue(success.getCause() instanceof NullPointerException);
1842 <        } finally {
1843 <            joinPool(e);
1832 >        try (PoolCleaner cleaner = cleaner(e)) {
1833 >            List<Callable<String>> l = new ArrayList<Callable<String>>();
1834 >            l.add(new NPETask());
1835 >            List<Future<String>> futures =
1836 >                e.invokeAll(l, MEDIUM_DELAY_MS, MILLISECONDS);
1837 >            assertEquals(1, futures.size());
1838 >            try {
1839 >                futures.get(0).get();
1840 >                shouldThrow();
1841 >            } catch (ExecutionException success) {
1842 >                assertTrue(success.getCause() instanceof NullPointerException);
1843 >            }
1844          }
1845      }
1846  
# Line 1886 | Line 1848 | public class ThreadPoolExecutorTest exte
1848       * timed invokeAll(c) returns results of all completed tasks
1849       */
1850      public void testTimedInvokeAll5() throws Exception {
1851 <        ExecutorService e =
1851 >        final ExecutorService e =
1852              new ThreadPoolExecutor(2, 2,
1853                                     LONG_DELAY_MS, MILLISECONDS,
1854                                     new ArrayBlockingQueue<Runnable>(10));
1855 <        try {
1855 >        try (PoolCleaner cleaner = cleaner(e)) {
1856              List<Callable<String>> l = new ArrayList<Callable<String>>();
1857              l.add(new StringTask());
1858              l.add(new StringTask());
# Line 1899 | Line 1861 | public class ThreadPoolExecutorTest exte
1861              assertEquals(2, futures.size());
1862              for (Future<String> future : futures)
1863                  assertSame(TEST_STRING, future.get());
1902        } finally {
1903            joinPool(e);
1864          }
1865      }
1866  
# Line 1908 | Line 1868 | public class ThreadPoolExecutorTest exte
1868       * timed invokeAll(c) cancels tasks not completed by timeout
1869       */
1870      public void testTimedInvokeAll6() throws Exception {
1871 <        ExecutorService e =
1871 >        final ExecutorService e =
1872              new ThreadPoolExecutor(2, 2,
1873                                     LONG_DELAY_MS, MILLISECONDS,
1874                                     new ArrayBlockingQueue<Runnable>(10));
1875 <        try {
1875 >        try (PoolCleaner cleaner = cleaner(e)) {
1876              for (long timeout = timeoutMillis();;) {
1877                  List<Callable<String>> tasks = new ArrayList<>();
1878                  tasks.add(new StringTask("0"));
# Line 1936 | Line 1896 | public class ThreadPoolExecutorTest exte
1896                          fail("expected exactly one task to be cancelled");
1897                  }
1898              }
1939        } finally {
1940            joinPool(e);
1899          }
1900      }
1901  
# Line 1951 | Line 1909 | public class ThreadPoolExecutorTest exte
1909                                     LONG_DELAY_MS, MILLISECONDS,
1910                                     new LinkedBlockingQueue<Runnable>(),
1911                                     new FailingThreadFactory());
1912 <        try {
1912 >        try (PoolCleaner cleaner = cleaner(e)) {
1913              final int TASKS = 100;
1914              final CountDownLatch done = new CountDownLatch(TASKS);
1915              for (int k = 0; k < TASKS; ++k)
# Line 1960 | Line 1918 | public class ThreadPoolExecutorTest exte
1918                          done.countDown();
1919                      }});
1920              assertTrue(done.await(LONG_DELAY_MS, MILLISECONDS));
1963        } finally {
1964            joinPool(e);
1921          }
1922      }
1923  
# Line 1973 | Line 1929 | public class ThreadPoolExecutorTest exte
1929              new ThreadPoolExecutor(2, 2,
1930                                     1000, MILLISECONDS,
1931                                     new ArrayBlockingQueue<Runnable>(10));
1932 <        assertFalse(p.allowsCoreThreadTimeOut());
1933 <        joinPool(p);
1932 >        try (PoolCleaner cleaner = cleaner(p)) {
1933 >            assertFalse(p.allowsCoreThreadTimeOut());
1934 >        }
1935      }
1936  
1937      /**
# Line 1986 | Line 1943 | public class ThreadPoolExecutorTest exte
1943              new ThreadPoolExecutor(2, 10,
1944                                     keepAliveTime, MILLISECONDS,
1945                                     new ArrayBlockingQueue<Runnable>(10));
1946 <        final CountDownLatch threadStarted = new CountDownLatch(1);
1947 <        try {
1946 >        try (PoolCleaner cleaner = cleaner(p)) {
1947 >            final CountDownLatch threadStarted = new CountDownLatch(1);
1948              p.allowCoreThreadTimeOut(true);
1949              p.execute(new CheckedRunnable() {
1950                  public void realRun() {
# Line 2002 | Line 1959 | public class ThreadPoolExecutorTest exte
1959                  Thread.yield();
1960              assertTrue(millisElapsedSince(startTime) < LONG_DELAY_MS);
1961              assertEquals(0, p.getPoolSize());
2005        } finally {
2006            joinPool(p);
1962          }
1963      }
1964  
# Line 2016 | Line 1971 | public class ThreadPoolExecutorTest exte
1971              new ThreadPoolExecutor(2, 10,
1972                                     keepAliveTime, MILLISECONDS,
1973                                     new ArrayBlockingQueue<Runnable>(10));
1974 <        final CountDownLatch threadStarted = new CountDownLatch(1);
1975 <        try {
1974 >        try (PoolCleaner cleaner = cleaner(p)) {
1975 >            final CountDownLatch threadStarted = new CountDownLatch(1);
1976              p.allowCoreThreadTimeOut(false);
1977              p.execute(new CheckedRunnable() {
1978                  public void realRun() throws InterruptedException {
# Line 2026 | Line 1981 | public class ThreadPoolExecutorTest exte
1981                  }});
1982              delay(2 * keepAliveTime);
1983              assertTrue(p.getPoolSize() >= 1);
2029        } finally {
2030            joinPool(p);
1984          }
1985      }
1986  
# Line 2046 | Line 1999 | public class ThreadPoolExecutorTest exte
1999              new ThreadPoolExecutor(1, 30,
2000                                     60, SECONDS,
2001                                     new ArrayBlockingQueue(30));
2002 <        try {
2002 >        try (PoolCleaner cleaner = cleaner(p)) {
2003              for (int i = 0; i < nTasks; ++i) {
2004                  for (;;) {
2005                      try {
# Line 2058 | Line 2011 | public class ThreadPoolExecutorTest exte
2011              }
2012              // enough time to run all tasks
2013              assertTrue(done.await(nTasks * SHORT_DELAY_MS, MILLISECONDS));
2061        } finally {
2062            joinPool(p);
2014          }
2015      }
2016  
# Line 2071 | Line 2022 | public class ThreadPoolExecutorTest exte
2022              new ThreadPoolExecutor(1, 1,
2023                                     LONG_DELAY_MS, MILLISECONDS,
2024                                     new LinkedBlockingQueue<Runnable>());
2025 <        try {
2025 >        try (PoolCleaner cleaner = cleaner(e)) {
2026              final CountDownLatch blockerStarted = new CountDownLatch(1);
2027              final CountDownLatch done = new CountDownLatch(1);
2028              final List<Future<?>> futures = new ArrayList<>();
# Line 2098 | Line 2049 | public class ThreadPoolExecutorTest exte
2049                  assertTrue(future.isDone());
2050              }
2051              done.countDown();
2101        } finally {
2102            joinPool(e);
2052          }
2053      }
2054  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines