jdk/test/java/util/logging/LoggingDeadlock2.java
author ohair
Tue, 28 Apr 2009 14:43:44 -0700
changeset 2638 d4447065286a
parent 2631 29398881792c
child 2930 58a6440b92dc
permissions -rw-r--r--
6835241: Annotate some tests with @ignore that have shown to be unpredictable Reviewed-by: tbell
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
     2
 * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
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
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
 * CA 95054 USA or visit www.sun.com if you need additional information or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    21
 * have any questions.
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
2631
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    26
 * @bug     6467152 6716076 6829503
2638
d4447065286a 6835241: Annotate some tests with @ignore that have shown to be unpredictable
ohair
parents: 2631
diff changeset
    27
 * @ignore Until made more stable, see 6829636.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
 * @summary deadlock occurs in LogManager initialization and JVM termination
2631
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    29
 * @author  Serguei Spitsyn / Hitachi / Martin Buchholz
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
 * @build    LoggingDeadlock2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
 * @run  main/timeout=15 LoggingDeadlock2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
 * There is a clear deadlock between LogManager.<clinit> and
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
 * Cleaner.run() methods.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
 * T1 thread:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
 *   The LogManager.<clinit> creates LogManager.manager object,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
 *   sets shutdown hook with the Cleaner class and then waits
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
 *   to lock the LogManager.manager monitor.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
 * T2 thread:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
 *   It is started by the System.exit() as shutdown hook thread.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
 *   It locks the LogManager.manager monitor and then calls the
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
 *   static methods of the LogManager class (in this particular
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
 *   case it is a trick of the inner classes implementation).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
 *   It is waits when the LogManager.<clinit> is completed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
 * This is a regression test for this bug.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
