test/jdk/java/util/concurrent/CountDownLatch/Basic.java
author dl
Sat, 14 Sep 2019 11:24:14 -0700
changeset 58136 f689a48dba4b
parent 53778 4f1040869d24
permissions -rw-r--r--
8221168: java/util/concurrent/CountDownLatch/Basic.java fails Reviewed-by: martin, alanb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     2
 * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
90ce3da70b43 Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
 * accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    21
 * questions.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    22
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    23
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
 * @test
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    26
 * @bug 6332435 8221168
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
 * @summary Basic tests for CountDownLatch
53778
4f1040869d24 8195057: java/util/concurrent/CountDownLatch/Basic.java failed w/ Xcomp
dl
parents: 47730
diff changeset
    28
 * @library /test/lib
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
 * @author Seetharam Avadhanam, Martin Buchholz
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
34347
4a17f9e90a0f 8142441: Improve jtreg tests for java.util.concurrent
dl
parents: 32991
diff changeset
    32
import java.util.concurrent.CountDownLatch;
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    33
import java.util.concurrent.ThreadLocalRandom;
34347
4a17f9e90a0f 8142441: Improve jtreg tests for java.util.concurrent
dl
parents: 32991
diff changeset
    34
import java.util.concurrent.TimeUnit;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
import java.util.concurrent.atomic.AtomicInteger;
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    36
import java.util.function.Supplier;
53778
4f1040869d24 8195057: java/util/concurrent/CountDownLatch/Basic.java failed w/ Xcomp
dl
parents: 47730
diff changeset
    37
