How to properly configure integration tests to run in parallel on jenkins

38 views Asked by At

I have an integration test module that I want to run on jenkins. Below is my configuration. I'm curious if my pom is executing this in parallel by suite, can I execute my suites in parallel by method? Curious what the most optimal way to execute this, if I'm running thousands of tests. My suites are not divided evenly, so some suites have several hundred, while others have 50 or less.

My failsafe config:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${surefire.plugin.version}</version>
<executions>
    <execution>
        <phase>integration-test</phase>
        <goals>
            <goal>verify</goal>
        </goals>
    </execution>
</executions>
<configuration>
    <suiteXmlFiles>
        <suiteXmlFile>${project.basedir}/src/test/resources/int-test0.xml</suiteXmlFile>
        <suiteXmlFile>${project.basedir}/src/test/resources/int-test1.xml</suiteXmlFile>
        <suiteXmlFile>${project.basedir}/src/test/resources/int-test2.xml</suiteXmlFile>
        <suiteXmlFile>${project.basedir}/src/test/resources/int-test3.xml</suiteXmlFile>
        <suiteXmlFile>${project.basedir}/src/test/resources/int-test4.xml</suiteXmlFile>
        <suiteXmlFile>${project.basedir}/src/test/resources/int-test5.xml</suiteXmlFile>
        <suiteXmlFile>${project.basedir}/src/test/resources/int-test6.xml</suiteXmlFile>
        <suiteXmlFile>${project.basedir}/src/test/resources/int-test7.xml</suiteXmlFile>
    </suiteXmlFiles>
    <reuseForks>true</reuseForks>
    <parallel>suites</parallel>
    <threadCountSuites>8</threadCountSuites>
    <perCoreThreadCount>false</perCoreThreadCount>
    <reportsDirectory>${project.build.directory}/surefire-reports/${testOutputSubfolder}
    </reportsDirectory>
    </configuration>
</plugin>

Sample test suite:

<suite thread-count="3" verbose="1" name="int-test 1"
   parallel="methods" data-provider-thread-count="5"
   annotations="JDK">

<!-- Execution environment configurations -->
<parameter name="browser" value="*firefox"/>
<parameter name="useLocalRC" value="false"/>

<listeners>
    <listener class-name="com.util.RetryListener"/>
</listeners>

<test name="First Test">
    <classes>
        <class name="com.path.sample.TestClass1"/>
    </classes>
</test>
<test name="OneTime Test">
    <classes>
        <class name="com.path.sample.TestClass2">
            <methods>
                <include name="happyPath1"/>
                <include name="happyPath2"/>
            </methods>
        </class>
        <class name="com.path.sample.TestClass3"/>
    </classes>
    </test>
</suite>
0

There are 0 answers