Author: krosenvold
Date: Tue May 10 17:56:02 2011
New Revision: 1101566
URL: http://svn.apache.org/viewvc?rev=1101566&view=rev
Log:
o Simplified forkstarter further
Groundwork for even thinking about solving SUREFIRE-468
Modified:
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
Modified:
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
URL:
http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java?rev=1101566&r1=1101565&r2=1101566&view=diff
==============================================================================
---
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
(original)
+++
maven/surefire/trunk/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
Tue May 10 17:56:02 2011
@@ -27,6 +27,7 @@ import org.apache.maven.plugin.surefire.
import
org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer;
import org.apache.maven.plugin.surefire.report.FileReporterFactory;
import org.apache.maven.surefire.booter.Classpath;
+import org.apache.maven.surefire.booter.ClasspathConfiguration;
import org.apache.maven.surefire.booter.ProviderConfiguration;
import org.apache.maven.surefire.booter.ProviderFactory;
import org.apache.maven.surefire.booter.StartupConfiguration;
@@ -89,93 +90,48 @@ public class ForkStarter
final RunResult result;
final String requestedForkMode = forkConfiguration.getForkMode();
- if ( ForkConfiguration.FORK_ONCE.equals( requestedForkMode ) )
- {
- result = runSuitesForkOnce();
- }
- else if ( ForkConfiguration.FORK_ALWAYS.equals( requestedForkMode ) )
- {
- result = runSuitesForkPerTestSet();
- }
- else
- {
- throw new SurefireExecutionException( "Unknown forkmode: " +
requestedForkMode, null );
- }
- return result;
- }
-
- private RunResult runSuitesForkOnce()
- throws SurefireBooterForkException
- {
- final FileReporterFactory testSetReporterFactory =
- new FileReporterFactory( startupReportConfiguration );
+ final FileReporterFactory fileReporterFactory = new
FileReporterFactory( startupReportConfiguration );
try
{
- return fork( null, providerConfiguration.getProviderProperties(),
testSetReporterFactory );
+ if ( ForkConfiguration.FORK_ONCE.equals( requestedForkMode ) )
+ {
+ result = fork( null,
providerConfiguration.getProviderProperties(), fileReporterFactory );
+ }
+ else if ( ForkConfiguration.FORK_ALWAYS.equals( requestedForkMode
) )
+ {
+ result = runSuitesForkPerTestSet( fileReporterFactory );
+ }
+ else
+ {
+ throw new SurefireExecutionException( "Unknown forkmode: " +
requestedForkMode, null );
+ }
}
finally
{
- testSetReporterFactory.close();
+ fileReporterFactory.close();
}
+ return result;
}
- private RunResult runSuitesForkPerTestSet()
+ private RunResult runSuitesForkPerTestSet( FileReporterFactory
fileReporterFactory )
throws SurefireBooterForkException
{
RunResult globalResult = new RunResult( 0, 0, 0, 0 );
- ClassLoader testsClassLoader;
- ClassLoader surefireClassLoader;
- try
- {
- testsClassLoader =
startupConfiguration.getClasspathConfiguration().createTestClassLoader( false );
- // TODO: assertions = true shouldn't be required if we had proper
separation (see TestNG)
- surefireClassLoader =
-
startupConfiguration.getClasspathConfiguration().createSurefireClassLoader(
testsClassLoader );
- }
- catch ( SurefireExecutionException e )
- {
- throw new SurefireBooterForkException( "Unable to create
classloader to find test suites", e );
- }
-
- final Iterator suites = getSuitesIterator( testsClassLoader,
surefireClassLoader );
+ final Iterator suites = getSuitesIterator();
Properties properties = new Properties();
- final FileReporterFactory testSetReporterFactory =
- new FileReporterFactory( startupReportConfiguration );
- try
- {
- while ( suites.hasNext() )
- {
- Object testSet = suites.next();
- RunResult runResult = fork( testSet, properties,
testSetReporterFactory );
-
- globalResult = globalResult.aggregate( runResult );
- }
- // At this place, show aggregated results ?
- return globalResult;
- }
- finally
+ while ( suites.hasNext() )
{
- testSetReporterFactory.close();
+ Object testSet = suites.next();
+ RunResult runResult = fork( testSet, properties,
fileReporterFactory );
+ globalResult = globalResult.aggregate( runResult );
}
- }
- private Iterator getSuitesIterator( ClassLoader testsClassLoader,
ClassLoader surefireClassLoader )
- {
- SurefireReflector surefireReflector = new SurefireReflector(
surefireClassLoader );
- Object reporterFactory =
- surefireReflector.createReportingReporterFactory(
startupReportConfiguration );
-
- final ProviderFactory providerFactory =
- new ProviderFactory( startupConfiguration, providerConfiguration,
surefireClassLoader, testsClassLoader,
- reporterFactory );
- SurefireProvider surefireProvider = providerFactory.createProvider();
- return surefireProvider.getSuites();
+ return globalResult;
}
-
private RunResult fork( Object testSet, Properties properties,
ReporterFactory testSetReporterFactory )
throws SurefireBooterForkException
{
@@ -218,8 +174,8 @@ public class ForkStarter
cli.createArg().setFile( systemProperties );
}
- ForkClient out = new ForkClient( testSetReporterFactory,
-
startupReportConfiguration.getTestVmSystemProperties() );
+ ForkClient out =
+ new ForkClient( testSetReporterFactory,
startupReportConfiguration.getTestVmSystemProperties() );
ThreadedStreamConsumer threadedStreamConsumer2 = new
ThreadedStreamConsumer( out );
if ( forkConfiguration.isDebug() )
@@ -252,4 +208,29 @@ public class ForkStarter
return runResult;
}
+
+ private Iterator getSuitesIterator()
+ throws SurefireBooterForkException
+ {
+ try
+ {
+ final ClasspathConfiguration classpathConfiguration =
startupConfiguration.getClasspathConfiguration();
+ ClassLoader testsClassLoader =
classpathConfiguration.createTestClassLoader( false );
+ ClassLoader surefireClassLoader =
classpathConfiguration.createSurefireClassLoader( testsClassLoader );
+
+ SurefireReflector surefireReflector = new SurefireReflector(
surefireClassLoader );
+ Object reporterFactory =
surefireReflector.createReportingReporterFactory( startupReportConfiguration );
+
+ final ProviderFactory providerFactory =
+ new ProviderFactory( startupConfiguration,
providerConfiguration, surefireClassLoader, testsClassLoader,
+ reporterFactory );
+ SurefireProvider surefireProvider =
providerFactory.createProvider();
+ return surefireProvider.getSuites();
+ }
+ catch ( SurefireExecutionException e )
+ {
+ throw new SurefireBooterForkException( "Unable to create
classloader to find test suites", e );
+ }
+ }
+
}