diff --git a/.github/workflows/bft-soak-test.yml b/.github/workflows/bft-soak-test.yml index 5a05df5753f..bb401892f82 100644 --- a/.github/workflows/bft-soak-test.yml +++ b/.github/workflows/bft-soak-test.yml @@ -2,6 +2,15 @@ name: bft-soak-test on: workflow_dispatch: inputs: + consensus-type: + description: 'Consensus type to test' + required: false + default: 'qbft' + type: choice + options: + - all + - qbft + - ibft2 soak-time-mins: description: 'Duration of soak test in minutes (minimum 60)' required: false @@ -13,7 +22,7 @@ env: jobs: bft-soak-test: - name: "BFT Soak Test" + name: "BFT Soak Test (${{ inputs.consensus-type }})" runs-on: ubuntu-22.04 timeout-minutes: 180 permissions: @@ -34,16 +43,16 @@ jobs: with: cache-disabled: true - name: run BFT soak test - run: ./gradlew :acceptance-tests:tests:acceptanceTestBftSoak -Dacctests.soakTimeMins=${{ inputs['soak-time-mins'] }} + run: ./gradlew :acceptance-tests:tests:acceptanceTestBftSoak -Dacctests.soakTimeMins=${{ inputs['soak-time-mins'] }} -Dacctests.consensusType=${{ inputs.consensus-type }} - name: Upload BFT Soak Test HTML Reports uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 if: always() with: - name: bft-soak-test-html-reports + name: bft-soak-test-html-reports-${{ inputs.consensus-type }} path: 'acceptance-tests/tests/build/reports/tests/**' - name: Upload BFT Soak Test Results uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 if: always() with: - name: bft-soak-test-results + name: bft-soak-test-results-${{ inputs.consensus-type }} path: 'acceptance-tests/tests/build/test-results/**/TEST-*.xml' diff --git a/acceptance-tests/tests/build.gradle b/acceptance-tests/tests/build.gradle index e3c7d2e20eb..eb354856576 100644 --- a/acceptance-tests/tests/build.gradle +++ b/acceptance-tests/tests/build.gradle @@ -91,6 +91,9 @@ testing { setSystemProperties(getSystemProperties()) systemProperty 'acctests.runBesuAsProcess', 'true' systemProperty 'java.security.properties', "${buildDir}/resources/acceptanceTest/acceptanceTesting.security" + if (System.getProperty('acctests.consensusType')) { + systemProperty 'acctests.consensusType', System.getProperty('acctests.consensusType') + } def javaProjects = rootProject.subprojects - project(':platform') mustRunAfter javaProjects.test description = 'Runs ALL Besu acceptance tests (excluding bftsoak).' @@ -120,8 +123,9 @@ testing { setSystemProperties(getSystemProperties()) systemProperty 'acctests.runBesuAsProcess', 'true' systemProperty 'java.security.properties', "${buildDir}/resources/acceptanceTest/acceptanceTesting.security" - // Set to any time > 60 minutes to run the soak test for longer - // systemProperty 'acctests.soakTimeMins', '120' + if (System.getProperty('acctests.consensusType')) { + systemProperty 'acctests.consensusType', System.getProperty('acctests.consensusType') + } description = 'Runs BFT soak test.' group = 'verification' diff --git a/acceptance-tests/tests/src/acceptanceTest/java/org/hyperledger/besu/tests/acceptance/bft/ParameterizedBftTestBase.java b/acceptance-tests/tests/src/acceptanceTest/java/org/hyperledger/besu/tests/acceptance/bft/ParameterizedBftTestBase.java index 29e06c28c6e..235fec0eb7e 100644 --- a/acceptance-tests/tests/src/acceptanceTest/java/org/hyperledger/besu/tests/acceptance/bft/ParameterizedBftTestBase.java +++ b/acceptance-tests/tests/src/acceptanceTest/java/org/hyperledger/besu/tests/acceptance/bft/ParameterizedBftTestBase.java @@ -32,6 +32,11 @@ public abstract class ParameterizedBftTestBase extends AcceptanceTestBase { protected BftAcceptanceTestParameterization nodeFactory; public static Stream factoryFunctions() { + final String consensusType = System.getProperty("acctests.consensusType"); + if (consensusType != null && !consensusType.isEmpty() && !consensusType.equals("all")) { + return BftAcceptanceTestParameterization.getFactories() + .filter(args -> consensusType.equals(args.get()[0])); + } return BftAcceptanceTestParameterization.getFactories(); }