import jdk.test.lib.Utils;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
public class Basic {
53778
4f1040869d24 8195057: java/util/concurrent/CountDownLatch/Basic.java failed w/ Xcomp
dl
parents: 47730
diff changeset
    40
    static final long LONG_DELAY_MS = Utils.adjustTimeout(10_000);
4f1040869d24 8195057: java/util/concurrent/CountDownLatch/Basic.java failed w/ Xcomp
dl
parents: 47730
diff changeset
    41
4f1040869d24 8195057: java/util/concurrent/CountDownLatch/Basic.java failed w/ Xcomp
dl
parents: 47730
diff changeset
    42
    abstract static class Awaiter extends Thread {
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    43
        volatile Throwable exception;
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    44
        volatile boolean interrupted;
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    45
        abstract void realRun() throws Exception;
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    46
        public final void run() {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    47
            try { realRun(); }
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    48
            catch (Throwable ex) { exception = ex; }
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    49
            interrupted = Thread.interrupted();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    50
        };
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    53
    static Awaiter awaiter(CountDownLatch latch,
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    54
                           CountDownLatch gate) {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    55
        return new Awaiter() {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    56
            public void realRun() throws InterruptedException {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    57
                gate.countDown();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
                latch.await();
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    59
            }};
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    62
    static Awaiter awaiter(CountDownLatch latch,
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    63
                           CountDownLatch gate,
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    64
                           long timeoutMillis) {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    65
        return new Awaiter() {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    66
            public void realRun() throws InterruptedException {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    67
                gate.countDown();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    68
                latch.await(timeoutMillis, TimeUnit.MILLISECONDS);
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    69
            }};
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    72
    static Supplier<Awaiter> randomAwaiterSupplier(
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    73
            CountDownLatch latch, CountDownLatch gate) {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    74
        return () -> (ThreadLocalRandom.current().nextBoolean())
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    75
            ? awaiter(latch, gate)
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    76
            : awaiter(latch, gate, LONG_DELAY_MS);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
    //----------------------------------------------------------------
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
    // Normal use
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
    //----------------------------------------------------------------
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
    public static void normalUse() throws Throwable {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
        int count = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
        CountDownLatch latch = new CountDownLatch(3);
47730
c7b5b1ce8145 8189764: Miscellaneous changes imported from jsr166 CVS 2017-11
dl
parents: 47216
diff changeset
    85
        Awaiter[] a = new Awaiter[12];
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
        for (int i = 0; i < 3; i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
            CountDownLatch gate = new CountDownLatch(4);
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    89
            Supplier<Awaiter> s = randomAwaiterSupplier(latch, gate);
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    90
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    91
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    92
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    93
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    94
            gate.await();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
            latch.countDown();
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
            checkCount(latch, 2-i);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
        }
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    98
        for (Awaiter awaiter : a)
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
    99
            awaiter.join();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   100
        for (Awaiter awaiter : a)
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   101
            checkException(awaiter, null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
    //----------------------------------------------------------------
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
    // One thread interrupted
90ce3da70b43 Initial load
duke
parents:
diff changeset
   106
    //----------------------------------------------------------------
32991
b27c76b82713 8134853: Bulk integration of java.util.concurrent classes
dl
parents: 5506
diff changeset
   107
    public static void threadInterrupted() throws Throwable {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   108
        int count = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
        CountDownLatch latch = new CountDownLatch(3);
47730
c7b5b1ce8145 8189764: Miscellaneous changes imported from jsr166 CVS 2017-11
dl
parents: 47216
diff changeset
   110
        Awaiter[] a = new Awaiter[12];
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
        for (int i = 0; i < 3; i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
            CountDownLatch gate = new CountDownLatch(4);
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   114
            Supplier<Awaiter> s = randomAwaiterSupplier(latch, gate);
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   115
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   116
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   117
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   118
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   119
            gate.await();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   120
            a[count-1].interrupt();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
            latch.countDown();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
            checkCount(latch, 2-i);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
        }
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   124
        for (Awaiter awaiter : a)
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   125
            awaiter.join();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   126
        for (int i = 0; i < a.length; i++) {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   127
            Awaiter awaiter = a[i];
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   128
            Throwable ex = awaiter.exception;
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   129
            if ((i % 4) == 3 && !awaiter.interrupted)
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   130
                checkException(awaiter, InterruptedException.class);
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   131
            else
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   132
                checkException(awaiter, null);
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   133
        }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
    //----------------------------------------------------------------
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
    // One thread timed out
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
    //----------------------------------------------------------------
90ce3da70b43 Initial load
duke
parents:
diff changeset
   139
    public static void timeOut() throws Throwable {
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   140
        int count = 0;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
        CountDownLatch latch = new CountDownLatch(3);
47730
c7b5b1ce8145 8189764: Miscellaneous changes imported from jsr166 CVS 2017-11
dl
parents: 47216
diff changeset
   142
        Awaiter[] a = new Awaiter[12];
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
        long[] timeout = { 0L, 5L, 10L };
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
90ce3da70b43 Initial load
duke
parents:
diff changeset
   146
        for (int i = 0; i < 3; i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
            CountDownLatch gate = new CountDownLatch(4);
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   148
            Supplier<Awaiter> s = randomAwaiterSupplier(latch, gate);
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   149
            a[count] = awaiter(latch, gate, timeout[i]); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   150
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   151
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   152
            a[count] = s.get(); a[count++].start();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   153
            gate.await();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
            latch.countDown();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
            checkCount(latch, 2-i);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
        }
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   157
        for (Awaiter awaiter : a)
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   158
            awaiter.join();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   159
        for (Awaiter awaiter : a)
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   160
            checkException(awaiter, null);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
    public static void main(String[] args) throws Throwable {
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   164
        try {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   165
            normalUse();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   166
        } catch (Throwable ex) { fail(ex); }
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   167
        try {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   168
            threadInterrupted();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   169
        } catch (Throwable ex) { fail(ex); }
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   170
        try {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   171
            timeOut();
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   172
        } catch (Throwable ex) { fail(ex); }
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   173
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
        if (failures.get() > 0L)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
            throw new AssertionError(failures.get() + " failures");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   176
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   178
    static final AtomicInteger failures = new AtomicInteger(0);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   179
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   180
    static void fail(String msg) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   181
        fail(new AssertionError(msg));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   182
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   183
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   184
    static void fail(Throwable t) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   185
        t.printStackTrace();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   186
        failures.getAndIncrement();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   187
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   189
    static void checkCount(CountDownLatch b, int expected) {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
        if (b.getCount() != expected)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
            fail("Count = " + b.getCount() +
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
                 ", expected = " + expected);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
58136
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   195
    static void checkException(Awaiter awaiter, Class<? extends Throwable> c) {
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   196
        Throwable ex = awaiter.exception;
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   197
        if (! ((ex == null && c == null) || c.isInstance(ex)))
f689a48dba4b 8221168: java/util/concurrent/CountDownLatch/Basic.java fails
dl
parents: 53778
diff changeset
   198
            fail("Expected: " + c + ", got: " + ex);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   199
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   200
}