new log tests
diff --git a/tests/org.eclipse.core.tests.runtime/plugin.xml b/tests/org.eclipse.core.tests.runtime/plugin.xml index 88721ab..2fca6da 100644 --- a/tests/org.eclipse.core.tests.runtime/plugin.xml +++ b/tests/org.eclipse.core.tests.runtime/plugin.xml
@@ -33,6 +33,9 @@ <test id="internal.core.runtime.CipherTest"> <run class="org.eclipse.core.tests.internal.runtime.CipherTest"/> </test> + <test id="internal.core.runtime.LogSerializationTest"> + <run class="org.eclipse.core.tests.internal.runtime.LogSerializationTest"/> + </test> <test id="internal.core.registrycache.SimpleCacheTests"> <run class="org.eclipse.core.tests.internal.registrycache.SimpleCacheTests"/> </test>
diff --git a/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/internal/runtime/LogSerializationTest.java b/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/internal/runtime/LogSerializationTest.java new file mode 100644 index 0000000..7e76405 --- /dev/null +++ b/tests/org.eclipse.core.tests.runtime/src/org/eclipse/core/tests/internal/runtime/LogSerializationTest.java
@@ -0,0 +1,103 @@ +package org.eclipse.core.tests.internal.runtime; + +import java.io.*; + +import junit.framework.Test; +import junit.framework.TestSuite; +import org.eclipse.core.internal.runtime.PlatformLogReader; +import org.eclipse.core.internal.runtime.PlatformLogWriter; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.tests.runtime.RuntimeTest; + +public class LogSerializationTest extends RuntimeTest { + + protected File logFile = new File("c:\\temp\\test\\log.txt"); + +public LogSerializationTest(String name) { + super(name); +} +public LogSerializationTest() { + super(""); +} +public static Test suite() { + return new TestSuite(LogSerializationTest.class); +} +protected void assertEquals(String msg, IStatus[] expected, IStatus[] actual) { + if (expected == null) { + assertNull(msg + " expected null but got: " + actual, actual); + return; + } + if (actual == null) { + assertNull(msg + " expected " + expected + " but got null", expected); + return; + } + assertEquals(msg + " different number of statuses", expected.length, actual.length); + for (int i = 0, imax = expected.length; i < imax; i++) { + assertEquals(msg + "differ at status " + i, expected[i], actual[i]); + } +} +protected void assertEquals(String msg, IStatus expected, IStatus actual) { + assertEquals(msg + " severity", expected.getSeverity(), actual.getSeverity()); + assertEquals(msg + " plugin-id", expected.getPlugin(), actual.getPlugin()); + assertEquals(msg + " code", expected.getCode(), actual.getCode()); + assertEquals(msg + " message", expected.getMessage(), actual.getMessage()); + assertEquals(msg + " exception", expected.getException(), actual.getException()); + assertEquals(msg + " children", expected.getChildren(), actual.getChildren()); +} +protected void assertEquals(String msg, Throwable expected, Throwable actual) { + if (expected == null) { + assertNull(msg + " expected null but got: " + actual, actual); + return; + } + if (actual == null) { + assertNull(msg + " expected " + expected + " but got null", expected); + return; + } + assertEquals(msg + " stack trace", + encodeStackTrace(expected), + encodeStackTrace(actual)); + assertEquals(msg + " message", expected.getMessage(), actual.getMessage()); +} +protected String encodeStackTrace(Throwable t) { + StringWriter sWriter = new StringWriter(); + PrintWriter pWriter = new PrintWriter(sWriter); + pWriter.println(); + t.printStackTrace(pWriter); + pWriter.flush(); + return sWriter.toString(); +} +protected void doTest(String msg, IStatus[] oldStats) { + writeLog(oldStats); + IStatus[] newStats = readLog(); + assertEquals(msg, oldStats, newStats); +} +protected void doTest(String msg, IStatus status) { + doTest(msg, new IStatus[] {status}); +} +protected IStatus[] readLog() { + PlatformLogReader reader = new PlatformLogReader(); + return reader.readLogFile(logFile.getAbsolutePath()); +} +protected void setUp() throws Exception { + super.setUp(); +} +protected void tearDown() throws Exception { + super.tearDown(); + logFile.delete(); +} +public void testSimpleSerialize() { + IStatus status = new Status(IStatus.WARNING, "org.foo", 1, "This is the message", new NullPointerException()); + doTest("1.0", status); +} +protected void writeLog(IStatus status) { + writeLog(new IStatus[] {status}); +} +protected void writeLog(IStatus[] statuses) { + PlatformLogWriter writer = new PlatformLogWriter(logFile); + for (int i = 0; i < statuses.length; i++) { + writer.logging(statuses[i], "org.eclipse.core.tests.runtime"); + } + writer.shutdown(); +} +} \ No newline at end of file