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

Comparing jsr166/src/test/tck/CompletableFutureTest.java (file contents):
Revision 1.178 by jsr166, Wed Sep 21 19:02:50 2016 UTC vs.
Revision 1.179 by jsr166, Thu Sep 22 22:05:49 2016 UTC

# Line 4442 | Line 4442 | public class CompletableFutureTest exten
4442              assertTrue(neverCompleted.thenRun(() -> {}).cancel(true));
4443      }
4444  
4445 +    /**
4446 +     * Checks for garbage retention when MinimalStage.toCompletableFuture()
4447 +     * is invoked many times.
4448 +     * 8161600: Garbage retention when source CompletableFutures are never completed
4449 +     *
4450 +     * As of 2016-07, fails with OOME:
4451 +     * ant -Dvmoptions=-Xmx8m -Djsr166.expensiveTests=true -Djsr166.tckTestClass=CompletableFutureTest -Djsr166.methodFilter=testToCompletableFutureGarbageRetention tck
4452 +     */
4453 +    public void testToCompletableFutureGarbageRetention() throws Throwable {
4454 +        final int n = expensiveTests ? 900_000 : 10;
4455 +        CompletableFuture<Integer> neverCompleted = new CompletableFuture<>();
4456 +        CompletionStage minimal = neverCompleted.minimalCompletionStage();
4457 +        for (int i = 0; i < n; i++)
4458 +            assertTrue(minimal.toCompletableFuture().cancel(true));
4459 +    }
4460 +
4461   //     static <U> U join(CompletionStage<U> stage) {
4462   //         CompletableFuture<U> f = new CompletableFuture<>();
4463   //         stage.whenComplete((v, ex) -> {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines