stress-tests.yml 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. name: Run StressTests (for 15 minutes)
  2. on:
  3. schedule:
  4. - cron: '0 0 * * *' # Runs every day at midnight UTC
  5. push:
  6. branches: [ v2_release, v2_develop ]
  7. paths-ignore:
  8. - '**.md'
  9. jobs:
  10. run_stress_tests:
  11. runs-on: ${{ matrix.os }}
  12. strategy:
  13. fail-fast: false
  14. matrix:
  15. os: [ ubuntu-latest ]
  16. timeout-minutes: 70 # Allow some buffer time beyond the 1-hour test duration
  17. steps:
  18. - name: Checkout code
  19. uses: actions/checkout@v4
  20. - name: Setup .NET Core
  21. uses: actions/setup-dotnet@v4
  22. with:
  23. dotnet-version: 8.x
  24. dotnet-quality: 'ga'
  25. - name: Install dependencies
  26. run: dotnet restore
  27. - name: Build StressTests
  28. run: dotnet build Tests/StressTests --configuration Debug --no-restore
  29. - name: Run StressTests for 15 minutes
  30. run: |
  31. end=$((SECONDS+900))
  32. while [ $SECONDS -lt $end ]; do
  33. dotnet test Tests/StressTests --no-build --verbosity normal --diag:logs/${{ runner.os }}/logs.txt --blame --blame-crash --blame-hang --blame-hang-timeout 60s --blame-crash-collect-always -- xunit.stopOnFail=true
  34. done
  35. - name: Upload Test Logs
  36. if: always()
  37. uses: actions/upload-artifact@v4
  38. with:
  39. name: stress-test-logs-${{ runner.os }}
  40. path: |
  41. logs/
  42. TestResults/StressTests