Skip to content

Commit

Permalink
Parallel test run (opensearch-project#966)
Browse files Browse the repository at this point in the history
* Update test workflows to increase readability

Signed-off-by: bowenlan-amzn <[email protected]>

* Reduce test running time

Signed-off-by: bowenlan-amzn <[email protected]>

* Test if docker logs upload right

Signed-off-by: bowenlan-amzn <[email protected]>

* Dig into several long running test

Signed-off-by: bowenlan-amzn <[email protected]>

* Add back if failure

Signed-off-by: bowenlan-amzn <[email protected]>

* cleanup

Signed-off-by: bowenlan-amzn <[email protected]>

* split by feature

Signed-off-by: bowenlan-amzn <[email protected]>

* debug bwc

Signed-off-by: bowenlan-amzn <[email protected]>

* debug bwc

Signed-off-by: bowenlan-amzn <[email protected]>

* Introduce exclude tests property

Signed-off-by: bowenlan-amzn <[email protected]>

* Setup include exclude test filtering

Signed-off-by: bowenlan-amzn <[email protected]>

* ktlint

Signed-off-by: bowenlan-amzn <[email protected]>

---------

Signed-off-by: bowenlan-amzn <[email protected]>
  • Loading branch information
bowenlan-amzn authored Oct 3, 2023
1 parent 3e80cff commit 8b0cd6d
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 2 deletions.
13 changes: 12 additions & 1 deletion .github/workflows/multi-node-test-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,17 @@ on:

jobs:
multi-node-test:
env:
TEST_FILTER: ${{ matrix.test_filter }}
strategy:
fail-fast: false
matrix:
feature: [ism, non-ism]
include:
- feature: ism
test_filter: -PincludeTests="org.opensearch.indexmanagement.indexstatemanagement*"
- feature: non-ism
test_filter: -PexcludeTests="org.opensearch.indexmanagement.indexstatemanagement*"
# This job runs on Linux
runs-on: ubuntu-latest
steps:
Expand All @@ -23,7 +34,7 @@ jobs:
- name: Checkout Branch
uses: actions/checkout@v2
- name: Run integration tests with multi node config
run: ./gradlew integTest -PnumNodes=3
run: ./gradlew integTest -PnumNodes=3 ${{ env.TEST_FILTER }}
- name: Upload failed logs
uses: actions/upload-artifact@v2
if: failure()
Expand Down
8 changes: 7 additions & 1 deletion .github/workflows/test-and-build-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,26 @@ jobs:
env:
BUILD_ARGS: ${{ matrix.os_build_args }}
WORKING_DIR: ${{ matrix.working_directory }}.
TEST_FILTER: ${{ matrix.test_filter }}
strategy:
# This setting says that all jobs should finish, even if one fails
fail-fast: false
# This starts three jobs, setting these environment variables uniquely for the different jobs
matrix:
java: [11, 17]
os: [ubuntu-latest, windows-latest, macos-latest]
feature: [ism, non-ism]
include:
- os: windows-latest
os_build_args: -x integTest -x jacocoTestReport
working_directory: X:\
os_java_options: -Xmx4096M
- os: macos-latest
os_build_args: -x integTest -x jacocoTestReport
- feature: ism
test_filter: -PincludeTests="org.opensearch.indexmanagement.indexstatemanagement*"
- feature: non-ism
test_filter: -PexcludeTests="org.opensearch.indexmanagement.indexstatemanagement*"
runs-on: ${{ matrix.os }}
steps:
# This step uses the setup-java Github action: https://github.com/actions/setup-java
Expand All @@ -44,7 +50,7 @@ jobs:
run: subst 'X:' .
- name: Build with Gradle
working-directory: ${{ env.WORKING_DIR }}
run: ./gradlew build ${{ env.BUILD_ARGS }}
run: ./gradlew build ${{ env.BUILD_ARGS }} ${{ env.TEST_FILTER }}
env:
_JAVA_OPTIONS: ${{ matrix.os_java_options }}
- name: Upload failed logs
Expand Down
15 changes: 15 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,21 @@ integTest {
if (usingRemoteCluster) {
exclude 'org/opensearch/indexmanagement/controlcenter/notification/filter/NotificationActionListenerIT.class'
}

if (project.hasProperty('includeTests')) {
String includeTests = project.property('includeTests')
println("Include tests ${includeTests}")
filter {
includeTestsMatching includeTests
}
}
if (project.hasProperty('excludeTests')) {
String excludeTests = project.property('excludeTests')
println("Exclude tests ${excludeTests}")
filter {
excludeTestsMatching excludeTests
}
}
}

task integTestRemote(type: RestIntegTestTask) {
Expand Down

0 comments on commit 8b0cd6d

Please sign in to comment.