[ 
http://jira.codehaus.org/browse/SUREFIRE-747?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=270747#comment-270747
 ] 

Gili commented on SUREFIRE-747:
-------------------------------

Hi Kristan,

Sorry if I ruffled some features. I've tracked down two bugs so far:

1. slf4j's initialization was not thread-safe: 
http://bugzilla.slf4j.org/show_bug.cgi?id=176
2. guice's servlet module was not thread-safe: 
http://code.google.com/p/google-guice/issues/detail?id=635

There is at least one bug that seems to be Surefire-specific. "Time elapsed" is 
always wrong. Sometimes I get negative values:

"Tests run: 12, Failures: 5, Errors: 0, Skipped: 0, Time elapsed: 
-1,058,443.657 sec <<< FAILURE!"

Sometimes I get positive values that are too large:

"Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 25.522 sec"

I know for a fact the tests only ran for 2.2 seconds because I logged the time 
at the beginning and end of each test.

> Parallel method execution skips Tests
> -------------------------------------
>
>                 Key: SUREFIRE-747
>                 URL: http://jira.codehaus.org/browse/SUREFIRE-747
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: Junit 4.7+ (parallel) support
>    Affects Versions: 2.8, 2.8.1
>            Reporter: Gili
>            Assignee: Kristian Rosenvold
>
> Here is a simple testcase.
> POM file:
> {code}
>                       <plugin>
>                               <artifactId>maven-surefire-plugin</artifactId>
>                               <version>2.8.2-SNAPSHOT</version>
>                               <configuration>
>                                       <includes>
>                                               
> <include>**/TestSuite.java</include>
>                                       </includes>
>                                       <parallel>methods</parallel>
>                               </configuration>
>                       </plugin>
>               </plugins>
> {code}
> TestSuite.java
> {code}
> import org.junit.runner.RunWith;
> import org.junit.runners.Suite;
> @RunWith(Suite.class)
> @Suite.SuiteClasses(
> {
>       ParallelTest.class,
>       ParallelTest2.class
> })
> public class TestSuite
> {
> }
> {code}
> ParallelTest.java
> {code}
> public class ParallelTest
> {
>       public ParallelTest()
>       {
>               System.out.println("ParallelTest.constructor");
>       }
>       
>       @Before
>       public void setUp()
>       {
>               System.out.println("ParallelTest.setUp");
>       }
>       @After
>       public void tearDown()
>       {
>               System.out.println("ParallelTest.tearDown");
>       }
>       @Test
>       public void first() throws InterruptedException
>       {
>               System.out.println("begin ParallelTest.first");
>               Thread.sleep(1000);
>               System.out.println("end ParallelTest.first");
>       }
>       @Test
>       public void second() throws InterruptedException
>       {
>               System.out.println("begin ParallelTest.second");
>               Thread.sleep(1000);
>               System.out.println("end ParallelTest.second");
>       }
>       @Test
>       public void third() throws InterruptedException
>       {
>               System.out.println("begin ParallelTest.third");
>               Thread.sleep(1000);
>               System.out.println("end ParallelTest.third");
>       }
> }
> {code}
> ParallelTest2.java is identical except that log output contains ParallelTest2 
> instead of ParallelTest.
> Actual Output:
> {quote}
> Concurrency config is parallel='methods', perCoreThreadCount=true, 
> threadCount=2, useUnlimitedThreads=false
> Running com.holdmyspot.health.server.ParallelTest
> ParallelTest.constructor
> ParallelTest.setUp
> begin ParallelTest.first
> end ParallelTest.first
> ParallelTest.tearDown
> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.014 sec
> Running com.holdmyspot.health.server.ParallelTest2
> ParallelTest2.constructor
> ParallelTest2.setUp
> begin ParallelTest2.first
> end ParallelTest2.first
> ParallelTest2.tearDown
> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.014 sec
> Results :
> Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
> {quote}
> Problem: methods second() and third() are never run for either ParallelTest 
> or ParallelTest2.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to