JDK 9 RFR of JDK-8144742: Instrument intermittently failing test GCDuringIteration.java

Martin Buchholz martinrb at google.com
Fri Dec 4 18:56:21 UTC 2015


Looks OK.  Sorry for the continuing troubles, but this test has
survived many iterations on Google machines without failure.  Failures
are more likely to be collector-specific than random-number-specific.
If you can repro, you can try varying hotspot GC flags.

On Fri, Dec 4, 2015 at 10:31 AM, joe darcy <joe.darcy at oracle.com> wrote:
> Hello,
>
> Please review the patch below to address
>
>     JDK-8144742: Instrument intermittently failing test
> GCDuringIteration.java
>
> In brief, after GCDuringIteration.java was un- at ignored recently, it has been
> seen to fail intermittently in some of our testing. As the test uses
> randomness, to help the investigation GCDuringIteration.java should be
> switched over to the standard random number generator which prints out the
> seed and allows the seed to be set.
>
> Also, the test is marked as being known to intermittently fail and for that
> reason, is bumped from tier 1 to tier 2.
>
> Thanks,
>
> -Joe
>
> diff -r 8ef2bf79539c test/TEST.groups
> --- a/test/TEST.groups    Thu Dec 03 13:18:51 2015 -0800
> +++ b/test/TEST.groups    Fri Dec 04 10:30:58 2015 -0800
> @@ -30,6 +30,7 @@
>      -java/lang/ProcessHandle/TreeTest.java \
>      -java/util/zip/TestLocalTime.java \
>      :jdk_util \
> +    -java/util/WeakHashMap/GCDuringIteration.java \
>      -java/util/concurrent/Phaser/Basic.java \
>      sun/nio/cs/ISO8859x.java \
>      java/nio/Buffer \
> @@ -40,6 +41,7 @@
>      java/lang/ProcessHandle/TreeTest.java \
>      java/util/zip/TestLocalTime.java \
>      java/util/concurrent/Phaser/Basic.java \
> +    java/util/WeakHashMap/GCDuringIteration.java \
>      :jdk_io \
>      :jdk_nio \
>      -sun/nio/cs/ISO8859x.java \
> diff -r 8ef2bf79539c test/java/util/WeakHashMap/GCDuringIteration.java
> --- a/test/java/util/WeakHashMap/GCDuringIteration.java    Thu Dec 03
> 13:18:51 2015 -0800
> +++ b/test/java/util/WeakHashMap/GCDuringIteration.java    Fri Dec 04
> 10:30:58 2015 -0800
> @@ -1,5 +1,5 @@
>  /*
> - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights
> reserved.
> + * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights
> reserved.
>   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>   *
>   * This code is free software; you can redistribute it and/or modify it
> @@ -24,13 +24,17 @@
>  /*
>   * @test
>   * @bug 6499848
> + * @library /lib/testlibrary/
> + * @build jdk.testlibrary.RandomFactory
> + * @run main GCDuringIteration
>   * @summary Check that iterators work properly in the presence of
>   *          concurrent finalization and removal of elements.
> - * @key randomness
> + * @key randomness intermittent
>   */
>
>  import java.util.*;
>  import java.util.concurrent.CountDownLatch;
> +import jdk.testlibrary.RandomFactory;
>
>  public class GCDuringIteration {
>      private static void waitForFinalizersToRun() {
> @@ -65,8 +69,9 @@
>          equal(map.values().iterator().next(), v);
>      }
>
> +    static final Random rnd = RandomFactory.getRandom();
> +
>      void checkIterator(final Iterator<Map.Entry<Foo, Integer>> it, int
> first) {
> -        final Random rnd = new Random();
>          for (int i = first; i >= 0; --i) {
>              if (rnd.nextBoolean()) check(it.hasNext());
>              equal(it.next().getValue(), i);
> @@ -86,7 +91,7 @@
>          final int n = 10;
>          // Create array of strong refs
>          final Foo[] foos = new Foo[2*n];
> -        final Map<Foo,Integer> map = new
> WeakHashMap<Foo,Integer>(foos.length);
> +        final Map<Foo,Integer> map = new WeakHashMap<>(foos.length);
>          check(map.isEmpty());
>          equal(map.size(), 0);
>
>



More information about the core-libs-dev mailing list