e2e.yml 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. name: "End to End"
  2. on:
  3. push:
  4. branches: [ master ]
  5. pull_request:
  6. branches: [ master ]
  7. concurrency:
  8. group: ${{ github.head_ref }}/e2e
  9. cancel-in-progress: true
  10. permissions:
  11. contents: read
  12. defaults:
  13. run:
  14. working-directory: docker
  15. jobs:
  16. e2e:
  17. name: FUSE Mount
  18. runs-on: ubuntu-22.04
  19. timeout-minutes: 15
  20. steps:
  21. - name: Set up Go 1.x
  22. uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f # v2
  23. with:
  24. go-version: ^1.13
  25. id: go
  26. - name: Check out code into the Go module directory
  27. uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v2
  28. - name: Install dependencies
  29. run: |
  30. sudo apt-get update
  31. sudo apt-get install -y fuse
  32. - name: Start SeaweedFS
  33. timeout-minutes: 5
  34. run: make build_e2e && docker compose -f ./compose/e2e-mount.yml up --wait
  35. - name: Run FIO
  36. timeout-minutes: 5
  37. run: |
  38. echo "Starting FIO at: $(date)"
  39. # Concurrent r/w
  40. echo 'Run randrw with size=16M bs=4k'
  41. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 40 fio --name=fiotest --filename=/mnt/seaweedfs/fiotest --size=16M --rw=randrw --bs=4k --direct=1 --numjobs=8 --ioengine=libaio --iodepth=32 --group_reporting --runtime=30 --time_based=1
  42. echo 'Run randrw with size=16M bs=128k'
  43. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 40 fio --name=fiotest --filename=/mnt/seaweedfs/fiotest --size=16M --rw=randrw --bs=128k --direct=1 --numjobs=8 --ioengine=libaio --iodepth=32 --group_reporting --runtime=30 --time_based=1
  44. echo 'Run randrw with size=16M bs=1m'
  45. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 40 fio --name=fiotest --filename=/mnt/seaweedfs/fiotest --size=16M --rw=randrw --bs=1m --direct=1 --numjobs=8 --ioengine=libaio --iodepth=32 --group_reporting --runtime=30 --time_based=1
  46. # Verified write
  47. echo 'Run randwrite with size=16M bs=4k'
  48. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 40 fio --name=fiotest --filename=/mnt/seaweedfs/fiotest --size=16M --rw=randwrite --bs=4k --direct=1 --numjobs=8 --ioengine=libaio --iodepth=32 --group_reporting --runtime=30 --time_based=1 --do_verify=0 --verify=crc32c --verify_backlog=1
  49. echo 'Run randwrite with size=16M bs=128k'
  50. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 40 fio --name=fiotest --filename=/mnt/seaweedfs/fiotest --size=16M --rw=randwrite --bs=128k --direct=1 --numjobs=8 --ioengine=libaio --iodepth=32 --group_reporting --runtime=30 --time_based=1 --do_verify=0 --verify=crc32c --verify_backlog=1
  51. echo 'Run randwrite with size=16M bs=1m'
  52. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 40 fio --name=fiotest --filename=/mnt/seaweedfs/fiotest --size=16M --rw=randwrite --bs=1m --direct=1 --numjobs=8 --ioengine=libaio --iodepth=32 --group_reporting --runtime=30 --time_based=1 --do_verify=0 --verify=crc32c --verify_backlog=1
  53. - name: Save logs
  54. if: always()
  55. run: |
  56. docker compose -f ./compose/e2e-mount.yml logs > output.log
  57. echo 'Showing last 500 log lines of mount service:'
  58. docker compose -f ./compose/e2e-mount.yml logs --tail 500 mount
  59. - name: Check for data races
  60. if: always()
  61. continue-on-error: true # TODO: remove this comment to enable build failure on data races (after all are fixed)
  62. run: grep -A50 'DATA RACE' output.log && exit 1 || exit 0
  63. - name: Archive logs
  64. if: always()
  65. uses: actions/upload-artifact@v3
  66. with:
  67. name: output-logs
  68. path: docker/output.log
  69. - name: Cleanup
  70. if: always()
  71. run: docker compose -f ./compose/e2e-mount.yml down --volumes --remove-orphans --rmi all