test/jdk/java/util/logging/MemoryHandlerTest.java
author mikael
Mon, 29 Jul 2019 09:59:04 -0700
changeset 57584 9d82a35b6ff7
parent 47216 71c04702a3d5
permissions -rw-r--r--
Merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14321
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
     1
/*
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
     2
 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
     4
 *
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
     7
 * published by the Free Software Foundation.
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
     8
 *
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    13
 * accompanied this code).
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    14
 *
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    18
 *
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    21
 * questions.
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    22
 */
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    23
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    24
/*
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    25
 * @test
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    26
 * @bug 7159567
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    27
 * @summary Test of configuring a MemoryHandler sub-class handler target via logging.properties
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    28
 * @run main/othervm MemoryHandlerTest
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    29
 */
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    30
import java.io.File;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    31
import java.io.IOException;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    32
import java.util.logging.Handler;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    33
import java.util.logging.Level;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    34
import java.util.logging.LogManager;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    35
import java.util.logging.LogRecord;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    36
import java.util.logging.Logger;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    37
import java.util.logging.MemoryHandler;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    38
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    39
public class MemoryHandlerTest {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    40
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    41
    static final String CFG_FILE_PROP = "java.util.logging.config.file";
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    42
    static final String LM_PROP_FNAME = "MemoryHandlerTest.props";
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    43
    static Logger logger;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    44
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    45
    public static void main(String... args) throws IOException {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    46
        // load logging.propertes for the test
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    47
        String tstSrc = System.getProperty("test.src", ".");
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    48
        File fname = new File(tstSrc, LM_PROP_FNAME);
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    49
        String prop = fname.getCanonicalPath();
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    50
        System.setProperty(CFG_FILE_PROP, prop);
14683
38921a46c62d 8003380: Compiler warnings in logging test code
jgish
parents: 14321
diff changeset
    51
        LogManager.getLogManager();
14321
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    52
        // create a logger
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    53
        logger = Logger.getLogger(MemoryHandlerTest.class.getName());
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    54
        // don't have parent handlers get log messages
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    55
        logger.setUseParentHandlers(false);
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    56
        //
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    57
        // Test 1,2: create a CustomMemoryHandler which in the config has
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    58
        // specified a target of CustomTargetHandler.  (1) Make sure that it
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    59
        // is created and (2) that the target handler is loaded.
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    60
        //
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    61
        CustomMemoryHandler cmh = new CustomMemoryHandler();
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    62
        try {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    63
            logger.addHandler(cmh);
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    64
        } catch (RuntimeException rte) {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    65
            throw new RuntimeException(
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    66
                "Test Failed: did not load java.util.logging.ConsoleHandler as expected",
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    67
                rte);
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    68
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    69
        // if we get here and our config has been processed properly, then we
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    70
        // should have loaded our target handler
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    71
        if (CustomTargetHandler.numLoaded !=1) {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    72
            throw new RuntimeException(
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    73
                "Test failed: did not load CustomTargetHandler as expected");
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    74
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    75
        //
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    76
        // Test 3: try to add a handler with no target.  This should fail with
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    77
        // an exception
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    78
        CustomMemoryHandlerNoTarget cmhnt = null;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    79
        try {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    80
            cmhnt = new CustomMemoryHandlerNoTarget();
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    81
        } catch (RuntimeException re) {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    82
            // expected -- no target specified
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    83
            System.out.println("Info: " + re.getMessage() + " as expected.");
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    84
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    85
        if (cmhnt != null) {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    86
            throw new RuntimeException(
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    87
                "Test Failed: erroneously loaded CustomMemoryHandlerNoTarget");
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    88
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    89
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    90
        // Test 4: log a message and check that the target handler is actually used
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    91
        logger.log(Level.WARNING, "Unused");
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    92
        if (CustomTargetHandler.numPublished != 1) {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    93
            throw new RuntimeException("Test failed: CustomTargetHandler was not used");
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    94
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    95
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    96
        // Test 5: make sure that SimpleTargetHandler hasn't been erroneously called
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    97
        if (SimpleTargetHandler.numPublished != 0) {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    98
            throw new RuntimeException("Test failed: SimpleTargetHandler has been used");
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
    99
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   100
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   101
        // Test 6: try using SimpleTargetHanlder via standard MemoryHandler
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   102
        // (which has target set to SimpleTargetHandler)
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   103
        MemoryHandler mh = new MemoryHandler();
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   104
        mh.publish(new LogRecord(Level.INFO, "Unused msg to MemoryHandler"));
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   105
        // see if it made it to the SimpleTargetHandler
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   106
        if (SimpleTargetHandler.numPublished != 1) {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   107
            throw new RuntimeException("Test failed: SimpleTargetHandler was not used");
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   108
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   109
    }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   110
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   111
    public static class CustomMemoryHandler extends MemoryHandler {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   112
    }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   113
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   114
    public static class CustomMemoryHandlerNoTarget extends MemoryHandler {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   115
    }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   116
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   117
    public static class CustomTargetHandler extends Handler {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   118
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   119
        public static int numPublished;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   120
        public static int numLoaded;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   121
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   122
        public CustomTargetHandler() {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   123
            numLoaded++;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   124
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   125
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   126
        @Override
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   127
        public void publish(LogRecord unused) {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   128
            numPublished++;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   129
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   130
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   131
        @Override
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   132
        public void flush() {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   133
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   134
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   135
        @Override
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   136
        public void close() throws SecurityException {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   137
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   138
    }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   139
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   140
    public static class SimpleTargetHandler extends Handler {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   141
        public static int numPublished;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   142
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   143
        @Override
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   144
        public void publish(LogRecord unused) {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   145
            numPublished++;
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   146
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   147
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   148
        @Override
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   149
        public void flush() {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   150
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   151
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   152
        @Override
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   153
        public void close() throws SecurityException {
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   154
        }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   155
    }
7f9f265ac11e 7159567: inconsistent configuration of MemoryHandler
jgish
parents:
diff changeset
   156
}