e2e.yml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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: 30
  20. steps:
  21. - name: Set up Go 1.x
  22. uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # 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@9bb56186c3b09b4f86b1c65136769dd318469633 # 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 4k
  36. timeout-minutes: 15
  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 60 fio --name=fiotest --filename=/mnt/seaweedfs/fiotest --size=16M --rw=randrw --bs=4k --direct=1 --numjobs=8 --ioengine=libaio --group_reporting --runtime=30 --time_based=1
  42. echo "Verify FIO at: $(date)"
  43. # Verified write
  44. echo 'Run randwrite with size=16M bs=4k'
  45. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 60 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
  46. - name: Run FIO 128k
  47. timeout-minutes: 15
  48. run: |
  49. echo "Starting FIO at: $(date)"
  50. # Concurrent r/w
  51. echo 'Run randrw with size=16M bs=128k'
  52. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 60 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
  53. echo "Verify FIO at: $(date)"
  54. # Verified write
  55. echo 'Run randwrite with size=16M bs=128k'
  56. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 60 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
  57. - name: Run FIO 1MB
  58. timeout-minutes: 15
  59. run: |
  60. echo "Starting FIO at: $(date)"
  61. # Concurrent r/w
  62. echo 'Run randrw with size=16M bs=1m'
  63. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 60 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
  64. echo "Verify FIO at: $(date)"
  65. # Verified write
  66. echo 'Run randwrite with size=16M bs=1m'
  67. docker compose -f ./compose/e2e-mount.yml exec mount timeout -k5 60 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
  68. - name: Save logs
  69. if: always()
  70. run: |
  71. docker compose -f ./compose/e2e-mount.yml logs > output.log
  72. echo 'Showing last 500 log lines of mount service:'
  73. docker compose -f ./compose/e2e-mount.yml logs --tail 500 mount
  74. - name: Check for data races
  75. if: always()
  76. continue-on-error: true # TODO: remove this comment to enable build failure on data races (after all are fixed)
  77. run: grep -A50 'DATA RACE' output.log && exit 1 || exit 0
  78. - name: Archive logs
  79. if: always()
  80. uses: actions/upload-artifact@v4
  81. with:
  82. name: output-logs
  83. path: docker/output.log
  84. - name: Cleanup
  85. if: always()
  86. run: docker compose -f ./compose/e2e-mount.yml down --volumes --remove-orphans --rmi all