Skip to content

Nightly pipeline normal session e2e tests #71

Nightly pipeline normal session e2e tests

Nightly pipeline normal session e2e tests #71

---
name: Nightly pipeline normal session e2e tests
on:
workflow_dispatch:
schedule:
- cron: '00 22 * * *'
concurrency:
group: "${{ github.ref }}-${{ github.workflow }}"
cancel-in-progress: true
jobs:
check-vars-and-secrets:
name: Check vars and secrets
uses: ./.github/workflows/_check-vars-and-secrets.yml
secrets: inherit
build-production-node-and-runtime:
needs: [check-vars-and-secrets]
name: Build production node and runtime artifacts (PR version)
uses: ./.github/workflows/_build-production-node-and-runtime.yml
build-production-node-and-e2e-client-image:
needs: [build-production-node-and-runtime]
name: Build production node and e2e client docker image
uses: ./.github/workflows/_build-production-node-and-e2e-client-image.yml
secrets: inherit
with:
build-production-node: true
build-synthetic-network-docker: true
build-e2e-client: true
run-e2e-high-out-latency:
needs: [build-production-node-and-e2e-client-image]
name: Run high out-latency test
runs-on: ubuntu-20.04
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Run e2e test
uses: ./.github/actions/run-e2e-test
with:
test-case: high_out_latency_for_all
image-path: aleph-release-synthetic-docker
node-image: aleph-node:syntheticnet
compose-file: docker/docker-compose.synthetic-network.yml
timeout-minutes: 40
run-e2e-sync-test-one_node_catching_up_and_then_becoming_necessary_for_consensus:
needs: [build-production-node-and-e2e-client-image]
name: Sync test using synthetic-network - one node catching up and then
becoming necessary for consensus
runs-on: ubuntu-20.04
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Run e2e test
uses: ./.github/actions/run-e2e-test
env:
NETWORK: "synthetic-network"
NODE_URL: "ws://Node0:9943"
VALIDATOR_COUNT: 7
with:
test-case: test::sync::one_node_catching_up_and_then_becoming_necessary_for_consensus
image-path: aleph-release-synthetic-docker
node-image: aleph-node:syntheticnet
compose-file: docker/docker-compose.synthetic-network_sync-tests.yml
node-count: 7
min-validator-count: 7
timeout-minutes: 35
run-e2e-sync-test-one_node_catching_up:
needs: [build-production-node-and-e2e-client-image]
name: Sync test using synthetic-network - one node catching up
runs-on: ubuntu-20.04
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Run e2e test
uses: ./.github/actions/run-e2e-test
env:
NETWORK: "synthetic-network"
NODE_URL: "ws://Node0:9943"
VALIDATOR_COUNT: 7
with:
test-case: test::sync::one_node_catching_up
image-path: aleph-release-synthetic-docker
node-image: aleph-node:syntheticnet
compose-file: docker/docker-compose.synthetic-network_sync-tests.yml
node-count: 7
min-validator-count: 7
timeout-minutes: 35
run-e2e-sync-test-into_two_groups_and_one_quorum_and_switch_quorum_between_them:
needs: [build-production-node-and-e2e-client-image]
name: Sync test using synthetic-network - into two groups and one quorum
and switch quorum between them
runs-on: ubuntu-20.04
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Run e2e test
uses: ./.github/actions/run-e2e-test
env:
NETWORK: "synthetic-network"
NODE_URL: "ws://Node0:9943"
VALIDATOR_COUNT: 7
with:
test-case: test::sync::into_two_groups_and_one_quorum_and_switch_quorum_between_them
image-path: aleph-release-synthetic-docker
node-image: aleph-node:syntheticnet
compose-file: docker/docker-compose.synthetic-network_sync-tests.yml
node-count: 7
min-validator-count: 7
timeout-minutes: 35
run-e2e-sync-test-into_multiple_groups_of_two:
needs: [build-production-node-and-e2e-client-image]
name: Sync test using synthetic-network - into multiple groups of two
runs-on: ubuntu-20.04
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Run e2e test
uses: ./.github/actions/run-e2e-test
env:
NETWORK: "synthetic-network"
NODE_URL: "ws://Node0:9943"
VALIDATOR_COUNT: 7
with:
test-case: test::sync::into_multiple_groups_of_two
image-path: aleph-release-synthetic-docker
node-image: aleph-node:syntheticnet
compose-file: docker/docker-compose.synthetic-network_sync-tests.yml
node-count: 7
min-validator-count: 7
timeout-minutes: 35
run-e2e-sync-test-into_two_equal_size_groups_with_no_quorum:
needs: [build-production-node-and-e2e-client-image]
name: Sync test using synthetic-network - into two equal size groups
with no quorum
runs-on: ubuntu-20.04
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Run e2e test
uses: ./.github/actions/run-e2e-test
env:
NETWORK: "synthetic-network"
NODE_URL: "ws://Node0:9943"
VALIDATOR_COUNT: 7
with:
test-case: test::sync::into_two_equal_size_groups_with_no_quorum
image-path: aleph-release-synthetic-docker
node-image: aleph-node:syntheticnet
compose-file: docker/docker-compose.synthetic-network_sync-tests.yml
node-count: 7
min-validator-count: 7
timeout-minutes: 35
run-e2e-sync-test-into_two_groups_one_with_quorum:
needs: [build-production-node-and-e2e-client-image]
name: Sync test using synthetic-network - into two groups one with
quorum
runs-on: ubuntu-20.04
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Run e2e test
uses: ./.github/actions/run-e2e-test
env:
NETWORK: "synthetic-network"
NODE_URL: "ws://Node0:9943"
VALIDATOR_COUNT: 7
with:
test-case: test::sync::into_two_groups_one_with_quorum
image-path: aleph-release-synthetic-docker
node-image: aleph-node:syntheticnet
compose-file: docker/docker-compose.synthetic-network_sync-tests.yml
node-count: 7
min-validator-count: 7
timeout-minutes: 35
run-major-sync-test:
needs: [build-production-node-and-runtime]
name: Run major sync test
runs-on: ubuntu-20.04
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Download release artifact
uses: actions/download-artifact@v3
with:
name: aleph-production-node
path: target/release/
- name: Run test
timeout-minutes: 15
env:
ALEPH_NODE_BINARY: ../target/release/aleph-node
run: ./.github/scripts/test_major_sync.sh
run-e2e-no-quorum-without-high-out-latency:
needs: [build-production-node-and-e2e-client-image]
name: Run high out-latency for every quorum
runs-on: ubuntu-20.04
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Run e2e test
uses: ./.github/actions/run-e2e-test
with:
test-case: high_out_latency_for_each_quorum
image-path: aleph-release-synthetic-docker
node-image: aleph-node:syntheticnet
compose-file: docker/docker-compose.synthetic-network.yml
timeout-minutes: 35
check-nightly-pipeline-completion:
needs: [
run-e2e-high-out-latency,
run-e2e-no-quorum-without-high-out-latency,
run-major-sync-test,
]
name: Check nightly test suite completion
if: ${{ !cancelled() }}
runs-on: ubuntu-20.04
steps:
- name: All nightly tests completed
run: |
# due to the fact GitHub treats skipped jobs as success, and when any of dependant
# jobs fail, this check will be skipped, we need to check status manually
jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'
slack:
name: Slack notification
runs-on: ubuntu-20.04
needs: [check-nightly-pipeline-completion]
if: ${{ !cancelled() }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Send Slack message
uses: ./.github/actions/slack-notification
with:
notify-on: "always"
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_NIGHTLY_PIPELINE }}