2631
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    50
import java.util.Arrays;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    51
import java.util.List;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    52
import java.util.Random;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    53
import java.util.concurrent.CyclicBarrier;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    54
import java.util.concurrent.atomic.AtomicInteger;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
import java.util.logging.LogManager;
2631
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    56
import java.io.File;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    57
import java.io.InputStream;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    58
import java.io.InputStreamReader;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    59
import java.io.Reader;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
2631
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    61
public class LoggingDeadlock2 {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    62
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    63
    public static void realMain(String arg[]) throws Throwable {
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
        try {
2631
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    65
            System.out.println(javaChildArgs);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    66
            ProcessBuilder pb = new ProcessBuilder(javaChildArgs);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    67
            ProcessResults r = run(pb.start());
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    68
            equal(r.exitValue(), 99);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    69
            equal(r.out(), "");
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    70
            equal(r.err(), "");
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    71
        } catch (Throwable t) { unexpected(t); }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    72
    }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    73
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    74
    public static class JavaChild {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    75
        public static void main(String args[]) throws Throwable {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    76
            final CyclicBarrier startingGate = new CyclicBarrier(2);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    77
            final Throwable[] thrown = new Throwable[1];
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    78
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    79
            // Some random variation, to help tickle races.
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    80
            final Random rnd = new Random();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    81
            final boolean dojoin = rnd.nextBoolean();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    82
            final int JITTER = 1024;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    83
            final int iters1 = rnd.nextInt(JITTER);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    84
            final int iters2 = JITTER - iters1;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    85
            final AtomicInteger counter = new AtomicInteger(0);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    86
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    87
            Thread exiter = new Thread() {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    88
                public void run() {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    89
                    try {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    90
                        startingGate.await();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    91
                        for (int i = 0; i < iters1; i++)
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    92
                            counter.getAndIncrement();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    93
                        System.exit(99);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    94
                    } catch (Throwable t) {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    95
                        t.printStackTrace();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    96
                        System.exit(86);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    97
                    }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    98
                }};
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
    99
            exiter.start();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   100
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   101
            startingGate.await();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   102
            for (int i = 0; i < iters2; i++)
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   103
                counter.getAndIncrement();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   104
            // This may or may not result in a first call to
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   105
            // Runtime.addShutdownHook after shutdown has already
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   106
            // commenced.
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   107
            LogManager log = LogManager.getLogManager();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   108
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   109
            if (dojoin) {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   110
                exiter.join();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   111
                if (thrown[0] != null)
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   112
                    throw new Error(thrown[0]);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   113
                check(counter.get() == JITTER);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
2631
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   118
    //----------------------------------------------------------------
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   119
    // The rest of this test is copied from ProcessBuilder/Basic.java
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   120
    //----------------------------------------------------------------
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   121
    private static final String javaExe =
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   122
        System.getProperty("java.home") +
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   123
        File.separator + "bin" + File.separator + "java";
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   124
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   125
    private static final String classpath =
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   126
        System.getProperty("java.class.path");
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   127
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   128
    private static final List<String> javaChildArgs =
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   129
        Arrays.asList(new String[]
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   130
            { javaExe, "-classpath", classpath,
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   131
              "LoggingDeadlock2$JavaChild"});
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   132
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   133
    private static class ProcessResults {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   134
        private final String out;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   135
        private final String err;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   136
        private final int exitValue;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   137
        private final Throwable throwable;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   138
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   139
        public ProcessResults(String out,
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   140
                              String err,
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   141
                              int exitValue,
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   142
                              Throwable throwable) {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   143
            this.out = out;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   144
            this.err = err;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   145
            this.exitValue = exitValue;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   146
            this.throwable = throwable;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
        }
2631
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   148
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   149
        public String out()          { return out; }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   150
        public String err()          { return err; }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   151
        public int exitValue()       { return exitValue; }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   152
        public Throwable throwable() { return throwable; }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   153
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   154
        public String toString() {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   155
            StringBuilder sb = new StringBuilder();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   156
            sb.append("<STDOUT>\n" + out() + "</STDOUT>\n")
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   157
                .append("<STDERR>\n" + err() + "</STDERR>\n")
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   158
                .append("exitValue = " + exitValue + "\n");
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   159
            if (throwable != null)
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   160
                sb.append(throwable.getStackTrace());
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   161
            return sb.toString();
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
    }
2631
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   164
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   165
    private static class StreamAccumulator extends Thread {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   166
        private final InputStream is;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   167
        private final StringBuilder sb = new StringBuilder();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   168
        private Throwable throwable = null;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   169
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   170
        public String result () throws Throwable {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   171
            if (throwable != null)
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   172
                throw throwable;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   173
            return sb.toString();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   174
        }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   175
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   176
        StreamAccumulator (InputStream is) {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   177
            this.is = is;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   178
        }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   179
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   180
        public void run() {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   181
            try {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   182
                Reader r = new InputStreamReader(is);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   183
                char[] buf = new char[4096];
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   184
                int n;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   185
                while ((n = r.read(buf)) > 0) {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   186
                    sb.append(buf,0,n);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   187
                }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   188
            } catch (Throwable t) {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   189
                throwable = t;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   190
            } finally {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   191
                try { is.close(); }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   192
                catch (Throwable t) { throwable = t; }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   193
            }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   194
        }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   195
    }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   196
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   197
    private static ProcessResults run(Process p) {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   198
        Throwable throwable = null;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   199
        int exitValue = -1;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   200
        String out = "";
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   201
        String err = "";
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   202
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   203
        StreamAccumulator outAccumulator =
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   204
            new StreamAccumulator(p.getInputStream());
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   205
        StreamAccumulator errAccumulator =
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   206
            new StreamAccumulator(p.getErrorStream());
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   207
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   208
        try {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   209
            outAccumulator.start();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   210
            errAccumulator.start();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   211
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   212
            exitValue = p.waitFor();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   213
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   214
            outAccumulator.join();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   215
            errAccumulator.join();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   216
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   217
            out = outAccumulator.result();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   218
            err = errAccumulator.result();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   219
        } catch (Throwable t) {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   220
            throwable = t;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   221
        }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   222
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   223
        return new ProcessResults(out, err, exitValue, throwable);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   224
    }
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   225
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   226
    //--------------------- Infrastructure ---------------------------
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   227
    static volatile int passed = 0, failed = 0;
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   228
    static void pass() {passed++;}
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   229
    static void fail() {failed++; Thread.dumpStack();}
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   230
    static void fail(String msg) {System.out.println(msg); fail();}
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   231
    static void unexpected(Throwable t) {failed++; t.printStackTrace();}
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   232
    static void check(boolean cond) {if (cond) pass(); else fail();}
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   233
    static void check(boolean cond, String m) {if (cond) pass(); else fail(m);}
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   234
    static void equal(Object x, Object y) {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   235
        if (x == null ? y == null : x.equals(y)) pass();
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   236
        else fail(x + " not equal to " + y);}
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   237
    public static void main(String[] args) throws Throwable {
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   238
        try {realMain(args);} catch (Throwable t) {unexpected(t);}
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   239
        System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
29398881792c 6716076: test UTIL_REGRESSION/test/java/util/logging/LoggingDeadlock2.java failed with exit code 1
martin
parents: 2401
diff changeset
   240
        if (failed > 0) throw new AssertionError("Some tests failed");}
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
}