# Runs a Jepsen test - cas-register (no nemesis) by default. # See inputs for various options. # Repo: https://github.com/tendermint/jepsen # # If you want to test a new breaking version of Tendermint, you'll need to # update the Merkleeyes ABCI app and 'merkleeyesUrl' input accordingly. You can # upload a new tarball to # https://github.com/tendermint/jepsen/releases/tag/0.2.1. # # Manually triggered. name: jepsen on: workflow_dispatch: inputs: workload: description: 'Test workload to run: (cas-register | set)' required: true default: 'cas-register' nemesis: description: 'Nemesis to use: (none | clocks | single-partitions | half-partitions | ring-partitions | split-dup-validators | peekaboo-dup-validators | changing-validators | crash | truncate-tendermint | truncate-merkleeyes)' required: true default: 'none' dupOrSuperByzValidators: description: '"--dup-validators" (multiple validators share the same key) and(or) "--super-byzantine-validators" (byzantine validators have just shy of 2/3 the voting weight)' required: false default: '' concurrency: description: 'How many workers should we run? Must be an integer and >= 10, optionally followed by n (e.g. 3n) to multiply by the number of nodes.' required: true default: 10 timeLimit: description: 'Excluding setup and teardown, how long should a test run for, in seconds?' required: true default: 60 tendermintUrl: description: 'Where to grab the Tendermint tarball (w/ linux/amd64 binary)' required: true default: 'https://github.com/melekes/katas/releases/download/0.2.0/tendermint.tar.gz' merkleeyesUrl: description: 'Where to grab the Merkleeyes tarball (w/ linux/amd64 binary)' required: true default: 'https://github.com/tendermint/jepsen/releases/download/0.2.1/merkleeyes_0.1.7.tar.gz' jobs: jepsen-test: runs-on: ubuntu-latest steps: - name: Checkout the Jepsen repository uses: actions/checkout@v3 with: repository: 'tendermint/jepsen' - name: Start a Jepsen cluster in background working-directory: docker run: ./bin/up --daemon - name: Run the test run: docker exec -i jepsen-control bash -c 'source /root/.bashrc; cd /jepsen/tendermint; lein run test --nemesis ${{ github.event.inputs.nemesis }} --workload ${{ github.event.inputs.workload }} --concurrency ${{ github.event.inputs.concurrency }} --tendermint-url ${{ github.event.inputs.tendermintUrl }} --merkleeyes-url ${{ github.event.inputs.merkleeyesUrl }} --time-limit ${{ github.event.inputs.timeLimit }} ${{ github.event.inputs.dupOrSuperByzValidators }}' - name: Archive results uses: actions/upload-artifact@v2 with: name: results path: tendermint/store/latest retention-days: 3