diff options
author | mchung <none@none> | 2010-10-22 11:22:54 -0700 |
---|---|---|
committer | mchung <none@none> | 2010-10-22 11:22:54 -0700 |
commit | c08e421e9c1a40665177e5af3caa6e4432bc0fc6 (patch) | |
tree | 32db98d5063869a202ce5bb6310da1f9ad927bf8 /test/sun/util/logging | |
parent | 5ad55e739a4d57edabe0798361cc5293071bd07d (diff) |
6985460: PlatformLogger throws ArrayStoreException when j.u.logging is initialized
Reviewed-by: dholmes
Diffstat (limited to 'test/sun/util/logging')
-rw-r--r-- | test/sun/util/logging/PlatformLoggerTest.java | 38 | ||||
-rw-r--r-- | test/sun/util/logging/SourceClassName.java | 108 |
2 files changed, 145 insertions, 1 deletions
diff --git a/test/sun/util/logging/PlatformLoggerTest.java b/test/sun/util/logging/PlatformLoggerTest.java index 5f7f923fe..a2f6540d1 100644 --- a/test/sun/util/logging/PlatformLoggerTest.java +++ b/test/sun/util/logging/PlatformLoggerTest.java @@ -23,7 +23,7 @@ /* * @test - * @bug 6882376 + * @bug 6882376 6985460 * @summary Test if java.util.logging.Logger is created before and after * logging is enabled. Also validate some basic PlatformLogger * operations. @@ -43,6 +43,8 @@ public class PlatformLoggerTest { final String GOO_PLATFORM_LOGGER = "test.platformlogger.goo"; final String BAR_LOGGER = "test.logger.bar"; PlatformLogger goo = PlatformLogger.getLogger(GOO_PLATFORM_LOGGER); + // test the PlatformLogger methods + testLogMethods(goo); // Create a platform logger using the default PlatformLogger foo = PlatformLogger.getLogger(FOO_PLATFORM_LOGGER); @@ -56,6 +58,10 @@ public class PlatformLoggerTest { PlatformLogger bar = PlatformLogger.getLogger(BAR_PLATFORM_LOGGER); checkPlatformLogger(bar, BAR_PLATFORM_LOGGER); + // test the PlatformLogger methods + testLogMethods(goo); + testLogMethods(bar); + checkLogger(FOO_PLATFORM_LOGGER, Level.FINER); checkLogger(BAR_PLATFORM_LOGGER, Level.FINER); @@ -64,6 +70,7 @@ public class PlatformLoggerTest { foo.setLevel(PlatformLogger.SEVERE); checkLogger(FOO_PLATFORM_LOGGER, Level.SEVERE); + } private static void checkPlatformLogger(PlatformLogger logger, String name) { @@ -108,4 +115,33 @@ public class PlatformLoggerTest { logger.getName() + " " + logger.getLevel()); } } + + private static void testLogMethods(PlatformLogger logger) { + logger.severe("Test severe(String, Object...) {0} {1}", new Long(1), "string"); + // test Object[] + logger.severe("Test severe(String, Object...) {0}", (Object[]) getPoints()); + logger.warning("Test warning(String, Throwable)", new Throwable("Testing")); + logger.info("Test info(String)"); + } + + static Point[] getPoints() { + Point[] res = new Point[3]; + res[0] = new Point(0,0); + res[1] = new Point(1,1); + res[2] = new Point(2,2); + return res; + } + + static class Point { + final int x; + final int y; + public Point(int x, int y) { + this.x = x; + this.y = y; + } + public String toString() { + return "{x="+x + ", y=" + y + "}"; + } + } + } diff --git a/test/sun/util/logging/SourceClassName.java b/test/sun/util/logging/SourceClassName.java new file mode 100644 index 000000000..e662166ab --- /dev/null +++ b/test/sun/util/logging/SourceClassName.java @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6985460 + * @summary Test the source class name and method output by the platform + * logger. + * + * @compile -XDignore.symbol.file SourceClassName.java + * @run main/othervm SourceClassName + */ + +import java.util.logging.*; +import java.io.*; +import sun.util.logging.PlatformLogger; + +public class SourceClassName { + public static void main(String[] args) throws Exception { + File dir = new File(System.getProperty("user.dir", ".")); + File log = new File(dir, "testlog.txt"); + PrintStream logps = new PrintStream(log); + writeLogRecords(logps); + checkLogRecords(log); + } + + private static void writeLogRecords(PrintStream logps) throws Exception { + PrintStream err = System.err; + try { + System.setErr(logps); + + Object[] params = new Object[] { new Long(1), "string"}; + PlatformLogger plog = PlatformLogger.getLogger("test.log.foo"); + plog.severe("Log message {0} {1}", (Object[]) params); + + // create a java.util.logging.Logger + // now java.util.logging.Logger should be created for each platform logger + Logger logger = Logger.getLogger("test.log.bar"); + logger.log(Level.SEVERE, "Log message {0} {1}", params); + + plog.severe("Log message {0} {1}", (Object[]) params); + } finally { + logps.flush(); + logps.close(); + System.setErr(err); + } + } + + private static void checkLogRecords(File log) throws Exception { + System.out.println("Checking log records in file: " + log); + FileInputStream in = new FileInputStream(log); + String EXPECTED_LOG = "SEVERE: Log message 1 string"; + try { + BufferedReader reader = new BufferedReader(new InputStreamReader(in)); + String line; + String[] record = new String[2]; + int count = 0; + int i = 0; + while ((line = reader.readLine()) != null) { + line = line.trim(); + System.out.println(line); + record[i++] = line; + if (i == 2) { + i = 0; + count++; + // check source class name and method + String[] ss = record[0].split("\\s+"); + int len = ss.length; + if (!ss[len-2].equals("SourceClassName") || + !ss[len-1].equals("writeLogRecords")) { + throw new RuntimeException("Unexpected source: " + + ss[len-2] + " " + ss[len-1]); + } + + // check log message + if (!record[1].equals(EXPECTED_LOG)) { + throw new RuntimeException("Unexpected log: " + record[1]); + } + } + } + if (count != 3) { + throw new RuntimeException("Unexpected number of records: " + count); + } + } finally { + in.close(); + } + } +} |