[P-unit-devel] SF.net SVN: p-unit: [319] trunk/punit/src/org/punit/method/runner
Status: Beta
Brought to you by:
zhanghuangzhu
|
From: <cu...@us...> - 2008-06-16 16:17:58
|
Revision: 319
http://p-unit.svn.sourceforge.net/p-unit/?rev=319&view=rev
Author: cuvavu
Date: 2008-06-16 09:17:56 -0700 (Mon, 16 Jun 2008)
Log Message:
-----------
Restoring the original ordering for running a method. This is almost a revert of previous change, probably worth looking at last two revisions to get a grip of where the code has gone.
Modified Paths:
--------------
trunk/punit/src/org/punit/method/runner/AbstractMethodRunner.java
trunk/punit/src/org/punit/method/runner/ConcurrentMethodRunner.java
trunk/punit/src/org/punit/method/runner/SoloMethodRunner.java
Modified: trunk/punit/src/org/punit/method/runner/AbstractMethodRunner.java
===================================================================
--- trunk/punit/src/org/punit/method/runner/AbstractMethodRunner.java 2008-06-10 08:22:58 UTC (rev 318)
+++ trunk/punit/src/org/punit/method/runner/AbstractMethodRunner.java 2008-06-16 16:17:56 UTC (rev 319)
@@ -46,7 +46,7 @@
protected transient Class<? extends Throwable> _expectedException;
- protected abstract void runImpl( boolean doNormalSetupAndTeardown ) throws Throwable;
+ protected abstract void runImpl( Object testInstance, Method method, Object[] params ) throws Throwable;
public AbstractMethodRunner() {
_watchers.add(_timeWatcher);
@@ -75,13 +75,7 @@
try {
if (needsRunMethod()) {
init(testInstance, method, params);
- setUpBeforeWatchers(params);
- startWatchers(testInstance, method, params);
- setUpAfterWatchers(params);
- startToStopThread();
- runImpl( doNormalSetupAndTeardown(params) );
- stopToStopThread();
- runCheckMethod(testInstance, params);
+ runImpl( testInstance, method, params );
} else {
startWatchers(testInstance, method, params);
}
@@ -89,43 +83,32 @@
throwable = t;
} finally {
try {
- if (needsRunMethod()) {
- tearDownBeforeWatchers(params);
+ if (!needsRunMethod()) {
+ stopWatchers(testInstance, method, params);
}
} catch (Throwable t) {
if(throwable == null) {
throwable = t;
}
- } finally {
- try {
- stopWatchers(testInstance, method, params);
- if (needsRunMethod()) {
- tearDownAfterWatchers(params);
- }
- } catch (Throwable t) {
- if(throwable == null) {
- throwable = t;
- }
- }
}
}
onMethodEnd(method, testInstance, params, throwable);
}
- private void startToStopThread() {
+ protected void startToStopThread() {
if (_toStopThread != null) {
_toStopThread.start();
}
}
- private void stopToStopThread() {
+ protected void stopToStopThread() {
if (_toStopThread != null) {
_toStopThread.close();
_toStopThread = null;
}
}
- private void runCheckMethod(Object testInstance, Object[] params) {
+ protected void runCheckMethod(Object testInstance, Object[] params) {
if (_checkMethod != null) {
ReflectionUtil.invokeMethod(_checkMethod, testInstance, params);
}
@@ -171,17 +154,12 @@
} else if (_convention.isParameterizedTest(_class)) {
((Parameterized) _testInstance)
.setUpBeforeWatchers((Parameter) params[0]);
+ } else {
+ setUp();
}
}
-
- private boolean doNormalSetupAndTeardown(Object[] params) throws Throwable {
- if (_convention.isPUnitTest(_class) || _convention.isParameterizedTest(_class)) {
- return false;
- }
- return true;
- }
- private void setUpAfterWatchers(Object[] params) throws Throwable {
+ protected void setUpAfterWatchers(Object[] params) throws Throwable {
if (_convention.isPUnitTest(_class)) {
((Test) _testInstance).setUpAfterWatchers();
} else if (_convention.isParameterizedTest(_class)) {
@@ -190,7 +168,7 @@
}
}
- private void tearDownBeforeWatchers(Object[] params) throws Throwable {
+ protected void tearDownBeforeWatchers(Object[] params) throws Throwable {
if (_convention.isPUnitTest(_class)) {
((Test) _testInstance).tearDownBeforeWatchers();
} else if (_convention.isParameterizedTest(_class)) {
@@ -199,12 +177,14 @@
}
}
- private void tearDownAfterWatchers(Object[] params) throws Throwable {
+ protected void tearDownAfterWatchers(Object[] params) throws Throwable {
if (_convention.isPUnitTest(_class)) {
((Test) _testInstance).tearDownAfterWatchers();
} else if (_convention.isParameterizedTest(_class)) {
((Parameterized) _testInstance)
.tearDownAfterWatchers((Parameter) params[0]);
+ } else {
+ tearDown();
}
}
Modified: trunk/punit/src/org/punit/method/runner/ConcurrentMethodRunner.java
===================================================================
--- trunk/punit/src/org/punit/method/runner/ConcurrentMethodRunner.java 2008-06-10 08:22:58 UTC (rev 318)
+++ trunk/punit/src/org/punit/method/runner/ConcurrentMethodRunner.java 2008-06-16 16:17:56 UTC (rev 319)
@@ -2,6 +2,7 @@
package org.punit.method.runner;
+import java.lang.reflect.Method;
import java.util.concurrent.*;
import org.punit.exception.*;
@@ -22,21 +23,23 @@
_concurrentCount = concurrentCount;
}
- protected void runImpl( boolean doNormalSetupAndTeardown ) throws Throwable {
- startThreads( doNormalSetupAndTeardown );
+ protected void runImpl( Object testInstance, Method method,
+ Object[] params ) throws Throwable {
+ startThreads( testInstance, method, params );
joinThreads();
if (_concurrentException.size() > 0) {
throw _concurrentException;
}
}
- private void startThreads( boolean doNormalSetupAndTeardown ) {
+ private void startThreads( Object testInstance, Method method,
+ Object[] params ) {
int count = _convention.getConcurrentCount(_testInstance, _method);
int threadCount = count > 0 ? count : _concurrentCount;
_threads = new TestMethodThread[threadCount];
_barrier = new CyclicBarrier(threadCount);
for (int i = 0; i < _threads.length; ++i) {
- _threads[i] = new TestMethodThread("punit concurrent method runner", doNormalSetupAndTeardown); //$NON-NLS-1$
+ _threads[i] = new TestMethodThread("punit concurrent method runner", testInstance, method, params); //$NON-NLS-1$
}
for (int i = 0; i < _threads.length; ++i) {
_threads[i].start();
@@ -59,29 +62,40 @@
private class TestMethodThread extends Thread {
- boolean doNormalSetupAndTeardown;
+ private Object testInstance;
+ private Method method;
+ private Object[] params;
- public TestMethodThread(String threadName, boolean doNormalSetupAndTeardown) {
+ public TestMethodThread(String threadName, Object testInstance, Method method,
+ Object[] params ) {
super(threadName);
- this.doNormalSetupAndTeardown = doNormalSetupAndTeardown;
+ this.testInstance = testInstance;
+ this.method = method;
+ this.params = params;
}
public void run() {
try {
_barrier.await();
try {
- if (doNormalSetupAndTeardown) {
- setUp();
- }
+ setUpBeforeWatchers(params);
+ startWatchers(testInstance, method, params);
+ setUpAfterWatchers(params);
+ startToStopThread();
ConcurrentMethodRunner.this.runMethod();
+ stopToStopThread();
+ runCheckMethod(testInstance, params);
} finally {
- if (doNormalSetupAndTeardown) {
- tearDown();
- }
+ try{
+ tearDownBeforeWatchers(params);
+ } finally {
+ stopWatchers(testInstance, method, params);
+ tearDownAfterWatchers(params);
+ }
}
} catch (Throwable t) {
_concurrentException.add(t);
}
}
}
-}
+}
\ No newline at end of file
Modified: trunk/punit/src/org/punit/method/runner/SoloMethodRunner.java
===================================================================
--- trunk/punit/src/org/punit/method/runner/SoloMethodRunner.java 2008-06-10 08:22:58 UTC (rev 318)
+++ trunk/punit/src/org/punit/method/runner/SoloMethodRunner.java 2008-06-16 16:17:56 UTC (rev 319)
@@ -2,22 +2,30 @@
package org.punit.method.runner;
+import java.lang.reflect.Method;
+
public class SoloMethodRunner extends AbstractMethodRunner {
private static final long serialVersionUID = 3278612571978181393L;
- protected void runImpl( boolean doNormalSetupAndTeardown ) throws Throwable {
+ protected void runImpl( Object testInstance, Method method, Object[] params ) throws Throwable {
try {
- if (doNormalSetupAndTeardown) {
- setUp();
- }
+ setUpBeforeWatchers(params);
+ startWatchers(testInstance, method, params);
+ setUpAfterWatchers(params);
+ startToStopThread();
runMethod();
+ stopToStopThread();
+ runCheckMethod(testInstance, params);
} finally {
- if (doNormalSetupAndTeardown) {
- tearDown();
- }
+ try{
+ tearDownBeforeWatchers(params);
+ } finally {
+ stopWatchers(testInstance, method, params);
+ tearDownAfterWatchers(params);
+ }
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|