Repository: maven-surefire Updated Branches: refs/heads/master df7e143c2 -> 27fbe2c19
[SUREFIRE-1310] ForkClient should handle only one channel-id Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/27fbe2c1 Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/27fbe2c1 Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/27fbe2c1 Branch: refs/heads/master Commit: 27fbe2c190a204e19dc42c86e9769bf384e7ec91 Parents: df7e143 Author: Tibor17 <tibo...@lycos.com> Authored: Sat Dec 31 06:46:06 2016 +0100 Committer: Tibor17 <tibo...@lycos.com> Committed: Sat Dec 31 06:46:06 2016 +0100 ---------------------------------------------------------------------- .../booterclient/output/ForkClient.java | 37 ++++++++++++-------- 1 file changed, 23 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/27fbe2c1/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java index d0aecf9..68ce40d 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java @@ -79,8 +79,6 @@ public class ForkClient private static final long START_TIME_ZERO = 0L; private static final long START_TIME_NEGATIVE_TIMEOUT = -1L; - private final RunListener testSetReporter; - private final DefaultReporterFactory defaultReporterFactory; private final Properties testVmSystemProperties; @@ -97,6 +95,8 @@ public class ForkClient private final ConsoleLogger log; + private RunListener testSetReporter; + private volatile boolean saidGoodBye; private volatile StackTraceWriter errorInFork; @@ -104,7 +104,6 @@ public class ForkClient public ForkClient( DefaultReporterFactory defaultReporterFactory, Properties testVmSystemProperties, NotifiableTestStream notifiableTestStream, ConsoleLogger log ) { - testSetReporter = defaultReporterFactory.createReporter(); this.defaultReporterFactory = defaultReporterFactory; this.testVmSystemProperties = testVmSystemProperties; this.notifiableTestStream = notifiableTestStream; @@ -168,6 +167,15 @@ public class ForkClient return testSetStartedAt.get() == START_TIME_NEGATIVE_TIMEOUT; } + private RunListener getTestSetReporter() + { + if ( testSetReporter == null ) + { + testSetReporter = defaultReporterFactory.createReporter(); + } + return testSetReporter; + } + private void processLine( String s ) { try @@ -185,49 +193,49 @@ public class ForkClient switch ( operationId ) { case BOOTERCODE_TESTSET_STARTING: - testSetReporter.testSetStarting( createReportEntry( remaining ) ); + getTestSetReporter().testSetStarting( createReportEntry( remaining ) ); setCurrentStartTime(); break; case BOOTERCODE_TESTSET_COMPLETED: testsInProgress.clear(); - testSetReporter.testSetCompleted( createReportEntry( remaining ) ); + getTestSetReporter().testSetCompleted( createReportEntry( remaining ) ); break; case BOOTERCODE_TEST_STARTING: ReportEntry reportEntry = createReportEntry( remaining ); testsInProgress.offer( reportEntry.getSourceName() ); - testSetReporter.testStarting( createReportEntry( remaining ) ); + getTestSetReporter().testStarting( createReportEntry( remaining ) ); break; case BOOTERCODE_TEST_SUCCEEDED: reportEntry = createReportEntry( remaining ); testsInProgress.remove( reportEntry.getSourceName() ); - testSetReporter.testSucceeded( createReportEntry( remaining ) ); + getTestSetReporter().testSucceeded( createReportEntry( remaining ) ); break; case BOOTERCODE_TEST_FAILED: reportEntry = createReportEntry( remaining ); testsInProgress.remove( reportEntry.getSourceName() ); - testSetReporter.testFailed( createReportEntry( remaining ) ); + getTestSetReporter().testFailed( createReportEntry( remaining ) ); break; case BOOTERCODE_TEST_SKIPPED: reportEntry = createReportEntry( remaining ); testsInProgress.remove( reportEntry.getSourceName() ); - testSetReporter.testSkipped( createReportEntry( remaining ) ); + getTestSetReporter().testSkipped( createReportEntry( remaining ) ); break; case BOOTERCODE_TEST_ERROR: reportEntry = createReportEntry( remaining ); testsInProgress.remove( reportEntry.getSourceName() ); - testSetReporter.testError( createReportEntry( remaining ) ); + getTestSetReporter().testError( createReportEntry( remaining ) ); break; case BOOTERCODE_TEST_ASSUMPTIONFAILURE: reportEntry = createReportEntry( remaining ); testsInProgress.remove( reportEntry.getSourceName() ); - testSetReporter.testAssumptionFailure( createReportEntry( remaining ) ); + getTestSetReporter().testAssumptionFailure( createReportEntry( remaining ) ); break; case BOOTERCODE_SYSPROPS: int keyEnd = remaining.indexOf( "," ); @@ -373,22 +381,23 @@ public class ForkClient /** * Used when getting reporters on the plugin side of a fork. + * Used by testing purposes only. May not be volatile variable. * * @return A mock provider reporter */ public final RunListener getReporter() { - return testSetReporter; + return getTestSetReporter(); } private ConsoleOutputReceiver getOrCreateConsoleOutputReceiver() { - return (ConsoleOutputReceiver) testSetReporter; + return (ConsoleOutputReceiver) getTestSetReporter(); } private ConsoleLogger getOrCreateConsoleLogger() { - return (ConsoleLogger) testSetReporter; + return (ConsoleLogger) getTestSetReporter(); } public void close( boolean hadTimeout )