Emond Papegaaij created SUREFIRE-1387:
-----------------------------------------
Summary: runTime always 0 in statistics, breaking runOrder=balanced
Key: SUREFIRE-1387
URL: https://issues.apache.org/jira/browse/SUREFIRE-1387
Project: Maven Surefire
Issue Type: Bug
Components: Junit 4.7+ (parallel) support
Affects Versions: 2.20
Reporter: Emond Papegaaij
We are using parallized tests to speed up the builds, however tests are
executed in less than optimal order. `<runOrder>balanced</runOrder>` is
supposed to improve the ordering, but it requires statistics in a
`.surefire-XXXXX` file. A maven build does write this file, but runTime is
reported as 0 for all tests. Every line in the file looks like (where n is the
number of executions):
{code}
n,0,method(class)
{code}
I've traced the source of these '0's to nulls in the `ForkedBooter` protocol.
These are written by `ForkingRunListener.testSucceeded` on this stack:
{code}
Thread [main] (Suspended (breakpoint at line 151 in ForkingRunListener))
owns: Notifier (id=14012)
ForkingRunListener.testSucceeded(ReportEntry) line: 151
JUnit4RunListener.testFinished(Description) line: 140
SynchronizedRunListener.testFinished(Description) line: 56
RunNotifier$7.notifyListener(RunListener) line: 190
RunNotifier$7(RunNotifier$SafeNotifier).run() line: 72
Notifier(RunNotifier).fireTestFinished(Description) line: 187
JUnitSupervisor.afterFeature(FeatureInfo) line: 193
ParameterizedSpecRunner(BaseSpecRunner).runFeature() line: 239
ParameterizedSpecRunner(BaseSpecRunner).runFeatures() line: 188
ParameterizedSpecRunner(BaseSpecRunner).doRunSpec() line: 98
BaseSpecRunner$1.invoke(Object, Object...) line: 84
ParameterizedSpecRunner(BaseSpecRunner).invokeRaw(Object, MethodInfo,
Object...) line: 481
ParameterizedSpecRunner(BaseSpecRunner).invoke(Object, MethodInfo,
Object...) line: 464
ParameterizedSpecRunner(BaseSpecRunner).runSpec() line: 76
ParameterizedSpecRunner(BaseSpecRunner).run() line: 67
ArquillianSputnik.run(RunNotifier) line: 135
JUnit4Provider.execute(Class<?>, Notifier, Filter) line: 365
JUnit4Provider.executeWithRerun(Class<?>, Notifier) line: 272
JUnit4Provider.executeTestSet(Class<?>, RunListener, Notifier) line:
236
JUnit4Provider.invoke(Object) line: 159
ForkedBooter.invokeProviderInSameClassLoader(Object, Object,
ProviderConfiguration, boolean, StartupConfiguration, boolean) line: 386
ForkedBooter.runSuitesInProcess(Object, StartupConfiguration,
ProviderConfiguration, PrintStream) line: 323
ForkedBooter.main(String...) line: 143
{code}
`JUnit4RunListener.testFinished(Description)` always creates TestReports with
'elapsed == null'.
We are using the following configuration:
{code}
<configuration>
<forkCount>3</forkCount>
<reuseForks>true</reuseForks>
<runOrder>balanced</runOrder>
<useManifestOnlyJar>false</useManifestOnlyJar>
</configuration>
{code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)