jdk/test/sun/management/LoggingTest/LoggingTest.java
author dfuchs
Fri, 20 Jan 2017 18:41:12 +0000
changeset 43235 da1786d695b6
permissions -rw-r--r--
8172971: java.management could use System.Logger Summary: java.management is updated to use System.Logger instead of java.util.logging.Logger. Reviewed-by: mchung, rriggs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
43235
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
     1
/*
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
     2
 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
     4
 *
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
     7
 * published by the Free Software Foundation.
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
     8
 *
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    13
 * accompanied this code).
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    14
 *
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    18
 *
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    21
 * questions.
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    22
 */
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    23
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    24
import java.io.ByteArrayOutputStream;
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    25
import java.io.IOException;
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    26
import java.io.PrintStream;
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    27
import java.lang.management.ManagementFactory;
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    28
import java.util.List;
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    29
import javax.management.MBeanServer;
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    30
import javax.management.ObjectName;
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    31
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    32
public class LoggingTest {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    33
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    34
    static class TestStream extends PrintStream {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    35
        final ByteArrayOutputStream bos = new ByteArrayOutputStream();
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    36
        private volatile boolean recording;
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    37
        public TestStream(PrintStream wrapped) {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    38
            super(wrapped);
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    39
        }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    40
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    41
        void startRecording() {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    42
            recording = true;
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    43
        }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    44
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    45
        void stopRecording() {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    46
            recording = false;
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    47
        }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    48
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    49
        @Override
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    50
        public void write(int b) {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    51
            if (recording) {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    52
                bos.write(b);
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    53
            }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    54
            super.write(b);
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    55
        }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    56
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    57
        @Override
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    58
        public void write(byte[] buf, int off, int len) {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    59
            if (recording) {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    60
                bos.write(buf, off, len);
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    61
            }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    62
            super.write(buf, off, len);
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    63
        }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    64
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    65
        @Override
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    66
        public void write(byte[] buf) throws IOException {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    67
            if (recording) {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    68
                bos.write(buf);
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    69
            }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    70
            super.write(buf);
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    71
        }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    72
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    73
    }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    74
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    75
    public void run(TestStream ts) {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    76
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    77
        // start recording traces and trigger creation of the platform
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    78
        // MBeanServer to produce some. This won't work if the platform
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    79
        // MBeanServer was already initialized - so it's important to
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    80
        // run this test in its own JVM.
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    81
        ts.startRecording();
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    82
        MBeanServer platform = ManagementFactory.getPlatformMBeanServer();
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    83
        ts.stopRecording();
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    84
        String printed = ts.bos.toString();
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    85
        ts.bos.reset();
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    86
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    87
        // Check that the Platform MBeanServer is emitting the expected
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    88
        // log traces. This can be a bit fragile because debug traces
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    89
        // could be changed without notice - in which case this test will
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    90
        // need to be updated.
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    91
        // For each registered MBean we expect to see three traces.
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    92
        // If the messages logged by the MBeanServer change then these checks
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    93
        // may need to be revisited.
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    94
        List<String> checkTraces =
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    95
                List.of("ObjectName = %s", "name = %s", "JMX.mbean.registered %s");
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    96
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    97
        for (ObjectName o : platform.queryNames(ObjectName.WILDCARD, null)) {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    98
            String n = o.toString();
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
    99
            System.out.println("Checking log for: " + n);
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
   100
            for (String check : checkTraces) {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
   101
                String s = String.format(check, n);
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
   102
                if (!printed.contains(s)) {
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
   103
                    throw new RuntimeException("Trace not found: " + s);
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
   104
                }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
   105
            }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
   106
        }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
   107
    }
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
   108
da1786d695b6 8172971: java.management could use System.Logger
dfuchs
parents:
diff changeset
   109
}