You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@falcon.apache.org by "Venkatesan Ramachandran (JIRA)" <ji...@apache.org> on 2016/06/13 22:07:03 UTC

[jira] [Updated] (FALCON-2024) Explore to make unit tests to run in parallel

     [ https://issues.apache.org/jira/browse/FALCON-2024?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Venkatesan Ramachandran updated FALCON-2024:
--------------------------------------------
    Description: 
Currently the Falcon unit tests are run in highest level of separation in JUnit using the following definition where each test class is run in separate JVM and each test case one after another causing the test phase to take a lot of time.

     <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.16</version>
            <configuration>
                <redirectTestOutputToFile>true</redirectTestOutputToFile>
                <forkCount>1</forkCount>
                <reuseForks>false</reuseForks>
                <forkMode>always</forkMode>
                <argLine>-Djava.awt.headless=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc=</argLine>
                <excludedGroups>${excluded.test.groups}</excludedGroups>
            </configuration>
        </plugin>

Explore the possibility of setting forkCount/parallel to higher level to achieve parallelism.

{quote}
The modes forkCount=0 and forkCount=1/reuseForks=true can be combined freely with the available settings for parallel.

As reuseForks=false creates a new JVM process for each test class, using parallel=classes would have no effect. You can still use parallel=methods, though.

When using reuseForks=true and a forkCount value larger than one, test classes are handed over to the forked process one-by-one. Thus, parallel=classes would not change anything. However, you can use parallel=methods: classes are executed in forkCount concurrent processes, each of the processes can then use threadCount threads to execute the methods of one class in parallel.

Regarding the compatibility with multi-module parallel maven builds via -T, the only limitation is that you can not use it together with forkCount=0.
{quote}

  was:
Currently the Falcon unit tests are run in highest level of separation in JUnit using the following definition where each test class is run in separate JVM and each test case one after another causing the test phase to take a lot of time.

     <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.16</version>
            <configuration>
                <redirectTestOutputToFile>true</redirectTestOutputToFile>
                <forkCount>1</forkCount>
                <reuseForks>false</reuseForks>
                <forkMode>always</forkMode>
                <argLine>-Djava.awt.headless=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc=</argLine>
                <excludedGroups>${excluded.test.groups}</excludedGroups>
            </configuration>
        </plugin>

Explore the possibility of setting forkCount/parallel to higher level to achieve parallelism.


> Explore to make unit tests to run in parallel
> ---------------------------------------------
>
>                 Key: FALCON-2024
>                 URL: https://issues.apache.org/jira/browse/FALCON-2024
>             Project: Falcon
>          Issue Type: Improvement
>          Components: tests
>            Reporter: Venkatesan Ramachandran
>            Assignee: Venkatesan Ramachandran
>
> Currently the Falcon unit tests are run in highest level of separation in JUnit using the following definition where each test class is run in separate JVM and each test case one after another causing the test phase to take a lot of time.
>      <plugin>
>             <groupId>org.apache.maven.plugins</groupId>
>             <artifactId>maven-surefire-plugin</artifactId>
>             <version>2.16</version>
>             <configuration>
>                 <redirectTestOutputToFile>true</redirectTestOutputToFile>
>                 <forkCount>1</forkCount>
>                 <reuseForks>false</reuseForks>
>                 <forkMode>always</forkMode>
>                 <argLine>-Djava.awt.headless=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc=</argLine>
>                 <excludedGroups>${excluded.test.groups}</excludedGroups>
>             </configuration>
>         </plugin>
> Explore the possibility of setting forkCount/parallel to higher level to achieve parallelism.
> {quote}
> The modes forkCount=0 and forkCount=1/reuseForks=true can be combined freely with the available settings for parallel.
> As reuseForks=false creates a new JVM process for each test class, using parallel=classes would have no effect. You can still use parallel=methods, though.
> When using reuseForks=true and a forkCount value larger than one, test classes are handed over to the forked process one-by-one. Thus, parallel=classes would not change anything. However, you can use parallel=methods: classes are executed in forkCount concurrent processes, each of the processes can then use threadCount threads to execute the methods of one class in parallel.
> Regarding the compatibility with multi-module parallel maven builds via -T, the only limitation is that you can not use it together with forkCount=0.
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)