You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
2.9 KiB

  1. # Runs a Jepsen test - cas-register (no nemesis) by default.
  2. # See inputs for various options.
  3. # Repo: https://github.com/tendermint/jepsen
  4. #
  5. # If you want to test a new breaking version of Tendermint, you'll need to
  6. # update the Merkleeyes ABCI app and 'merkleeyesUrl' input accordingly. You can
  7. # upload a new tarball to
  8. # https://github.com/tendermint/jepsen/releases/tag/0.2.1.
  9. #
  10. # Manually triggered.
  11. name: jepsen
  12. on:
  13. workflow_dispatch:
  14. inputs:
  15. workload:
  16. description: 'Test workload to run: (cas-register | set)'
  17. required: true
  18. default: 'cas-register'
  19. nemesis:
  20. 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)'
  21. required: true
  22. default: 'none'
  23. dupOrSuperByzValidators:
  24. 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)'
  25. required: false
  26. default: ''
  27. concurrency:
  28. 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.'
  29. required: true
  30. default: 10
  31. timeLimit:
  32. description: 'Excluding setup and teardown, how long should a test run for, in seconds?'
  33. required: true
  34. default: 60
  35. tendermintUrl:
  36. description: 'Where to grab the Tendermint tarball (w/ linux/amd64 binary)'
  37. required: true
  38. default: 'https://github.com/melekes/katas/releases/download/0.2.0/tendermint.tar.gz'
  39. merkleeyesUrl:
  40. description: 'Where to grab the Merkleeyes tarball (w/ linux/amd64 binary)'
  41. required: true
  42. default: 'https://github.com/tendermint/jepsen/releases/download/0.2.1/merkleeyes_0.1.7.tar.gz'
  43. jobs:
  44. jepsen-test:
  45. runs-on: ubuntu-latest
  46. steps:
  47. - name: Checkout the Jepsen repository
  48. uses: actions/checkout@v2.3.4
  49. with:
  50. repository: 'tendermint/jepsen'
  51. - name: Start a Jepsen cluster in background
  52. working-directory: docker
  53. run: ./bin/up --daemon
  54. - name: Run the test
  55. 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 }}'
  56. - name: Archive results
  57. uses: actions/upload-artifact@v2
  58. with:
  59. name: results
  60. path: tendermint/store/latest
  61. retention-days: 3