aboutsummaryrefslogtreecommitdiff
path: root/test/sun/util/logging
diff options
context:
space:
mode:
authormchung <none@none>2010-10-22 11:22:54 -0700
committermchung <none@none>2010-10-22 11:22:54 -0700
commitc08e421e9c1a40665177e5af3caa6e4432bc0fc6 (patch)
tree32db98d5063869a202ce5bb6310da1f9ad927bf8 /test/sun/util/logging
parent5ad55e739a4d57edabe0798361cc5293071bd07d (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.java38
-rw-r--r--test/sun/util/logging/SourceClassName.java108
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();
+ }
+ }
+}