You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by sm...@apache.org on 2006/08/30 10:22:17 UTC

svn commit: r438419 [5/9] - /incubator/harmony/enhanced/classlib/trunk/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/

Modified: incubator/harmony/enhanced/classlib/trunk/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.java?rev=438419&r1=438418&r2=438419&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.java Wed Aug 30 01:22:13 2006
@@ -1,418 +1,418 @@
-/* Copyright 2004 The Apache Software Foundation or its licensors, as applicable
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.harmony.logging.tests.java.util.logging;
-
-import java.util.Locale;
-import java.util.ResourceBundle;
-import java.util.logging.Handler;
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
-import java.util.logging.Logger;
-
-import junit.framework.TestCase;
-import tests.util.SerializationTester;
-
-public class LogRecordTest extends TestCase {
-
-	static final String MSG = "test msg, pls. ignore itb";
-
-	private LogRecord lr;
-
-	private static String className = LogRecordTest.class.getName();
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		lr = new LogRecord(Level.CONFIG, MSG);
-
-	}
-
-	public void testLogRecordWithNullPointers() {
-		try {
-			new LogRecord(null, null);
-			fail("should throw NullPointerException");
-		} catch (NullPointerException e) {
-		}
-		try {
-			new LogRecord(null, MSG);
-			fail("should throw NullPointerException");
-		} catch (NullPointerException e) {
-		}
-		LogRecord r = new LogRecord(Level.WARNING, null);
-		assertSame(r.getLevel(), Level.WARNING);
-		assertNull(r.getMessage());
-	}
-
-	public void testGetSetLoggerName() {
-		assertNull(lr.getLoggerName());
-		lr.setLoggerName(null);
-		assertNull(lr.getLoggerName());
-		lr.setLoggerName("test logger name");
-		assertEquals("test logger name", lr.getLoggerName());
-	}
-
-	public void testGetSetResourceBundle() {
-		assertNull(lr.getResourceBundleName());
-		assertNull(lr.getResourceBundle());
-
-		lr.setResourceBundle(null);
-		assertNull(lr.getResourceBundle());
-
-		lr.setResourceBundleName("bundles/java/util/logging/res");
-		assertNull(lr.getResourceBundle());
-
-		lr.setResourceBundleName(null);
-		ResourceBundle rb = ResourceBundle
-				.getBundle("bundles/java/util/logging/res");
-		lr.setResourceBundle(rb);
-		assertEquals(rb, lr.getResourceBundle());
-		assertNull(lr.getResourceBundleName());
-	}
-
-	public void testGetSetResourceBundleName() {
-		assertNull(lr.getResourceBundleName());
-		lr.setResourceBundleName(null);
-		assertNull(lr.getResourceBundleName());
-		lr.setResourceBundleName("test");
-		assertEquals("test", lr.getResourceBundleName());
-	}
-
-	public void testGetSetLevel() {
-		try {
-			lr.setLevel(null);
-			fail("should throw NullPointerException");
-		} catch (NullPointerException e) {
-		}
-		assertSame(lr.getLevel(), Level.CONFIG);
-	}
-
-	public void testGetSetSequenceNumber() {
-		long l = lr.getSequenceNumber();
-		lr.setSequenceNumber(-111);
-		assertEquals(lr.getSequenceNumber(), -111L);
-		lr.setSequenceNumber(0);
-		assertEquals(lr.getSequenceNumber(), 0L);
-		lr = new LogRecord(Level.ALL, null);
-		assertEquals(lr.getSequenceNumber(), l + 1);
-	}
-
-	public void testGetSetSourceClassName() {
-		lr.setSourceClassName(null);
-		assertNull(lr.getSourceClassName());
-		lr.setSourceClassName("bad class name");
-		assertEquals("bad class name", lr.getSourceClassName());
-		lr.setSourceClassName(this.getClass().getName());
-		assertEquals(this.getClass().getName(), lr.getSourceClassName());
-	}
-
-	public void testGetSetSourceMethodName() {
-		lr.setSourceMethodName(null);
-		assertNull(lr.getSourceMethodName());
-		lr.setSourceMethodName("bad class name");
-		assertEquals("bad class name", lr.getSourceMethodName());
-		lr.setSourceMethodName(this.getClass().getName());
-		assertEquals(this.getClass().getName(), lr.getSourceMethodName());
-	}
-
-	public void testGetSourceDefaultValue() {
-		assertNull(lr.getSourceMethodName());
-		assertNull(lr.getSourceClassName());
-
-		// find class and method who called logger
-		Logger logger = Logger.global;
-		MockHandler handler = new MockHandler();
-		logger.addHandler(handler);
-		logger.log(Level.SEVERE, MSG);
-		assertEquals(this.getClass().getName(), handler.getSourceClassName());
-		assertEquals("testGetSourceDefaultValue", handler.getSourceMethodName());
-
-		// only set source method to null
-		lr = new LogRecord(Level.SEVERE, MSG);
-		lr.setSourceMethodName(null);
-		logger.log(lr);
-		assertEquals(null, handler.getSourceClassName());
-		assertEquals(null, handler.getSourceMethodName());
-
-		// only set source class to null
-		lr = new LogRecord(Level.SEVERE, MSG);
-		lr.setSourceClassName(null);
-		logger.log(lr);
-		assertEquals(null, handler.getSourceClassName());
-		assertEquals(null, handler.getSourceMethodName());
-
-		// set both
-		lr = new LogRecord(Level.SEVERE, MSG);
-		lr.setSourceClassName("className");
-		lr.setSourceMethodName(null);
-		logger.log(lr);
-		assertEquals("className", handler.getSourceClassName());
-		assertEquals(null, handler.getSourceMethodName());
-
-		// test if LogRecord is constructed in another class, and is published
-		// by Logger
-		logger.log(RecordFactory.getDefaultRecord());
-		assertEquals(this.getClass().getName(), handler.getSourceClassName());
-		assertEquals("testGetSourceDefaultValue", handler.getSourceMethodName());
-
-		lr = RecordFactory.getDefaultRecord();
-		// assertNull(lr.getSourceClassName());
-		// assertNull(lr.getSourceMethodName());
-		RecordFactory.log(logger, lr);
-		assertEquals(RecordFactory.class.getName(), handler
-				.getSourceClassName());
-		assertEquals("log", handler.getSourceMethodName());
-
-		// only try once to get the default value
-		lr = RecordFactory.getDefaultRecord();
-		assertNull(lr.getSourceClassName());
-		assertNull(lr.getSourceMethodName());
-		RecordFactory.log(logger, lr);
-		assertNull(handler.getSourceClassName());
-		assertNull(handler.getSourceMethodName());
-
-		// it cannot find correct default value when logger is subclass
-		MockLogger ml = new MockLogger("foo", null);
-		ml.addHandler(handler);
-		ml.info(MSG);
-		assertEquals(className + "$MockLogger", handler.getSourceClassName());
-		assertEquals("info", handler.getSourceMethodName());
-
-		// it can find nothing when only call Subclass
-		ml = new MockLogger("foo", null);
-		ml.addHandler(handler);
-		ml.log(Level.SEVERE, MSG);
-		assertNull(handler.getSourceClassName());
-		assertNull(handler.getSourceMethodName());
-
-		// test if don't call logger, what is the default value
-		lr = new LogRecord(Level.SEVERE, MSG);
-		handler.publish(lr);
-		assertNull(handler.getSourceClassName());
-		assertNull(handler.getSourceMethodName());
-		logger.removeHandler(handler);
-	}
-
-	public void testGetSetMessage() {
-		assertEquals(MSG, lr.getMessage());
-		lr.setMessage(null);
-		assertNull(lr.getMessage());
-		lr.setMessage("");
-		assertEquals("", lr.getMessage());
-	}
-
-	public void testGetSetParameters() {
-		assertNull(lr.getParameters());
-		lr.setParameters(null);
-		assertNull(lr.getParameters());
-		Object[] oa = new Object[0];
-		lr.setParameters(oa);
-		assertEquals(oa, lr.getParameters());
-		oa = new Object[] { new Object(), new Object() };
-		lr.setParameters(oa);
-		assertSame(oa, lr.getParameters());
-	}
-
-	public void testGetSetMillis() {
-		long milli = lr.getMillis();
-        assertTrue(milli > 0);
-		lr.setMillis(-1);
-		assertEquals(-1, lr.getMillis());
-		lr.setMillis(0);
-		assertEquals(0, lr.getMillis());
-	}
-
-	public void testGetSetThreadID() {
-		// TODO how to test the different thread
-		int id = lr.getThreadID();
-		lr = new LogRecord(Level.ALL, "a1");
-		assertEquals(id, lr.getThreadID());
-		lr.setThreadID(id + 10);
-		assertEquals(id + 10, lr.getThreadID());
-		lr = new LogRecord(Level.ALL, "a1");
-		assertEquals(id, lr.getThreadID());
-	}
-
-	public void testGetSetThrown() {
-		assertNull(lr.getThrown());
-		lr.setThrown(null);
-		assertNull(lr.getThrown());
-		Throwable e = new Exception();
-		lr.setThrown(e);
-		assertEquals(e, lr.getThrown());
-	}
-
-	public void testSerialization() throws Exception {
-		lr.setLoggerName("logger");
-		lr.setResourceBundleName("bundles/java/util/logging/res2");
-		lr.setSourceClassName("class");
-		lr.setSourceMethodName("method");
-		lr.setParameters(new Object[] { new Object(), new Object() });
-		lr.setThreadID(1000);
-		lr.setThrown(new Exception("exception"));
-		lr.setSequenceNumber(12321312);
-		lr.setMillis(12313123);
-		lr.setResourceBundle(ResourceBundle.getBundle(
-				"bundles/java/util/logging/res", Locale.US));
-		if (!SerializationTester.assertEquals(lr)) {
-			LogRecord result = (LogRecord) SerializationTester.getLastOutput();
-			assertSame(result.getLevel(), lr.getLevel());
-			assertEquals(result.getLoggerName(), lr.getLoggerName());
-			assertEquals(result.getMessage(), lr.getMessage());
-			assertEquals(result.getResourceBundleName(), lr
-					.getResourceBundleName());
-			assertEquals(result.getSourceClassName(), lr.getSourceClassName());
-			assertEquals(result.getSourceMethodName(), lr.getSourceMethodName());
-			assertEquals(result.getMillis(), lr.getMillis());
-			Object[] oa = result.getParameters();
-			Object[] ob = lr.getParameters();
-			for (int i = 0; i < oa.length; i++) {
-				assertEquals(oa[i].toString(), ob[i].toString());
-			}
-			assertNotNull(result.getResourceBundle());
-			assertFalse(result.getResourceBundle().equals(
-					lr.getResourceBundle()));
-			assertEquals(result.getThreadID(), lr.getThreadID());
-			assertEquals(result.getThrown().getMessage(), lr.getThrown()
-					.getMessage());
-			assertEquals(result.getSequenceNumber(), lr.getSequenceNumber());
-
-		}
-	}
-
-	public void testSerializationInvalidBundleName() throws Exception {
-		lr.setLoggerName("logger");
-		lr.setResourceBundleName("bad bundle name");
-		lr.setSourceClassName("class");
-		lr.setSourceMethodName("method");
-		lr.setParameters(new Object[] { new Object(), new Object() });
-		lr.setThreadID(1000);
-		lr.setThrown(new Exception("exception"));
-		lr.setSequenceNumber(12321312);
-		lr.setMillis(12313123);
-		lr.setResourceBundle(ResourceBundle.getBundle(
-				"bundles/java/util/logging/res", Locale.US));
-		if (!SerializationTester.assertEquals(lr)) {
-			LogRecord result = (LogRecord) SerializationTester.getLastOutput();
-			assertSame(result.getLevel(), lr.getLevel());
-			assertEquals(result.getLoggerName(), lr.getLoggerName());
-			assertEquals(result.getMessage(), lr.getMessage());
-			assertEquals(result.getResourceBundleName(), lr
-					.getResourceBundleName());
-			assertEquals(result.getSourceClassName(), lr.getSourceClassName());
-			assertEquals(result.getSourceMethodName(), lr.getSourceMethodName());
-			assertEquals(result.getMillis(), lr.getMillis());
-			Object[] oa = result.getParameters();
-			Object[] ob = lr.getParameters();
-			for (int i = 0; i < oa.length; i++) {
-				assertEquals(oa[i].toString(), ob[i].toString());
-			}
-			assertNull(result.getResourceBundle());
-			assertEquals(result.getThreadID(), lr.getThreadID());
-			assertEquals(result.getThrown().getMessage(), lr.getThrown()
-					.getMessage());
-			assertEquals(result.getSequenceNumber(), lr.getSequenceNumber());
-
-		}
-	}
-
-	public void testSerializationCompability() throws Exception {
-		LogRecord r = new LogRecord(Level.ALL, "msg");
-		SerializationTester.assertCompabilityEquals(r,
-				"serialization/java/util/logging/LogRecord.ser");
-	}
-
-	public static class MockHandler extends Handler {
-		private String className;
-
-		private String methodName;
-
-		public void close() {
-		}
-
-		public void flush() {
-		}
-
-		public void publish(LogRecord record) {
-			className = record.getSourceClassName();
-			methodName = record.getSourceMethodName();
-		}
-
-		public String getSourceMethodName() {
-			return methodName;
-		}
-
-		public String getSourceClassName() {
-			return className;
-		}
-	}
-
-	// mock class, try to test when the sourceclass and sourcemethod of
-	// LogRecord is inited
-	public static class RecordFactory {
-
-		public static LogRecord getDefaultRecord() {
-			return new LogRecord(Level.SEVERE, MSG);
-		}
-
-		public static void log(Logger logger, LogRecord lr) {
-			logger.log(lr);
-		}
-	}
-
-	public static class MockLogger extends Logger {
-
-		/**
-		 * @param name
-		 * @param resourceBundleName
-		 */
-		public MockLogger(String name, String resourceBundleName) {
-			super(name, resourceBundleName);
-		}
-
-		public void log(Level l, String s) {
-			this.log(new LogRecord(l, s));
-		}
-
-		public void info(String s) {
-			super.info(s);
-		}
-
-		public void log(LogRecord record) {
-			if (isLoggable(record.getLevel())) {
-				// call the handlers of this logger
-				// TODO: What if an exception occured in handler?
-				Handler[] ha = this.getHandlers();
-				for (int i = 0; i < ha.length; i++) {
-					ha[i].publish(record);
-				}
-				// call the parent's handlers if set useParentHandlers
-				if (getUseParentHandlers()) {
-					Logger anyParent = this.getParent();
-					while (null != anyParent) {
-						ha = anyParent.getHandlers();
-						for (int i = 0; i < ha.length; i++) {
-							ha[i].publish(record);
-						}
-						if (anyParent.getUseParentHandlers()) {
-							anyParent = anyParent.getParent();
-						} else {
-							break;
-						}
-					}
-				}
-			}
-		}
-	}
-}
+/* Copyright 2004 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.harmony.logging.tests.java.util.logging;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+import java.util.logging.Logger;
+
+import junit.framework.TestCase;
+import tests.util.SerializationTester;
+
+public class LogRecordTest extends TestCase {
+
+	static final String MSG = "test msg, pls. ignore itb";
+
+	private LogRecord lr;
+
+	private static String className = LogRecordTest.class.getName();
+
+	protected void setUp() throws Exception {
+		super.setUp();
+		lr = new LogRecord(Level.CONFIG, MSG);
+
+	}
+
+	public void testLogRecordWithNullPointers() {
+		try {
+			new LogRecord(null, null);
+			fail("should throw NullPointerException");
+		} catch (NullPointerException e) {
+		}
+		try {
+			new LogRecord(null, MSG);
+			fail("should throw NullPointerException");
+		} catch (NullPointerException e) {
+		}
+		LogRecord r = new LogRecord(Level.WARNING, null);
+		assertSame(r.getLevel(), Level.WARNING);
+		assertNull(r.getMessage());
+	}
+
+	public void testGetSetLoggerName() {
+		assertNull(lr.getLoggerName());
+		lr.setLoggerName(null);
+		assertNull(lr.getLoggerName());
+		lr.setLoggerName("test logger name");
+		assertEquals("test logger name", lr.getLoggerName());
+	}
+
+	public void testGetSetResourceBundle() {
+		assertNull(lr.getResourceBundleName());
+		assertNull(lr.getResourceBundle());
+
+		lr.setResourceBundle(null);
+		assertNull(lr.getResourceBundle());
+
+		lr.setResourceBundleName("bundles/java/util/logging/res");
+		assertNull(lr.getResourceBundle());
+
+		lr.setResourceBundleName(null);
+		ResourceBundle rb = ResourceBundle
+				.getBundle("bundles/java/util/logging/res");
+		lr.setResourceBundle(rb);
+		assertEquals(rb, lr.getResourceBundle());
+		assertNull(lr.getResourceBundleName());
+	}
+
+	public void testGetSetResourceBundleName() {
+		assertNull(lr.getResourceBundleName());
+		lr.setResourceBundleName(null);
+		assertNull(lr.getResourceBundleName());
+		lr.setResourceBundleName("test");
+		assertEquals("test", lr.getResourceBundleName());
+	}
+
+	public void testGetSetLevel() {
+		try {
+			lr.setLevel(null);
+			fail("should throw NullPointerException");
+		} catch (NullPointerException e) {
+		}
+		assertSame(lr.getLevel(), Level.CONFIG);
+	}
+
+	public void testGetSetSequenceNumber() {
+		long l = lr.getSequenceNumber();
+		lr.setSequenceNumber(-111);
+		assertEquals(lr.getSequenceNumber(), -111L);
+		lr.setSequenceNumber(0);
+		assertEquals(lr.getSequenceNumber(), 0L);
+		lr = new LogRecord(Level.ALL, null);
+		assertEquals(lr.getSequenceNumber(), l + 1);
+	}
+
+	public void testGetSetSourceClassName() {
+		lr.setSourceClassName(null);
+		assertNull(lr.getSourceClassName());
+		lr.setSourceClassName("bad class name");
+		assertEquals("bad class name", lr.getSourceClassName());
+		lr.setSourceClassName(this.getClass().getName());
+		assertEquals(this.getClass().getName(), lr.getSourceClassName());
+	}
+
+	public void testGetSetSourceMethodName() {
+		lr.setSourceMethodName(null);
+		assertNull(lr.getSourceMethodName());
+		lr.setSourceMethodName("bad class name");
+		assertEquals("bad class name", lr.getSourceMethodName());
+		lr.setSourceMethodName(this.getClass().getName());
+		assertEquals(this.getClass().getName(), lr.getSourceMethodName());
+	}
+
+	public void testGetSourceDefaultValue() {
+		assertNull(lr.getSourceMethodName());
+		assertNull(lr.getSourceClassName());
+
+		// find class and method who called logger
+		Logger logger = Logger.global;
+		MockHandler handler = new MockHandler();
+		logger.addHandler(handler);
+		logger.log(Level.SEVERE, MSG);
+		assertEquals(this.getClass().getName(), handler.getSourceClassName());
+		assertEquals("testGetSourceDefaultValue", handler.getSourceMethodName());
+
+		// only set source method to null
+		lr = new LogRecord(Level.SEVERE, MSG);
+		lr.setSourceMethodName(null);
+		logger.log(lr);
+		assertEquals(null, handler.getSourceClassName());
+		assertEquals(null, handler.getSourceMethodName());
+
+		// only set source class to null
+		lr = new LogRecord(Level.SEVERE, MSG);
+		lr.setSourceClassName(null);
+		logger.log(lr);
+		assertEquals(null, handler.getSourceClassName());
+		assertEquals(null, handler.getSourceMethodName());
+
+		// set both
+		lr = new LogRecord(Level.SEVERE, MSG);
+		lr.setSourceClassName("className");
+		lr.setSourceMethodName(null);
+		logger.log(lr);
+		assertEquals("className", handler.getSourceClassName());
+		assertEquals(null, handler.getSourceMethodName());
+
+		// test if LogRecord is constructed in another class, and is published
+		// by Logger
+		logger.log(RecordFactory.getDefaultRecord());
+		assertEquals(this.getClass().getName(), handler.getSourceClassName());
+		assertEquals("testGetSourceDefaultValue", handler.getSourceMethodName());
+
+		lr = RecordFactory.getDefaultRecord();
+		// assertNull(lr.getSourceClassName());
+		// assertNull(lr.getSourceMethodName());
+		RecordFactory.log(logger, lr);
+		assertEquals(RecordFactory.class.getName(), handler
+				.getSourceClassName());
+		assertEquals("log", handler.getSourceMethodName());
+
+		// only try once to get the default value
+		lr = RecordFactory.getDefaultRecord();
+		assertNull(lr.getSourceClassName());
+		assertNull(lr.getSourceMethodName());
+		RecordFactory.log(logger, lr);
+		assertNull(handler.getSourceClassName());
+		assertNull(handler.getSourceMethodName());
+
+		// it cannot find correct default value when logger is subclass
+		MockLogger ml = new MockLogger("foo", null);
+		ml.addHandler(handler);
+		ml.info(MSG);
+		assertEquals(className + "$MockLogger", handler.getSourceClassName());
+		assertEquals("info", handler.getSourceMethodName());
+
+		// it can find nothing when only call Subclass
+		ml = new MockLogger("foo", null);
+		ml.addHandler(handler);
+		ml.log(Level.SEVERE, MSG);
+		assertNull(handler.getSourceClassName());
+		assertNull(handler.getSourceMethodName());
+
+		// test if don't call logger, what is the default value
+		lr = new LogRecord(Level.SEVERE, MSG);
+		handler.publish(lr);
+		assertNull(handler.getSourceClassName());
+		assertNull(handler.getSourceMethodName());
+		logger.removeHandler(handler);
+	}
+
+	public void testGetSetMessage() {
+		assertEquals(MSG, lr.getMessage());
+		lr.setMessage(null);
+		assertNull(lr.getMessage());
+		lr.setMessage("");
+		assertEquals("", lr.getMessage());
+	}
+
+	public void testGetSetParameters() {
+		assertNull(lr.getParameters());
+		lr.setParameters(null);
+		assertNull(lr.getParameters());
+		Object[] oa = new Object[0];
+		lr.setParameters(oa);
+		assertEquals(oa, lr.getParameters());
+		oa = new Object[] { new Object(), new Object() };
+		lr.setParameters(oa);
+		assertSame(oa, lr.getParameters());
+	}
+
+	public void testGetSetMillis() {
+		long milli = lr.getMillis();
+        assertTrue(milli > 0);
+		lr.setMillis(-1);
+		assertEquals(-1, lr.getMillis());
+		lr.setMillis(0);
+		assertEquals(0, lr.getMillis());
+	}
+
+	public void testGetSetThreadID() {
+		// TODO how to test the different thread
+		int id = lr.getThreadID();
+		lr = new LogRecord(Level.ALL, "a1");
+		assertEquals(id, lr.getThreadID());
+		lr.setThreadID(id + 10);
+		assertEquals(id + 10, lr.getThreadID());
+		lr = new LogRecord(Level.ALL, "a1");
+		assertEquals(id, lr.getThreadID());
+	}
+
+	public void testGetSetThrown() {
+		assertNull(lr.getThrown());
+		lr.setThrown(null);
+		assertNull(lr.getThrown());
+		Throwable e = new Exception();
+		lr.setThrown(e);
+		assertEquals(e, lr.getThrown());
+	}
+
+	public void testSerialization() throws Exception {
+		lr.setLoggerName("logger");
+		lr.setResourceBundleName("bundles/java/util/logging/res2");
+		lr.setSourceClassName("class");
+		lr.setSourceMethodName("method");
+		lr.setParameters(new Object[] { new Object(), new Object() });
+		lr.setThreadID(1000);
+		lr.setThrown(new Exception("exception"));
+		lr.setSequenceNumber(12321312);
+		lr.setMillis(12313123);
+		lr.setResourceBundle(ResourceBundle.getBundle(
+				"bundles/java/util/logging/res", Locale.US));
+		if (!SerializationTester.assertEquals(lr)) {
+			LogRecord result = (LogRecord) SerializationTester.getLastOutput();
+			assertSame(result.getLevel(), lr.getLevel());
+			assertEquals(result.getLoggerName(), lr.getLoggerName());
+			assertEquals(result.getMessage(), lr.getMessage());
+			assertEquals(result.getResourceBundleName(), lr
+					.getResourceBundleName());
+			assertEquals(result.getSourceClassName(), lr.getSourceClassName());
+			assertEquals(result.getSourceMethodName(), lr.getSourceMethodName());
+			assertEquals(result.getMillis(), lr.getMillis());
+			Object[] oa = result.getParameters();
+			Object[] ob = lr.getParameters();
+			for (int i = 0; i < oa.length; i++) {
+				assertEquals(oa[i].toString(), ob[i].toString());
+			}
+			assertNotNull(result.getResourceBundle());
+			assertFalse(result.getResourceBundle().equals(
+					lr.getResourceBundle()));
+			assertEquals(result.getThreadID(), lr.getThreadID());
+			assertEquals(result.getThrown().getMessage(), lr.getThrown()
+					.getMessage());
+			assertEquals(result.getSequenceNumber(), lr.getSequenceNumber());
+
+		}
+	}
+
+	public void testSerializationInvalidBundleName() throws Exception {
+		lr.setLoggerName("logger");
+		lr.setResourceBundleName("bad bundle name");
+		lr.setSourceClassName("class");
+		lr.setSourceMethodName("method");
+		lr.setParameters(new Object[] { new Object(), new Object() });
+		lr.setThreadID(1000);
+		lr.setThrown(new Exception("exception"));
+		lr.setSequenceNumber(12321312);
+		lr.setMillis(12313123);
+		lr.setResourceBundle(ResourceBundle.getBundle(
+				"bundles/java/util/logging/res", Locale.US));
+		if (!SerializationTester.assertEquals(lr)) {
+			LogRecord result = (LogRecord) SerializationTester.getLastOutput();
+			assertSame(result.getLevel(), lr.getLevel());
+			assertEquals(result.getLoggerName(), lr.getLoggerName());
+			assertEquals(result.getMessage(), lr.getMessage());
+			assertEquals(result.getResourceBundleName(), lr
+					.getResourceBundleName());
+			assertEquals(result.getSourceClassName(), lr.getSourceClassName());
+			assertEquals(result.getSourceMethodName(), lr.getSourceMethodName());
+			assertEquals(result.getMillis(), lr.getMillis());
+			Object[] oa = result.getParameters();
+			Object[] ob = lr.getParameters();
+			for (int i = 0; i < oa.length; i++) {
+				assertEquals(oa[i].toString(), ob[i].toString());
+			}
+			assertNull(result.getResourceBundle());
+			assertEquals(result.getThreadID(), lr.getThreadID());
+			assertEquals(result.getThrown().getMessage(), lr.getThrown()
+					.getMessage());
+			assertEquals(result.getSequenceNumber(), lr.getSequenceNumber());
+
+		}
+	}
+
+	public void testSerializationCompability() throws Exception {
+		LogRecord r = new LogRecord(Level.ALL, "msg");
+		SerializationTester.assertCompabilityEquals(r,
+				"serialization/java/util/logging/LogRecord.ser");
+	}
+
+	public static class MockHandler extends Handler {
+		private String className;
+
+		private String methodName;
+
+		public void close() {
+		}
+
+		public void flush() {
+		}
+
+		public void publish(LogRecord record) {
+			className = record.getSourceClassName();
+			methodName = record.getSourceMethodName();
+		}
+
+		public String getSourceMethodName() {
+			return methodName;
+		}
+
+		public String getSourceClassName() {
+			return className;
+		}
+	}
+
+	// mock class, try to test when the sourceclass and sourcemethod of
+	// LogRecord is inited
+	public static class RecordFactory {
+
+		public static LogRecord getDefaultRecord() {
+			return new LogRecord(Level.SEVERE, MSG);
+		}
+
+		public static void log(Logger logger, LogRecord lr) {
+			logger.log(lr);
+		}
+	}
+
+	public static class MockLogger extends Logger {
+
+		/**
+		 * @param name
+		 * @param resourceBundleName
+		 */
+		public MockLogger(String name, String resourceBundleName) {
+			super(name, resourceBundleName);
+		}
+
+		public void log(Level l, String s) {
+			this.log(new LogRecord(l, s));
+		}
+
+		public void info(String s) {
+			super.info(s);
+		}
+
+		public void log(LogRecord record) {
+			if (isLoggable(record.getLevel())) {
+				// call the handlers of this logger
+				// TODO: What if an exception occured in handler?
+				Handler[] ha = this.getHandlers();
+				for (int i = 0; i < ha.length; i++) {
+					ha[i].publish(record);
+				}
+				// call the parent's handlers if set useParentHandlers
+				if (getUseParentHandlers()) {
+					Logger anyParent = this.getParent();
+					while (null != anyParent) {
+						ha = anyParent.getHandlers();
+						for (int i = 0; i < ha.length; i++) {
+							ha[i].publish(record);
+						}
+						if (anyParent.getUseParentHandlers()) {
+							anyParent = anyParent.getParent();
+						} else {
+							break;
+						}
+					}
+				}
+			}
+		}
+	}
+}

Propchange: incubator/harmony/enhanced/classlib/trunk/modules/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogRecordTest.java
------------------------------------------------------------------------------
    svn:eol-style = native