[P-unit-devel] SF.net SVN: p-unit: [157] trunk/punit
Status: Beta
Brought to you by:
zhanghuangzhu
|
From: <zha...@us...> - 2007-05-24 20:00:20
|
Revision: 157
http://p-unit.svn.sourceforge.net/p-unit/?rev=157&view=rev
Author: zhanghuangzhu
Date: 2007-05-24 12:59:58 -0700 (Thu, 24 May 2007)
Log Message:
-----------
Andrew Zhang: refactored stream report system. Now we are ready for concurrency.
Modified Paths:
--------------
trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java
trunk/punit/src/org/punit/reporter/stream/console/ConsoleLogger.java
trunk/punit/src/org/punit/reporter/stream/file/FileLogger.java
trunk/punit/src/org/punit/runner/PUnitConcurrentRunner.java
trunk/punit/src/org/punit/runner/method/ConcurrentTestMethodRunner.java
trunk/punit/src/org/punit/watcher/MemoryWatcher.java
trunk/punit.test/src/tests/api/org/punit/reporter/stream/PUnitStreamListenerTest.java
trunk/punit.test/src/tests/api/org/punit/runner/PUnitConcurrentRunnerTest.java
Added Paths:
-----------
trunk/punit/src/org/punit/reporter/stream/TestResult.java
Modified: trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java
===================================================================
--- trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java 2007-05-24 17:44:38 UTC (rev 156)
+++ trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java 2007-05-24 19:59:58 UTC (rev 157)
@@ -15,25 +15,25 @@
import org.punit.watcher.*;
public abstract class StreamLoggerListener implements PUnitEventListener {
-
- protected transient PrintStream _ps;
- protected transient Summary _summary;
+ protected transient PrintStream _outStream;
- private transient boolean _watchersStart;
+ protected transient PrintStream _errStream;
+ protected transient TestResult _result;
+
public Level _level = Level.FINE;
public StreamLoggerListener() {
}
- public StreamLoggerListener(PrintStream ps) {
- _ps = ps;
+ public StreamLoggerListener(PrintStream out, PrintStream err) {
+ _outStream = out;
+ _errStream = err;
}
public void onRunnerStart(Class clazz, Runner runner) {
- _summary = new Summary();
- _summary.start();
+ _result = new TestResult();
StringBuffer sb = new StringBuffer();
sb.append("["); //$NON-NLS-1$
sb.append(runner.punitName());
@@ -46,10 +46,37 @@
}
public void onRunnerEnd(Class clazz, Runner runner) {
- _summary.stop();
- _summary.log(this);
+ logResult();
}
+ public void logResult() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(Messages.getString("logger.02")); //$NON-NLS-1$
+ sb.append(_result.methodCount());
+ sb.append(", "); //$NON-NLS-1$
+ sb.append(Messages.getString("logger.03")); //$NON-NLS-1$
+ List failures = _result.failures();
+ int failuresCount = failures.size();
+ sb.append(failuresCount);
+ sb.append(" ("); //$NON-NLS-1$
+ if (failuresCount == 0) {
+ sb.append(Messages.getString("logger.04")); //$NON-NLS-1$
+ } else {
+ sb.append(Messages.getString("logger.05")); //$NON-NLS-1$
+ }
+ sb.append(") "); //$NON-NLS-1$
+ sb.append(ReporterUtil.LINE_SEPERATOR);
+ logErr(sb.toString(), Level.INFO);
+ TraverserUtil.traverse(failures.iterator(), new Traverser() {
+ int count = 0;
+
+ public void traverse(Object obj) {
+ logErr(++count + ")", Level.INFO); //$NON-NLS-1$
+ ((Throwable) obj).printStackTrace(_errStream);
+ }
+ });
+ }
+
public void onSuiteStart(PUnitTestSuite suite) {
StringBuffer sb = new StringBuffer();
sb.append(Messages.getString("logger.06")); //$NON-NLS-1$
@@ -57,63 +84,48 @@
sb.append(ReporterUtil.LINE_SEPERATOR);
log(sb.toString(), Level.INFO);
}
-
- public void onSuiteEnd(PUnitTestSuite suite) {
-
- }
-
- public void onClassStart(Class clazz) {
- log(clazz.getName() + ReporterUtil.LINE_SEPERATOR, Level.INFO);
- }
- public void onClassEnd(Class clazz) {
+ public void onClassStart(Class clazz) {
+ logln(clazz.getName(), Level.INFO);
}
- public void onMethodStart(Method method, Object instance, Object[] params) {
- log(ReporterUtil.simpleMethodName(method, params), Level.INFO);
+ public void onMethodEnd(Method method, Object instance, Object[] params,
+ Throwable t, List watchers) {
+ logTestMethodResult(method, params, watchers, t);
+ _result.countMethod();
+ if (t != null) {
+ _result.addThrowable(t);
+ }
}
- public void onMethodEnd(Method method, Object instance, Object[] params, Throwable t, List watchers) {
- _summary.countMethod();
+ private void logTestMethodResult(Method method, Object[] params, List watchers, Throwable t) {
+ log(ReporterUtil.simpleMethodName(method, params), Level.INFO);
+ if (watchers.size() > 0) {
+ final Iterator iter = watchers.iterator();
+ Watcher watcher = (Watcher) iter.next();
+ log(" - [" + watcher.stringValue(), Level.FINE); //$NON-NLS-1$
+ TraverserUtil.traverse(watchers.iterator(), new Traverser() {
+ public void traverse(Object obj) {
+ Watcher watcher = (Watcher) obj;
+ log("," + watcher.stringValue(), Level.FINE); //$NON-NLS-1$
+ }
+ });
+ log("]", Level.INFO); //$NON-NLS-1$
+ }
logln(Level.INFO);
- if (t != null) {
+ if(t != null) {
logln(t.toString(), Level.INFO);
- _summary.addThrowable(t);
}
}
- public void onWatchersStart(List watchers) {
- _watchersStart = true;
+ public void setStream(PrintStream out, PrintStream err) {
+ _outStream = out;
+ _errStream = err;
}
- public void onWatcherStart(Watcher watcher) {
- }
-
- public void onWatchersEnd(List watchers) {
- log("]", Level.FINE); //$NON-NLS-1$
- }
-
- public void onWatcherEnd(Watcher watcher) {
- String watchValue = watcher.stringValue();
- if (_watchersStart) {
- log(" - [" + watchValue, Level.FINE); //$NON-NLS-1$
- } else {
- log("," + watcher.stringValue(), Level.FINE); //$NON-NLS-1$
- }
- _watchersStart = false;
- }
-
- public void setLogLevel(Level level) {
- _level = level;
- }
-
- public void setOutputStream(PrintStream ps) {
- _ps = ps;
- }
-
public PrintStream printStream() {
- return _ps;
+ return _outStream;
}
public void logln(Level level) {
@@ -125,67 +137,54 @@
}
public void log(String message, Level level) {
- if (_ps == null) {
+ log(_outStream, message, level);
+ }
+
+ public void logErr(String message, Level level) {
+ log(_errStream, message, level);
+ }
+
+ public void log(PrintStream ps, String message, Level level) {
+ if (ps == null) {
return;
}
if (level.intValue() < _level.intValue()) {
return;
}
- _ps.print(message);
- _ps.flush();
+ ps.print(message);
+ ps.flush();
}
- static class Summary {
- private int _methodCount;
+ public void setLogLevel(Level level) {
+ _level = level;
+ }
- private TimeWatcher _timeWatcher = new TimeWatcher();
+ public void onWatchersStart(List watchers) {
+ // nothing needs to do
+ }
- private List _throwableList = new ArrayList();
+ public void onWatcherStart(Watcher watcher) {
+ // nothing needs to do
+ }
- public void countMethod() {
- ++_methodCount;
- }
+ public void onWatchersEnd(List watchers) {
+ // nothing needs to do
+ }
- public void start() {
- _timeWatcher.start();
- _methodCount = 0;
- _throwableList.clear();
- }
+ public void onWatcherEnd(Watcher watcher) {
+ // nothing needs to do
+ }
- public void stop() {
- _timeWatcher.stop();
- }
+ public void onSuiteEnd(PUnitTestSuite suite) {
+ // nothing needs to do
+ }
+
+ public void onClassEnd(Class clazz) {
+ // nothing needs to do
+ }
- public void log(final StreamLoggerListener logger) {
- StringBuffer sb = new StringBuffer();
- sb.append(Messages.getString("logger.02")); //$NON-NLS-1$
- sb.append(_methodCount);
- sb.append(", "); //$NON-NLS-1$
- sb.append(Messages.getString("logger.03")); //$NON-NLS-1$
- int failures = _throwableList.size();
- sb.append(failures);
- sb.append(" ("); //$NON-NLS-1$
- if (failures == 0) {
- sb.append(Messages.getString("logger.04")); //$NON-NLS-1$
- } else {
- sb.append(Messages.getString("logger.05")); //$NON-NLS-1$
- }
- sb.append(") "); //$NON-NLS-1$
- sb.append(_timeWatcher.stringValue());
- sb.append(ReporterUtil.LINE_SEPERATOR);
- logger.log(sb.toString(), Level.INFO);
- TraverserUtil.traverse(_throwableList.iterator(), new Traverser() {
- int count = 0;
- public void traverse(Object obj) {
- logger.log(++count + ")", Level.INFO); //$NON-NLS-1$
- ((Throwable) obj).printStackTrace(logger._ps);
- }
- });
- }
-
- public void addThrowable(Throwable t) {
- _throwableList.add(t);
- }
+ public void onMethodStart(Method method, Object instance, Object[] params) {
+ // nothing needs to do
}
}
\ No newline at end of file
Added: trunk/punit/src/org/punit/reporter/stream/TestResult.java
===================================================================
--- trunk/punit/src/org/punit/reporter/stream/TestResult.java (rev 0)
+++ trunk/punit/src/org/punit/reporter/stream/TestResult.java 2007-05-24 19:59:58 UTC (rev 157)
@@ -0,0 +1,27 @@
+/* (C) Copyright 2007, by Andrew Zhang */
+
+package org.punit.reporter.stream;
+
+import java.util.*;
+
+public class TestResult {
+ private int _methodCount;
+
+ private List _failures = new ArrayList();
+
+ public synchronized void countMethod() {
+ ++_methodCount;
+ }
+
+ public synchronized void addThrowable(Throwable t) {
+ _failures.add(t);
+ }
+
+ public int methodCount() {
+ return _methodCount;
+ }
+
+ public List failures() {
+ return _failures;
+ }
+}
Modified: trunk/punit/src/org/punit/reporter/stream/console/ConsoleLogger.java
===================================================================
--- trunk/punit/src/org/punit/reporter/stream/console/ConsoleLogger.java 2007-05-24 17:44:38 UTC (rev 156)
+++ trunk/punit/src/org/punit/reporter/stream/console/ConsoleLogger.java 2007-05-24 19:59:58 UTC (rev 157)
@@ -12,11 +12,11 @@
private void readObject(java.io.ObjectInputStream in) throws IOException,
ClassNotFoundException {
- _ps = System.err;
+ _outStream = System.err;
}
public ConsoleLogger() {
- super(System.err);
+ super(System.out, System.err);
}
public boolean supportParentRunner() {
Modified: trunk/punit/src/org/punit/reporter/stream/file/FileLogger.java
===================================================================
--- trunk/punit/src/org/punit/reporter/stream/file/FileLogger.java 2007-05-24 17:44:38 UTC (rev 156)
+++ trunk/punit/src/org/punit/reporter/stream/file/FileLogger.java 2007-05-24 19:59:58 UTC (rev 157)
@@ -16,7 +16,7 @@
String fileName = ReporterUtil.generateFileName(clazz, runner) + ".txt"; //$NON-NLS-1$
try {
PrintStream ps = new PrintStream(fileName);
- setOutputStream(ps);
+ setStream(ps, ps);
} catch (Exception e) {
throw new IllegalStateException(e);
}
@@ -25,7 +25,7 @@
public void onRunnerEnd(Class clazz, Runner runner) {
super.onRunnerEnd(clazz, runner);
- _ps.close();
+ _outStream.close();
}
public boolean supportParentRunner() {
Modified: trunk/punit/src/org/punit/runner/PUnitConcurrentRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/PUnitConcurrentRunner.java 2007-05-24 17:44:38 UTC (rev 156)
+++ trunk/punit/src/org/punit/runner/PUnitConcurrentRunner.java 2007-05-24 19:59:58 UTC (rev 157)
@@ -5,6 +5,7 @@
import org.punit.builder.suite.*;
import org.punit.message.*;
import org.punit.runner.method.*;
+import org.punit.util.*;
public class PUnitConcurrentRunner extends PUnitAbstractRunner {
@@ -12,6 +13,10 @@
private static final int DEFAULT_CONCURRENT_COUNT = 10;
+ public static void main(String[] args) {
+ RunnerUtil.run(new PUnitConcurrentRunner(), args);
+ }
+
public PUnitConcurrentRunner() {
this(PUnitConcurrentRunner.DEFAULT_CONCURRENT_COUNT);
}
Modified: trunk/punit/src/org/punit/runner/method/ConcurrentTestMethodRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/method/ConcurrentTestMethodRunner.java 2007-05-24 17:44:38 UTC (rev 156)
+++ trunk/punit/src/org/punit/runner/method/ConcurrentTestMethodRunner.java 2007-05-24 19:59:58 UTC (rev 157)
@@ -56,14 +56,15 @@
}
_threads = new TestMethodThread[threadCount];
for (int i = 0; i < _threads.length; ++i) {
- _threads[i] = new TestMethodThread(this);
+ _threads[i] = new TestMethodThread(this, "punit concurrent method runner"); //$NON-NLS-1$
}
}
private class TestMethodThread extends Thread {
ConcurrentTestMethodRunner _runner;
- public TestMethodThread(ConcurrentTestMethodRunner runner) {
+ public TestMethodThread(ConcurrentTestMethodRunner runner, String threadName) {
+ super(threadName);
_runner = runner;
}
Modified: trunk/punit/src/org/punit/watcher/MemoryWatcher.java
===================================================================
--- trunk/punit/src/org/punit/watcher/MemoryWatcher.java 2007-05-24 17:44:38 UTC (rev 156)
+++ trunk/punit/src/org/punit/watcher/MemoryWatcher.java 2007-05-24 19:59:58 UTC (rev 157)
@@ -19,7 +19,7 @@
_stop = false;
MemoryUtil.clear();
_maxUsedMemory = _startUsedMemory = MemoryUtil.usedMemory();
- new MemoryWatcherThread().start();
+ new MemoryWatcherThread("memory watcher thread").start(); //$NON-NLS-1$
}
public void stop() {
@@ -39,6 +39,10 @@
}
private class MemoryWatcherThread extends Thread {
+ public MemoryWatcherThread(String threadName) {
+ super(threadName);
+ }
+
public void run() {
while(!_stop) {
monitorMemory();
Modified: trunk/punit.test/src/tests/api/org/punit/reporter/stream/PUnitStreamListenerTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/reporter/stream/PUnitStreamListenerTest.java 2007-05-24 17:44:38 UTC (rev 156)
+++ trunk/punit.test/src/tests/api/org/punit/reporter/stream/PUnitStreamListenerTest.java 2007-05-24 19:59:58 UTC (rev 157)
@@ -19,7 +19,7 @@
protected void setUp() throws Exception {
_mockPrintStream = new MockPrintStream(System.err);
- _logger.setOutputStream(_mockPrintStream);
+ _logger.setStream(_mockPrintStream, _mockPrintStream);
}
public void test1() {
Modified: trunk/punit.test/src/tests/api/org/punit/runner/PUnitConcurrentRunnerTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/runner/PUnitConcurrentRunnerTest.java 2007-05-24 17:44:38 UTC (rev 156)
+++ trunk/punit.test/src/tests/api/org/punit/runner/PUnitConcurrentRunnerTest.java 2007-05-24 19:59:58 UTC (rev 157)
@@ -19,7 +19,7 @@
}
public void testMain() {
- PUnitSoloRunner.main(new String[] {TestSuiteClass.class.getName()});
+ PUnitConcurrentRunner.main(new String[] {TestSuiteClass.class.getName()});
}
public void testRun() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|